Compare commits

...

111 Commits

Author SHA1 Message Date
27f5411404 0.5.26 2016-10-20 08:29:16 -07:00
f53eab0539 Bump pxt-core to 0.4.67 2016-10-20 08:29:11 -07:00
445fe12629 0.5.25 2016-10-19 19:11:13 +02:00
ddd6e90c6d Merge remote-tracking branch 'origin/master' 2016-10-19 19:08:52 +02:00
fd14ba6ff1 fix touch pins, add test for buttons and pins, update dependency 2016-10-19 19:08:41 +02:00
28a8f21d40 merging ble changes 2016-10-18 21:55:02 -07:00
0f7323f2da 0.4.55 2016-10-18 21:52:38 -07:00
23d30484d4 updated docs page 2016-10-18 21:52:10 -07:00
6ad59e04a6 fixed uart issues 2016-10-18 21:47:54 -07:00
ae5d5c74a7 better support for BLE UART and alignment with serial blocks. (#276)
* aligning uart apis with serial

* reorganizing serial/bluetooth blocks

* Autoupdate configuration for UART. (#279)

* Autoupdate configuration for UART.

* removing serial autoupdates.
2016-10-18 21:36:42 -07:00
3f626105cd 0.5.24 2016-10-18 21:07:02 -07:00
d9ff9c4800 Bump pxt-core to 0.4.65 2016-10-18 21:07:00 -07:00
75baca4a97 0.4.54 2016-10-18 21:03:36 -07:00
58ae4945cb Bump pxt-core to 0.4.65 2016-10-18 21:03:34 -07:00
fba37d96b2 updated localization help 2016-10-18 13:19:46 -07:00
31998fec05 0.5.23 2016-10-18 13:18:45 -07:00
342aa3ca32 Bump pxt-core to 0.4.63 2016-10-18 13:18:43 -07:00
5eb8704382 0.4.53 2016-10-18 13:18:20 -07:00
81b66664ef Bump pxt-core to 0.4.63 2016-10-18 13:18:19 -07:00
135aaf4855 0.4.52 2016-10-18 09:08:25 -07:00
9b599b6242 0.5.22 2016-10-18 16:56:58 +02:00
e5e63c548f update dal defines 2016-10-18 16:56:42 +02:00
f3eb9a988f update dependencies 2016-10-18 16:56:15 +02:00
e7e2ff7752 gesture updates 2016-10-18 16:40:53 +02:00
f10ac93268 add handling of gestures (we only have 2g, 6g ... no 3g), add mac/idea ignored files 2016-10-18 15:44:49 +02:00
47f46553e0 fix name of board 2016-10-18 15:43:52 +02:00
3158e95cde 0.5.21 2016-10-17 21:39:08 -07:00
854029fe33 updated board name 2016-10-17 21:38:58 -07:00
1b379bddd0 0.5.20 2016-10-17 21:35:07 -07:00
9495da9a53 0.5.19 2016-10-17 21:25:11 -07:00
128b3f2f51 Bump pxt-core to 0.4.62 2016-10-17 21:25:08 -07:00
1fbf257619 0.4.51 2016-10-17 21:12:33 -07:00
932c01f394 Bump pxt-core to 0.4.62 2016-10-17 21:12:30 -07:00
c3b2b99d7c 0.4.50 2016-10-17 16:45:20 -07:00
ec910cb10f Bump pxt-core to 0.4.60 2016-10-17 16:45:17 -07:00
a19d1c848b renaming board name 2016-10-17 16:18:04 -07:00
a331a017b8 merged microbit changes 2016-10-17 13:36:54 -07:00
790b9f557a renaming translation files 2016-10-17 13:33:27 -07:00
0b469f69b6 Fix i18n not working after 277d5a7 (#277)
* Fix i18n not working after 277d5a7

The translation strings file in "core" package should have file names
"core-strings.json" or "core-jsdoc-strings.json".

* Enable ja translation

Rename "core-strings.json" to "core-jsdoc-strings.json".
Add new "core-strings.json" as a copy of the template.
Add two lines for the files in "pxt.json".
2016-10-17 11:13:38 -07:00
5cce86ec7e 0.5.18 2016-10-17 10:54:19 -07:00
65e01dc0df Bump pxt-core to 0.4.59 2016-10-17 10:54:17 -07:00
1a3c31c9f3 Deploy no longer throws when no drives found (#269)
pxt deploy no longer throws when no drives found
2016-10-17 07:39:29 -07:00
7aeb216462 0.5.17 2016-10-16 20:26:19 -07:00
543659b0e8 specifying pin positions 2016-10-16 20:25:55 -07:00
a2b5ff68af 0.5.16 2016-10-16 20:09:30 -07:00
b968d3b1de fixing simulator in IE11 2016-10-16 20:09:13 -07:00
4dbebe3e15 fixing logo in IE11 2016-10-16 09:28:30 -07:00
3b95fede48 optimizing logo 2016-10-16 09:19:40 -07:00
5d4bd77bf4 0.4.49 2016-10-14 22:57:42 -07:00
c83d7e9f07 Bump pxt-core to 0.4.58 2016-10-14 22:57:35 -07:00
971faed80a 0.5.15 2016-10-14 21:56:38 -07:00
02a58caf7a Bump pxt-core to 0.4.58 2016-10-14 21:56:37 -07:00
912e2e6159 enabling inverted menu 2016-10-14 11:32:00 -07:00
efee05c7f5 0.4.48 2016-10-14 11:30:47 -07:00
cc9ab86181 Bump pxt-core to 0.4.57 2016-10-14 11:30:41 -07:00
e834ae0656 0.5.14 2016-10-14 08:04:04 -07:00
175923fcb9 updated logos 2016-10-14 08:00:34 -07:00
42ebdde3df 0.5.13 2016-10-14 07:48:36 -07:00
20c63359af hiding microsoft logo 2016-10-14 07:48:23 -07:00
841f3dc7d6 0.5.12 2016-10-14 07:35:12 -07:00
f7377f6a21 Bump pxt-core to 0.4.57 2016-10-14 07:35:09 -07:00
1104ab5b33 updated logos 2016-10-14 07:21:50 -07:00
e2fe660012 towards pin placement 2016-10-14 06:46:56 -07:00
7d4b800637 identifying and naming pins 2016-10-13 23:53:24 -07:00
ef8d7185ee adding lessons to create circuit using aluminium foil 2016-10-13 12:52:47 -07:00
b0392da8b1 Fix indentation of showLeds in a couple of projects. 2016-10-13 11:32:25 -07:00
c817f9e3ff re-enabling sharing after bug in share-editor has been fixed. 2016-10-13 10:55:52 -07:00
746728759d setting default locale to German 2016-10-13 10:21:56 -07:00
3d3b9e2718 Bump pxt-core to 0.4.56 2016-10-13 10:06:10 -07:00
0459cd693d 0.5.11 2016-10-13 16:58:33 +02:00
9c43714126 fix dependency 2016-10-13 16:58:14 +02:00
9bf7459628 0.5.10 2016-10-13 16:30:38 +02:00
b52432e103 update dependency 2016-10-13 16:26:30 +02:00
3ac0a060dd added pin mapping 2016-10-13 11:16:10 +02:00
85ebbb28e3 0.5.9 2016-10-12 23:52:47 -07:00
f69db3faf7 Bump pxt-core to 0.4.55 2016-10-12 23:52:45 -07:00
5f78f98f94 0.4.47 2016-10-12 23:52:11 -07:00
395b6184b9 Bump pxt-core to 0.4.55 2016-10-12 23:52:09 -07:00
4fc514e643 updated screen rendering 2016-10-12 23:40:33 -07:00
7c2512e56b fixing thermometer 2016-10-12 23:30:19 -07:00
d9eebf4a9f support for light level / thermometer simulation 2016-10-12 23:14:38 -07:00
8af383ec56 updated svg layout 2016-10-12 22:44:05 -07:00
573d7aff40 add svg with pins and connectors id-ed 2016-10-12 23:07:55 +02:00
f73274803c 0.5.8 2016-10-12 18:57:05 +02:00
63556ef14a update dependency 2016-10-12 18:56:51 +02:00
9607183587 0.5.7 2016-10-12 18:02:23 +02:00
4cca961e52 latest version with RGB led support 2016-10-12 18:02:16 +02:00
c2a1668d55 Merge remote-tracking branch 'origin/master' 2016-10-12 17:54:39 +02:00
7102eddc0b add color handling for LED 2016-10-12 17:54:25 +02:00
b34884fe00 updated readme 2016-10-12 08:13:15 -07:00
e768a4dc97 updated links 2016-10-12 08:11:05 -07:00
8b1b1bb869 0.5.6 2016-10-12 04:50:08 -07:00
57deb1749f Bump pxt-core to 0.4.54 2016-10-12 04:50:06 -07:00
3274964a11 0.4.46 2016-10-12 04:49:42 -07:00
f5e8b35df4 Bump pxt-core to 0.4.54 2016-10-12 04:49:40 -07:00
fb82b94f69 0.5.5 2016-10-12 04:03:19 -07:00
d321170da9 Bump pxt-core to 0.4.53 2016-10-12 04:03:17 -07:00
996073728c 0.4.45 2016-10-12 04:02:55 -07:00
1e964ba1ea Bump pxt-core to 0.4.53 2016-10-12 04:02:53 -07:00
dff4f3adb3 basic motor block support 2016-10-11 22:58:53 -07:00
5d8a1b69f6 0.5.4 2016-10-11 19:42:10 -07:00
0b0c2c9466 merged latest pxt 2016-10-11 19:41:59 -07:00
895a099ebf 0.4.44 2016-10-11 19:36:36 -07:00
f7ed06108d Inputorg (#275)
* use typescript from workspace

* fixed tracking in localhost

* updated ordering of input/radio
2016-10-11 19:36:00 -07:00
0ffccdca85 Bump pxt-core to 0.4.52 2016-10-11 17:51:09 -07:00
9f5ebdfb78 Adding advanced attribute to blocks and categories (#273) 2016-10-11 13:48:25 -07:00
9319f10430 0.5.3 2016-10-11 11:43:38 -07:00
c4787e1028 support for rgb led in simulator 2016-10-11 11:41:51 -07:00
cb280af783 fix json in libs/hello 2016-10-11 10:13:30 -07:00
6e64e80c05 Revert "re-enabling sharing after bug has been fixed"
This reverts commit dde16fec14.
2016-10-11 09:37:53 -07:00
dde16fec14 re-enabling sharing after bug has been fixed 2016-10-11 09:29:44 -07:00
84 changed files with 3129 additions and 769 deletions

4
.gitignore vendored
View File

@ -24,3 +24,7 @@ clients/electron/projects
*.db
*.suo
*.log
.DS_Store
.idea
*.iml

View File

@ -1,11 +1,11 @@
# micro:bit target for PXT
# Calliope target for PXT
This target allow to program a [BBC micro:bit](https://www.microbit.co.uk/) using
This target allow to program a [Calliope](http://calliope.cc/) using
PXT ([Microsoft Programming Experience Toolkit](https://github.com/Microsoft/pxt)).
* [Try it live](https://codethemicrobit.com)
[![Build Status](https://travis-ci.org/Microsoft/pxt-calliope.svg?branch=master)](https://travis-ci.org/Microsoft/pxt-calliope)
[![Build Status](https://travis-ci.org/Microsoft/pxt-microbit.svg?branch=master)](https://travis-ci.org/Microsoft/pxt-microbit)
![](http://calliope.cc/content/1-ueber-mini/mini_board.png)
## Local server
@ -18,8 +18,8 @@ The following commands are a 1-time setup after synching the repo on your machin
* if not yet installed, install [Node.js 4.4.5 or higher](https://nodejs.org/en/download/)
* [clone this repo](https://help.github.com/articles/cloning-a-repository/) to your computer and go in the project folder
```
git clone https://github.com/microsoft/pxt-microbit
cd pxt-microbit
git clone https://github.com/microsoft/pxt-calliope
cd pxt-calliope
```
* install the PXT command line (add ``sudo`` for Mac/Linux shells).
```
@ -32,14 +32,15 @@ npm install
### Running
Run this command to open a local web server (add ``sudo`` for Mac/Linux shells)
Run this command to open a local web server (add ``sudo`` for Mac/Linux shells).
```
pxt serve
```
If the local server opens in the wrong browser, make sure to copy the URL containing the local token.
Otherwise, the editor will not be able to load the projects.
If you need modify the `.cpp` files, turn on yotta compilation with the ``-yt`` flag (add ``sudo`` for Mac/Linux shells):
If you need modify the `.cpp` files, turn on yotta compilation with the ``-yt`` flag (add ``sudo`` for Mac/Linux shells). On Windows, you must be running
from the ``Run Yotta`` command prompt.
```
pxt serve -yt
```
@ -53,11 +54,6 @@ pxt update
More instructions at https://github.com/Microsoft/pxt#running-a-target-from-localhost
### Building
* Install Visual Studio 2015 Update 2 or higher. Make sure the Windows 10 templates are installed.
* open the ``win10/app.sln`` solution and launch the ``codethemicrobit`` project.
## Testing
The build automatically runs the following:
@ -66,7 +62,6 @@ The build automatically runs the following:
* `pxt run` in `libs/lang-test*` - this will run the test in command line runner;
there is a number of asserts in both of these
* `pxt testdir` in `tests` - this makes sure all the files compile and generates .hex files
* run the TD->TS converter on a number of test scripts from `microbit.co.uk` and make sure the results compile
To test something on the device:

View File

@ -13,20 +13,20 @@ export function deployCoreAsync(res: ts.pxtc.CompileResult) {
return getBitDrivesAsync()
.then(drives => {
if (drives.length == 0) {
let msg = "cannot find any drives to deploy to";
console.log(msg);
return Promise.reject(new Error(msg));
console.log("cannot find any drives to deploy to");
return Promise.resolve(0);
}
console.log(`copy ${ts.pxtc.BINARY_HEX} to ` + drives.join(", "))
console.log(`copy ${ts.pxtc.BINARY_HEX} to ` + drives.join(", "));
return Promise.map(drives, d =>
writeFileAsync(d + ts.pxtc.BINARY_HEX, res.outfiles[ts.pxtc.BINARY_HEX])
.then(() => {
console.log("wrote hex file to " + d)
}))
})
.then(() => { })
let writeHexFile = (filename: string) => {
return writeFileAsync(filename + ts.pxtc.BINARY_HEX, res.outfiles[ts.pxtc.BINARY_HEX])
.then(() => console.log("wrote hex file to " + filename));
};
return Promise.map(drives, d => writeHexFile(d))
.then(() => drives.length);
});
}
function getBitDrivesAsync(): Promise<string[]> {

View File

@ -2,5 +2,5 @@
(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable time_event track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config reset people.set people.set_once people.increment people.append people.union people.track_charge people.clear_charges people.delete_user".split(" ");
for(g=0;g<i.length;g++)f(c,i[g]);b._i.push([a,e,d])};b.__SV=1.2;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof MIXPANEL_CUSTOM_LIB_URL?MIXPANEL_CUSTOM_LIB_URL:"file:"===e.location.protocol&&"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//)?"https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js":"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js";f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f)}})(document,window.mixpanel||[]);
mixpanel.init("762fef19c053a0ea4cec43d2fecae76e", { disable_persistence: true });
if (pxtConfig) mixpanel.register({ target: pxtConfig.targetId, version: pxtConfig.targetVersion });
if (typeof pxtConfig !== "undefined") mixpanel.register({ target: pxtConfig.targetId, version: pxtConfig.targetVersion });
</script>

View File

@ -2,5 +2,5 @@
(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable time_event track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config reset people.set people.set_once people.increment people.append people.union people.track_charge people.clear_charges people.delete_user".split(" ");
for(g=0;g<i.length;g++)f(c,i[g]);b._i.push([a,e,d])};b.__SV=1.2;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof MIXPANEL_CUSTOM_LIB_URL?MIXPANEL_CUSTOM_LIB_URL:"file:"===e.location.protocol&&"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//)?"https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js":"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js";f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f)}})(document,window.mixpanel||[]);
mixpanel.init("762fef19c053a0ea4cec43d2fecae76e", { disable_persistence: true });
if (pxtConfig) mixpanel.register({ target: pxtConfig.targetId, version: pxtConfig.targetVersion });
if (typeof pxtConfig !== "undefined") mixpanel.register({ target: pxtConfig.targetId, version: pxtConfig.targetVersion });
</script>

View File

@ -1,11 +1,40 @@
# crocodile clips
The large holes at the bottom of the board are designed to attach alligator/crocodile clips.
Register an event that will execute whenever the user attaches one side of the crocodile clip to the `GND` pin, then connects and disconnects the unattached side of the crocodile clip to pin `0`, `1`, or `2`.
The large holes at the bottom of the board are designed to attach alligator/crocodile clips
to create electrical circuit with other components.
### Example: on pin pressed with random numbers
# ~hint
This example displays a random number every time the crocodile clip holds `GND` then connects and disconnects the `P0` pin. Each time the crocodile clip is firmly connected and disconnected from pin `P0`, the micro:bit will return a random Number between 0 and the parameter limit
**No crocodile clips!?!?!** Use wires or Aluminium foil! [Read more...](/device/foil-circuits)
# ~
## Connecting Crocodile Clips
The hole for ``P0`` and ``GND`` allow to grab the board on the side which makes for a great grip.
![](/static/mb/device/croc-clips/crocclipsclamped.jpg)
Pass one jaw in the hole and grab the side of the board with the other jaw.
![](/static/mb/device/croc-clips/sideclamp.jpg)
For the center holes, ``P1`` and ``P2``, you can also grab the bottom of the board but they are a bit harder to grip.
You can also grip the board between the jaws. In which case, you will want to make sure to avoid overlapping the jaws
with the other pins as it will create short-circuit in the board.
![](/static/mb/device/croc-clips/badclamp.jpg)
Adding a little tape helps keeping the crocodile clips in place.
![](/static/mb/device/croc-clips/frontclamp.jpg)
## Example: on pin pressed with random numbers
This example displays a random number every time the crocodile clip holds `GND` then connects and disconnects the `P0` pin.
Each time the crocodile clip is firmly connected and disconnected from pin `P0`, the micro:bit will return a random Number between 0 and the parameter limit.
```blocks
input.onPinPressed(TouchPin.P0, () => {
@ -13,11 +42,6 @@ input.onPinPressed(TouchPin.P0, () => {
})
```
### Connecting Crocodile Clips
![](/static/mb/crocodile-clips-2.jpg)
### See also
[micro:bit pins](/device/pins), [pin is pressed](/reference/input/pin-is-pressed), [analog read pin](/reference/pins/analog-read-pin), [analog write pin](/reference/pins/analog-write-pin), [digital read pin](/reference/pins/digital-read-pin), [digital write pin](/reference/pins/digital-write-pin)
## See also
[micro:bit pins](/device/pins)

View File

@ -1,7 +1,5 @@
# Error codes
The micro:bit error codes
Your micro:bit may encounter a situation that prevents it from running your code. When this happens, a frowny face will appear on your micro:bit screen (see picture) followed by an error number.
Below is a list of error numbers and what they mean:

View File

@ -0,0 +1,52 @@
# foil circuits
The large holes at the bottom of the board are designed to attach alligator/crocodile clips
to create electrical circuit with other components.
If you do not have crocodile clips at hand, dyou can use wires or even Aluminium foil to acheive the same result.
We will show you how to connect the micro:bit to headphones using Alumunium foil and tape.
https://youtu.be/mhXYyPuvpz0
### Materials
* micro:bit and battery pack (you can also power it via USB)
* a small piece of cardboard
* Aluminium foil
* tape
### Assembly instructions
Tape the micro:bit and battery pack to the card board. Make sure to remove the batteries while you are building your circuit.
![](/static/mb/device/croc-clips/microbitattached.jpg)
Cut the thinest strip of foil possible and roll it into a cable. You can also try to fold, whatever works for you.
Build two of those wires.
![](/static/mb/device/croc-clips/foilcut.jpg)
Place the foil wire on the ``GND`` pin and attach with a piece of tape. Press hard to get the best connection between
the foil and the pin board. Make sure the foil is not overlapping with the other pins!
![](/static/mb/device/croc-clips/groundconnected.jpg)
Place the second wire on the ``P0`` pin the same way. Make sure the wire does not overlap with the other pins!
![](/static/mb/device/croc-clips/microbitconnect.jpg)
Tape the headphone jack connector to the cardboard and roll the wire coming from ``GND`` around the metal base.
Make sure the wire does not touch the other metal rings on the jack.
![](/static/mb/device/croc-clips/jackground.jpg)
Tape the second wire on the head of the jack connector.
![](/static/mb/device/croc-clips/jackconnect.jpg)
![](/static/mb/device/croc-clips/foilcircuit.jpg)
## See also
[micro:bit pins](/device/pins)

View File

@ -5,7 +5,8 @@
### Things to do
* **[Getting Started](/getting-started)**
* [Ten projects](/projects)
* [Projects](/projects)
* [Lessons](/lessons)
### Micro:bit reference
@ -16,16 +17,15 @@
* [Blocks language](/blocks)
* [JavaScript language](/javascript)
* [Streaming data](/streaming)
### More questions?
* [Frequently Asked Question](/faq)
* [Embedding project](/share)
* [Help Translate](/translate)
* [Release notes](/release-notes)
* [Embedding project](/share)
### Developers
* [Command Line Interface](/cli)
* Learn about [packages](/packages)
* [Release notes](/release-notes)

View File

@ -7,11 +7,12 @@
```sim
basic.forever(() => {
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`);
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
basic.pause(500);
@ -29,11 +30,12 @@ Use [show leds](/reference/basic/show-leds) and make your code look like this:
```blocks
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`);
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
```
## Step 2
@ -42,11 +44,11 @@ Add a [pause](/reference/basic/pause) to wait and [clear screen](/reference/basi
```blocks
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`);
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`);
basic.pause(500);
basic.clearScreen();
```
@ -58,11 +60,12 @@ Put a [forever loop](/reference/basic/forever) around it.
```blocks
basic.forever(() => {
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`);
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
})
@ -75,11 +78,12 @@ Add a [pause](/reference/basic/pause) to wait after clearing the screen.
```blocks
basic.forever(() => {
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`);
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
basic.pause(500);
@ -94,20 +98,22 @@ Add a second image of a broken heart.
```blocks
basic.forever(() => {
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`);
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
basic.pause(500);
basic.showLeds(`
. # . # .
# . # # #
# . . . #
. # # # .
. . # . .`);
. # . # .
# . # # #
# . . . #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
basic.pause(500);

View File

@ -24,6 +24,12 @@ Build your own music player micro:bit from headphones.
* [Connect your headphone](/projects/hack-your-headphone/making)
* [Play sounds!]()
# ~hint
**No crocodile clips!?!?!** Use wires or Aluminium foil! [Read more...](/device/foil-circuits)
# ~
### ~button /projects/hack-your-headphones/making
Let's get started!

View File

@ -6,6 +6,12 @@ Did you know you could attach your headhpones to the micro:bit to generate sound
### ~
# ~hint
**No crocodile clips!?!?!** Use wires or Aluminium foil! [Read more...](/device/foil-circuits)
# ~
### Step 1
![](/static/mb/lessons/banana-keyboard-1.png)

View File

@ -10,11 +10,12 @@ Use [show leds](/reference/basic/show-leds) to make a smiley face:
```blocks
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .`);
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .`
);
```
## Step 2
@ -24,18 +25,20 @@ frowny face inside it:
```blocks
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .`);
input.onButtonPressed(Button.A, () => {
basic.showLeds(`
. # . # .
. # . # .
. . . . .
. # # # .
# . . . #`);
# . . . #
. # # # .`
);
input.onButtonPressed(Button.A, () => {
basic.showLeds(`
. # . # .
. # . # .
. . . . .
. # # # .
# . . . #`
);
});
```
@ -45,25 +48,28 @@ Now add blocks so that when [button B is pressed](/reference/input/button-is-pre
```blocks
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .`);
input.onButtonPressed(Button.A, () => {
basic.showLeds(`
. # . # .
. # . # .
. . . . .
. # # # .
# . . . #`);
});
input.onButtonPressed(Button.B, () => {
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .`);
. # # # .`
);
input.onButtonPressed(Button.A, () => {
basic.showLeds(`
. # . # .
. # . # .
. . . . .
. # # # .
# . . . #`
);
});
input.onButtonPressed(Button.B, () => {
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .`
);
});
```

View File

@ -10,6 +10,10 @@ input.onButtonPressed(Button.A, () => {
music.playTone(0, 0);
led.plot(0, 0);
radio.sendNumber(0);
```
## Advanced
```namespaces
game.addScore(1);
images.createImage(`
. . . . .
@ -24,7 +28,8 @@ control.inBackground(() => {
});
```
## Advanced
## Bluetooth
```namespaces
devices.tellCameraTo(MesCameraEvent.TakePhoto);

View File

@ -2,6 +2,14 @@
Support for additional Bluetooth services.
### ~hint
![](/static/bluetooth/Bluetooth_SIG.png)
For another device like a smartphone to use any of the Bluetooth "services" which the micro:bit has, it must first be [paired with the micro:bit](/reference/bluetooth/bluetooth-pairing). Once paired, the other device may connect to the micro:bit and exchange data relating to many of the micro:bit's features.
### ~
```cards
bluetooth.startAccelerometerService();
bluetooth.startButtonService();
@ -9,20 +17,34 @@ bluetooth.startIOPinService();
bluetooth.startLEDService();
bluetooth.startMagnetometerService();
bluetooth.startTemperatureService();
bluetooth.uartRead("");
bluetooth.uartWrite("");
bluetooth.onBluetoothConnected(() => {
});
bluetooth.onBluetoothDisconnected(() => {
});
bluetooth.onBluetoothConnected(() => {});
bluetooth.onBluetoothDisconnected(() => {});
```
## UART
```cards
bluetooth.startUartService();
bluetooth.uartReadUntil("");
bluetooth.uartWriteString("");
bluetooth.uartWriteNumber(0);
bluetooth.uartWriteValue("", 0);
```
```package
microbit-bluetooth
```
### Advanced
For more advanced information on the micro:bit Bluetooth UART service including information on using a smartphone, see the [Lancaster University micro:bit runtime technical documentation](http://lancaster-university.github.io/microbit-docs/ble/uart-service/)
### See Also
[startAccelerometerService](/reference/bluetooth/start-accelerometer-service), [startButtonService](/reference/bluetooth/start-button-service), [startIOPinService](/reference/bluetooth/start-io-pin-service), [startLEDService](/reference/bluetooth/start-led-service), [startMagnetometerService](/reference/bluetooth/start-magnetometer-service), [startTemperatureService](/reference/bluetooth/start-temperature-service), [uartRead](/reference/bluetooth/uart-read), [uartWrite](/reference/bluetooth/uart-write), [onBluetoothConnected](/reference/bluetooth/on-bluetooth-connected), [onBluetoothDisconnected](/reference/bluetooth/on-bluetooth-disconnected)
[startAccelerometerService](/reference/bluetooth/start-accelerometer-service), [startButtonService](/reference/bluetooth/start-button-service), [startIOPinService](/reference/bluetooth/start-io-pin-service), [startLEDService](/reference/bluetooth/start-led-service), [startMagnetometerService](/reference/bluetooth/start-magnetometer-service), [startTemperatureService](/reference/bluetooth/start-temperature-service),
[startUartService](/reference/bluetooth/start-uart-service),
[uartReadUntil](/reference/bluetooth/uart-read-until),
[uartWriteString](/reference/bluetooth/uart-write-string),
[uartWriteNumber](/reference/bluetooth/uart-write-number),
[uartWriteValue](/reference/bluetooth/uart-write-value),
[onBluetoothConnected](/reference/bluetooth/on-bluetooth-connected), [onBluetoothDisconnected](/reference/bluetooth/on-bluetooth-disconnected)

View File

@ -12,7 +12,7 @@ The [Bluetooth UART service](start-uart-service.md) allows another device such a
With the Bluetooth UART service running, this block allows a micro:bit to read data which has been received from a Bluetooth connected device, terminating reading and returning the value obtained as soon as a specified delimiter character is encountered. This means that connected devices can send data to the micro:bit and indicate that the complete message has been sent by appending the message with the delimiter character.
```sig
bluetooth.uartRead("");
bluetooth.uartReadUntil("");
```
### Example: Starting the Bluetooth UART service and then reading data received from another device which is terminated by ":" character and then displaying it
@ -25,7 +25,7 @@ bluetooth.onBluetoothConnected(() => {
basic.showString("C");
connected = 1;
while (connected == 1) {
uartData = bluetooth.uartRead(":");
uartData = bluetooth.uartReadUntil(":");
basic.showString(uartData);
}
});

View File

@ -0,0 +1,28 @@
# UART Write Number
### ~hint
![](/static/bluetooth/Bluetooth_SIG.png)
For another device like a smartphone to use any of the Bluetooth "services" which the micro:bit has, it must first be [paired with the micro:bit](/reference/bluetooth/bluetooth-pairing). Once paired, the other device may connect to the micro:bit and exchange data relating to many of the micro:bit's features.
### ~
The [Bluetooth UART service](/reference/bluetooth/start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks.
With the Bluetooth UART service running, this block allows a micro:bit to send data to a Bluetooth connected device.
```sig
bluetooth.uartWriteNumber(42);
```
### Advanced
For more advanced information on the micro:bit Bluetooth UART service including information on using a smartphone, see the [Lancaster University micro:bit runtime technical documentation](http://lancaster-university.github.io/microbit-docs/ble/uart-service/)
### See also
[About Bluetooth](/reference/bluetooth/about-bluetooth), [micro:bit Bluetooth profile overview ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html), [Bluetooth SIG](https://www.bluetooth.com)
```package
microbit-bluetooth
```

View File

@ -1,4 +1,4 @@
# UART Write
# UART Write String
### ~hint
![](/static/bluetooth/Bluetooth_SIG.png)
@ -7,12 +7,12 @@ For another device like a smartphone to use any of the Bluetooth "services" whic
### ~
The [Bluetooth UART service](start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks.
The [Bluetooth UART service](/reference/bluetooth/start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks.
With the Bluetooth UART service running, this block allows a micro:bit to send data to a Bluetooth connected device.
```sig
bluetooth.uartWrite("");
bluetooth.uartWriteString("");
```
### Example: Starting the Bluetooth UART service and then sending "HELLO" whenever button A is pressed and another device has connected over Bluetooth
@ -29,7 +29,7 @@ bluetooth.onBluetoothDisconnected(() => {
});
input.onButtonPressed(Button.A, () => {
if (connected == 1) {
bluetooth.uartWrite("HELLO");
bluetooth.uartWriteString("HELLO");
}
});
```

View File

@ -0,0 +1,28 @@
# UART Write Value
### ~hint
![](/static/bluetooth/Bluetooth_SIG.png)
For another device like a smartphone to use any of the Bluetooth "services" which the micro:bit has, it must first be [paired with the micro:bit](/reference/bluetooth/bluetooth-pairing). Once paired, the other device may connect to the micro:bit and exchange data relating to many of the micro:bit's features.
### ~
The [Bluetooth UART service](/reference/bluetooth/start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks.
With the Bluetooth UART service running, this block allows a micro:bit to send data to a Bluetooth connected device.
```sig
bluetooth.uartWriteValue("x", 42);
```
### Advanced
For more advanced information on the micro:bit Bluetooth UART service including information on using a smartphone, see the [Lancaster University micro:bit runtime technical documentation](http://lancaster-university.github.io/microbit-docs/ble/uart-service/)
### See also
[About Bluetooth](/reference/bluetooth/about-bluetooth), [micro:bit Bluetooth profile overview ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html), [Bluetooth SIG](https://www.bluetooth.com)
```package
microbit-bluetooth
```

17
docs/static/Calliopeminieditor.svg vendored Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="179.9" height="32.4" viewBox="0 0 179.9 32.4">
<path fill="#495260" d="M33.1 11.2h-8.5V5.8c0-2.3 1.9-4.2 4.2-4.2 2.3 0 4.2 1.9 4.2 4.2v5.4z"/>
<path fill="#7F96A1" d="M25.8 3.6H32v7.6h-6.2z"/>
<path fill="#845B32" d="M12.2 7.2V18h12.5V7.2c0-3.4-2.8-6.2-6.2-6.2s-6.3 2.8-6.3 6.2z"/>
<path fill="#26A7AA" d="M28.9 31.4H8.7c-6.3 0-9-8-4-11.8L16 11.2h17.1v16c0 2.3-1.9 4.2-4.2 4.2z"/>
<path fill="#43C9C9" d="M15.2 17.7l-8.8.7 10.7-8"/>
<path fill="#F6F4E7" d="M14.8 15.1l2.3-4.7 1.5 4.7m0 0l1.4-4.7 2.3 4.7"/>
<path fill="#BDD1CF" d="M21.9 17.7h-6.7l-.4-2.6h7.5"/>
<path fill="#F6F4E7" d="M26.8 31.4c-.6-4.6-1.9-10.2-4.8-13.7h-6.8c-3 3.5-4.2 9.1-4.8 13.7h16.4z"/>
<path fill="#FFCD9A" d="M18.6 10.5c-1.4 0-2.6-1.2-2.6-2.6V5h5.1v2.9c0 1.5-1.1 2.6-2.5 2.6z"/>
<path fill="#BDD1CF" d="M15.4 31.4V17.7c2.2 5.1 4.9 11.3 8.2 13.7h-8.2z"/>
<path fill="#FFCD9A" d="M17.1 10.4l1.5 4.7 1.4-4.7"/>
<path fill="#43C9C9" d="M25.8 11.2h7.3v9.4"/>
<path fill="#BCD1CF" d="M52.3 15.1h-1.6l-.2-1.4c-.2-.2-.5-.4-.8-.5s-.7-.2-1.2-.2c-.9 0-1.7.3-2.2 1s-.8 1.6-.8 2.7v.4c0 1.1.3 2 .8 2.7.5.7 1.2 1 2.1 1 .4 0 .8-.1 1.2-.2.4-.1.6-.3.8-.5l.2-1.4h1.6v2.1c-.4.5-1 .9-1.7 1.2-.7.3-1.4.5-2.3.5-1.5 0-2.6-.5-3.6-1.5s-1.4-2.3-1.4-3.9v-.4c0-1.6.5-2.9 1.4-3.9s2.1-1.5 3.6-1.5c.8 0 1.6.2 2.3.5.7.3 1.2.7 1.7 1.2v2.1zm1.5 5.9l.8-.1 3.3-9.4h2.2l3.3 9.4.8.1v1.3h-3.7V21l.8-.1-.5-1.5h-3.5l-.5 1.5.8.1v1.3h-3.7V21zm3.9-3.2h2.5L59 14l-1.3 3.8zm7.8 4.5V21l1.2-.2V13l-1.2-.2v-1.3H70v1.3l-1.2.2v7.6h3.1l.1-1.4h1.7v3h-8.2zm9.5 0V21l1.2-.2V13l-1.2-.2v-1.3h4.6v1.3l-1.3.2v7.6h3.1l.1-1.4h1.7v3H75zm9.5-9.5v-1.3H89v1.3l-1.1.2v7.8l1.1.2v1.3h-4.5V21l1.2-.2V13l-1.2-.2zm15.9 4.2c0 1.6-.5 2.9-1.4 3.9-.9 1-2.1 1.6-3.6 1.6s-2.6-.5-3.5-1.6-1.4-2.3-1.4-3.9v-.2c0-1.6.4-2.9 1.3-3.9s2.1-1.6 3.5-1.6c1.5 0 2.7.5 3.6 1.6s1.4 2.4 1.4 3.9v.2zm-2.2-.2c0-1.1-.2-2-.7-2.7s-1.2-1-2.1-1-1.6.3-2 1-.7 1.6-.7 2.7v.2c0 1.1.2 2.1.7 2.8.5.7 1.1 1 2 1 .9 0 1.6-.3 2.1-1s.7-1.6.7-2.8v-.2zm8.8-5.3c1.2 0 2.2.3 2.9 1S111 14 111 15s-.4 1.9-1.1 2.5c-.7.6-1.7.9-2.9.9h-1.8v2.4l1.2.2v1.3h-4.5V21l1.2-.2V13l-1.2-.2v-1.3h5.1zm-1.8 5.2h1.8c.6 0 1.1-.2 1.4-.5s.5-.8.5-1.3-.2-1-.5-1.3c-.3-.3-.8-.5-1.4-.5h-1.8v3.6zm14.1.9h-3.7v3.1h3.5l.1-1.3h1.7v3h-8.6V21l1.2-.2V13l-1.2-.2v-1.3h8.6v3h-1.7l-.1-1.3h-3.5v2.7h3.7v1.7z"/>
<path fill="#FFF" d="M134.3 11.6l.1 1.1c.2-.4.5-.7.9-1 .4-.2.8-.4 1.3-.4s.8.1 1.1.3c.3.2.5.5.7.8.2-.3.5-.6.8-.8.3-.2.7-.3 1.2-.3.4 0 .7.1 1 .2.3.1.5.3.8.6.2.3.4.6.5 1 .1.4.2.9.2 1.4v7.8h-2.2v-7.9c0-.4-.1-.7-.3-.9-.2-.2-.4-.2-.7-.2-.3 0-.5.1-.6.2s-.3.3-.3.5v8.3h-2.2v-7.9c0-.4-.1-.7-.3-.9-.2-.2-.4-.3-.7-.3-.3 0-.5.1-.7.2-.2.1-.3.3-.4.5v8.3h-2.2V11.6h2zm11.3 0h5.7v8.8h3.2v2h-8.9v-2h3.3v-6.8h-3.3v-2zm3.1-2.8c0-.4.1-.7.4-.9.2-.2.6-.4 1-.4s.8.1 1 .4c.2.2.4.5.4.9s-.1.7-.4.9c-.2.2-.6.4-1 .4s-.8-.1-1-.4c-.2-.2-.4-.5-.4-.9zm10.7 2.8l.1 1.5c.4-.5.9-1 1.4-1.2.6-.3 1.2-.4 1.8-.4.5 0 1 .1 1.5.2.5.2.8.4 1.2.7.3.3.6.8.8 1.3.2.5.3 1.2.3 1.9v6.7h-2.4v-6.7c0-.4-.1-.8-.2-1.1-.1-.3-.2-.5-.4-.7-.2-.2-.4-.3-.7-.4-.3-.1-.6-.1-.9-.1-.5 0-1 .1-1.4.3-.4.2-.7.5-.9.9v7.7h-2.4V11.6h2.2zm10.6 0h5.7v8.8h3.2v2H170v-2h3.3v-6.8H170v-2zm3.1-2.8c0-.4.1-.7.4-.9.2-.2.6-.4 1-.4s.8.1 1 .4c.2.2.4.5.4.9s-.1.7-.4.9c-.2.2-.6.4-1 .4s-.8-.1-1-.4c-.3-.2-.4-.5-.4-.9z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -1,70 +1,179 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 841.9 595.3" enable-background="new 0 0 841.9 595.3" xml:space="preserve">
<path fill="#4A5261" d="M406.9,292.9l0.2,0l5.6,17l-11.1,0.1L406.9,292.9z M402,281.8l-14.3,42.2l-3.5,0.5l0.1,5.8l16.5-0.1
l-0.1-5.8l-3.4-0.6l2.1-6.7l15.7-0.1l2.2,6.6l-3.3,0.6l0,5.8l16.5-0.2l0-5.8l-3.5-0.5l-15-41.9L402,281.8z"/>
<polygon fill="#4A5261" points="454.9,281.9 445.2,282 440,282 440.1,287.9 445.2,288.8 445.6,323.5 440.4,324.6 440.5,330.4
476.9,330.1 476.7,316.5 469.3,316.6 468.9,322.7 455.3,322.8 454.9,288.7 460.1,287.7 460.1,281.8 "/>
<polygon fill="#4A5261" points="501.6,281.9 491.9,282 486.7,282 486.8,287.9 491.9,288.8 492.2,323.5 487.1,324.6 487.2,330.4
523.6,330.1 523.4,316.5 516,316.6 515.6,322.7 501.9,322.8 501.6,288.7 506.8,287.7 506.8,281.8 "/>
<polygon fill="#4A5261" points="533.4,282 533.4,287.9 538.6,288.8 538.9,323.5 533.8,324.6 533.8,330.4 553.9,330.2 553.8,324.4
548.6,323.5 548.3,288.7 553.5,287.7 553.4,281.8 "/>
<polygon fill="#4A5261" points="674.9,282 669.7,282 669.8,287.9 674.9,288.8 675.2,323.5 670.1,324.6 670.2,330.4 708.4,330.1
708.3,316.8 700.9,316.9 700.6,322.7 684.9,322.8 684.8,309 701.2,308.8 701.1,301.4 684.7,301.5 684.6,289.4 700.1,289.2
700.6,295 708.1,294.9 707.9,281.7 "/>
<g>
<g>
<defs>
<rect id="SVGID_7_" x="133.2" y="204.1" width="234.3" height="188.7"/>
</defs>
<clipPath id="SVGID_1_">
<use xlink:href="#SVGID_7_" overflow="visible"/>
</clipPath>
</g>
<g>
<defs>
<rect id="SVGID_9_" x="133.2" y="204.1" width="234.3" height="188.7"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_9_" overflow="visible"/>
</clipPath>
</g>
<g>
<defs>
<rect id="SVGID_11_" x="133.2" y="204.1" width="234.3" height="188.7"/>
</defs>
<clipPath id="SVGID_3_">
<use xlink:href="#SVGID_11_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_3_)" fill="#4A5261" d="M312.3,246.7H277v-33.8c0-3.4,2.8-6.2,6.2-6.2h22.9c3.4,0,6.2,2.8,6.2,6.2
V246.7z"/>
</g>
<rect x="281.8" y="214.8" fill="#8096A1" width="25.8" height="31.8"/>
<path fill="#855C33" d="M224.9,230.1V275l52.3,0.2c0,0,0-42.2,0-44.9c0-14.4-11.8-26.2-26.2-26.2
C236.6,204.1,224.9,215.7,224.9,230.1"/>
<path fill="#26A6AB" d="M294.7,331h-84.1c-26.2,0-37.4-33.3-16.6-49.2l47-35.2h71.3v66.8C312.3,323.2,304.4,331,294.7,331"/>
<polygon fill="#42C9C9" points="237.6,273.8 201,276.6 245.6,243.3 "/>
<polygon fill="#F7F5E8" points="235.9,262.7 245.6,243.3 251.7,262.7 "/>
<polygon fill="#F7F5E8" points="251.7,262.7 257.7,243.3 267.4,262.7 "/>
<polygon fill="#BDD1CF" points="265.7,273.8 237.6,273.8 235.9,262.7 267.4,262.7 "/>
<path fill="#F7F5E8" d="M286,331c-2.6-19.3-7.8-42.7-20.1-57.2h-0.1h-14h-14h-0.1c-12.3,14.5-17.6,37.9-20.1,57.2H286z"/>
<path fill="#FFCC99" d="M253.9,243.8h-4.5c-4.7,0-8.5-3.8-8.5-8.5v-14.5h21.5v14.5C262.4,240,258.6,243.8,253.9,243.8"/>
<path fill="#BDD1CF" d="M238.3,331v-57.2c9.1,21.4,20.4,47.3,34.2,57.2H238.3z"/>
<polygon fill="#FFCC99" points="245.6,243.3 251.7,262.7 257.7,243.3 "/>
<polygon fill="#42C9C9" points="281.8,246.7 312.3,246.7 312.3,285.9 "/>
</g>
<path fill="#4A5261" d="M373.2,297.5l-7.2,0.1l-1.1-6.4c-1-0.9-2.2-1.7-3.6-2.2c-1.5-0.5-3.2-0.8-5.1-0.8c-4.2,0-7.4,1.6-9.7,4.7
c-2.2,3.1-3.3,7.1-3.3,12l0,1.7c0,4.9,1.2,8.9,3.5,12c2.3,3.1,5.5,4.6,9.6,4.5c1.9,0,3.7-0.3,5.2-0.9c1.6-0.6,2.8-1.3,3.7-2.3
l0.9-6.5l7.2-0.1l0.1,9.6c-1.9,2.3-4.4,4.1-7.4,5.5c-3,1.4-6.4,2.1-10.1,2.1c-6.5,0.1-11.8-2.1-16-6.6c-4.2-4.5-6.3-10.2-6.4-17.3
l0-1.6c-0.1-7,1.9-12.8,6-17.4c4.1-4.6,9.4-6.9,15.9-6.9c3.7,0,7.1,0.6,10.2,2c3,1.3,5.5,3.1,7.5,5.3L373.2,297.5z"/>
<path fill="#4A5261" d="M598.7,305c0-5-1.1-9.1-3.2-12.2c-2.1-3.1-5.2-4.6-9.3-4.6c-4.1,0-7.1,1.6-9.1,4.7c-2,3.1-2.9,7.2-2.9,12.3
l0,0.8c0,5.1,1.1,9.2,3.2,12.3c2.1,3.1,5.1,4.6,9.2,4.6c4.1,0,7.2-1.6,9.2-4.8c2-3.1,3-7.2,3-12.3L598.7,305z M608.4,305.7
c0.1,7.1-1.9,13-5.9,17.6c-4,4.7-9.3,7-15.9,7.1c-6.5,0.1-11.8-2.2-15.9-6.8c-4.1-4.6-6.1-10.4-6.2-17.5l0-0.7
c-0.1-7,1.9-12.9,5.9-17.6c4-4.7,9.2-7.1,15.8-7.1c6.6-0.1,11.9,2.2,16,6.8c4.1,4.6,6.2,10.4,6.3,17.5L608.4,305.7z"/>
<path fill="#4A5261" d="M633.9,305.2l8.2-0.1c2.7,0,4.7-0.8,6.1-2.3c1.4-1.5,2-3.4,2-5.7c0-2.3-0.7-4.2-2.1-5.7
c-1.4-1.5-3.5-2.2-6.2-2.2l-8.2,0.1L633.9,305.2z M641.9,281.8c5.5,0,9.9,1.3,13.2,4.1c3.2,2.8,4.9,6.5,4.9,11.1
c0,4.6-1.5,8.4-4.7,11.2s-7.5,4.3-13.1,4.3l-8.2,0.1l0.1,10.7l5.2,0.9l0,5.8l-20,0.2l-0.1-5.8l5.1-1l-0.3-34.7l-5.2-1l-0.1-5.9
l5.2,0L641.9,281.8z"/>
</svg>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_1"
x="0px"
y="0px"
viewBox="0 0 525.21599 126.9"
enable-background="new 0 0 841.9 595.3"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="Logo_Calliope_lang.svg"
width="525.216"
height="126.9"><metadata
id="metadata75"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs73" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1536"
inkscape:window-height="801"
id="namedview71"
showgrid="false"
inkscape:zoom="0.34208337"
inkscape:cx="420.95001"
inkscape:cy="297.64999"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Ebene_1" /><g
id="g8135"
transform="translate(-183.18441,126.89999)"><path
style="fill:#4a5261"
inkscape:connector-curvature="0"
id="path3"
d="m 406.9,-38.099997 0.2,0 5.6,17 -11.1,0.1 5.3,-17.1 z m -4.9,-11.1 -14.3,42.2000002 -3.5,0.5 0.1,5.79999996 16.5,-0.1 -0.1,-5.79999996 -3.4,-0.6 2.1,-6.7000002 15.7,-0.1 2.2,6.6000002 -3.3,0.6 0,5.79999996 16.5,-0.19999996 0,-5.8 -3.5,-0.5 -15,-41.9000002 -10,0.2 z" /><polygon
transform="translate(0,-330.99999)"
style="fill:#4a5261"
id="polygon5"
points="440.1,287.9 445.2,288.8 445.6,323.5 440.4,324.6 440.5,330.4 476.9,330.1 476.7,316.5 469.3,316.6 468.9,322.7 455.3,322.8 454.9,288.7 460.1,287.7 460.1,281.8 454.9,281.9 445.2,282 440,282 " /><polygon
transform="translate(0,-330.99999)"
style="fill:#4a5261"
id="polygon7"
points="486.8,287.9 491.9,288.8 492.2,323.5 487.1,324.6 487.2,330.4 523.6,330.1 523.4,316.5 516,316.6 515.6,322.7 501.9,322.8 501.6,288.7 506.8,287.7 506.8,281.8 501.6,281.9 491.9,282 486.7,282 " /><polygon
transform="translate(0,-330.99999)"
style="fill:#4a5261"
id="polygon9"
points="553.8,324.4 548.6,323.5 548.3,288.7 553.5,287.7 553.4,281.8 533.4,282 533.4,287.9 538.6,288.8 538.9,323.5 533.8,324.6 533.8,330.4 553.9,330.2 " /><polygon
transform="translate(0,-330.99999)"
style="fill:#4a5261"
id="polygon11"
points="708.1,294.9 707.9,281.7 674.9,282 669.7,282 669.8,287.9 674.9,288.8 675.2,323.5 670.1,324.6 670.2,330.4 708.4,330.1 708.3,316.8 700.9,316.9 700.6,322.7 684.9,322.8 684.8,309 701.2,308.8 701.1,301.4 684.7,301.5 684.6,289.4 700.1,289.2 700.6,295 " /><g
transform="translate(0,-330.99999)"
id="g13"><g
id="g15"><defs
id="defs17"><rect
height="188.7"
width="234.3"
y="204.10001"
x="133.2"
id="SVGID_7_" /></defs><clipPath
id="SVGID_1_"><use
height="100%"
width="100%"
y="0"
x="0"
style="overflow:visible"
id="use21"
overflow="visible"
xlink:href="#SVGID_7_" /></clipPath></g><g
id="g23"><defs
id="defs25"><rect
height="188.7"
width="234.3"
y="204.10001"
x="133.2"
id="SVGID_9_" /></defs><clipPath
id="SVGID_2_"><use
height="100%"
width="100%"
y="0"
x="0"
style="overflow:visible"
id="use29"
overflow="visible"
xlink:href="#SVGID_9_" /></clipPath></g><g
id="g31"><defs
id="defs33"><rect
height="188.7"
width="234.3"
y="204.10001"
x="133.2"
id="SVGID_11_" /></defs><clipPath
id="SVGID_3_"><use
height="100%"
width="100%"
y="0"
x="0"
style="overflow:visible"
id="use37"
overflow="visible"
xlink:href="#SVGID_11_" /></clipPath><path
style="fill:#4a5261"
inkscape:connector-curvature="0"
id="path39"
d="m 312.3,246.7 -35.3,0 0,-33.8 c 0,-3.4 2.8,-6.2 6.2,-6.2 l 22.9,0 c 3.4,0 6.2,2.8 6.2,6.2 l 0,33.8 z"
clip-path="url(#SVGID_3_)" /></g><rect
style="fill:#8096a1"
id="rect41"
height="31.799999"
width="25.799999"
y="214.8"
x="281.79999" /><path
style="fill:#855c33"
inkscape:connector-curvature="0"
id="path43"
d="m 224.9,230.1 0,44.9 52.3,0.2 c 0,0 0,-42.2 0,-44.9 0,-14.4 -11.8,-26.2 -26.2,-26.2 -14.4,0 -26.1,11.6 -26.1,26" /><path
style="fill:#26a6ab"
inkscape:connector-curvature="0"
id="path45"
d="m 294.7,331 -84.1,0 c -26.2,0 -37.4,-33.3 -16.6,-49.2 l 47,-35.2 71.3,0 0,66.8 c 0,9.8 -7.9,17.6 -17.6,17.6" /><polygon
style="fill:#42c9c9"
id="polygon47"
points="201,276.6 245.6,243.3 237.6,273.8 " /><polygon
style="fill:#f7f5e8"
id="polygon49"
points="245.6,243.3 251.7,262.7 235.9,262.7 " /><polygon
style="fill:#f7f5e8"
id="polygon51"
points="257.7,243.3 267.4,262.7 251.7,262.7 " /><polygon
style="fill:#bdd1cf"
id="polygon53"
points="267.4,262.7 265.7,273.8 237.6,273.8 235.9,262.7 " /><path
style="fill:#f7f5e8"
inkscape:connector-curvature="0"
id="path55"
d="m 286,331 c -2.6,-19.3 -7.8,-42.7 -20.1,-57.2 l -0.1,0 -14,0 -14,0 -0.1,0 c -12.3,14.5 -17.6,37.9 -20.1,57.2 l 68.4,0 z" /><path
style="fill:#ffcc99"
inkscape:connector-curvature="0"
id="path57"
d="m 253.9,243.8 -4.5,0 c -4.7,0 -8.5,-3.8 -8.5,-8.5 l 0,-14.5 21.5,0 0,14.5 c 0,4.7 -3.8,8.5 -8.5,8.5" /><path
style="fill:#bdd1cf"
inkscape:connector-curvature="0"
id="path59"
d="m 238.3,331 0,-57.2 c 9.1,21.4 20.4,47.3 34.2,57.2 l -34.2,0 z" /><polygon
style="fill:#ffcc99"
id="polygon61"
points="251.7,262.7 257.7,243.3 245.6,243.3 " /><polygon
style="fill:#42c9c9"
id="polygon63"
points="312.3,246.7 312.3,285.9 281.8,246.7 " /></g><path
style="fill:#4a5261"
inkscape:connector-curvature="0"
id="path65"
d="m 373.2,-33.499997 -7.2,0.1 -1.1,-6.4 c -1,-0.9 -2.2,-1.7 -3.6,-2.2 -1.5,-0.5 -3.2,-0.8 -5.1,-0.8 -4.2,0 -7.4,1.6 -9.7,4.7 -2.2,3.1 -3.3,7.1 -3.3,12 l 0,1.7 c 0,4.9 1.2,8.9 3.5,12 2.3,3.1000002 5.5,4.6000002 9.6,4.5000002 1.9,0 3.7,-0.3 5.2,-0.9 1.6,-0.6 2.8,-1.3000002 3.7,-2.3000002 l 0.9,-6.5 7.2,-0.1 0.1,9.6000002 c -1.9,2.3 -4.4,4.1 -7.4,5.5 -3,1.4 -6.4,2.09999996 -10.1,2.09999996 -6.5,0.1 -11.8,-2.09999996 -16,-6.59999996 -4.2,-4.5000002 -6.3,-10.2000002 -6.4,-17.3000002 l 0,-1.6 c -0.1,-7 1.9,-12.8 6,-17.4 4.1,-4.6 9.4,-6.9 15.9,-6.9 3.7,0 7.1,0.6 10.2,2 3,1.3 5.5,3.1 7.5,5.3 l 0.1,9.5 z" /><path
style="fill:#4a5261"
inkscape:connector-curvature="0"
id="path67"
d="m 598.7,-25.999997 c 0,-5 -1.1,-9.1 -3.2,-12.2 -2.1,-3.1 -5.2,-4.6 -9.3,-4.6 -4.1,0 -7.1,1.6 -9.1,4.7 -2,3.1 -2.9,7.2 -2.9,12.3 l 0,0.8 c 0,5.1 1.1,9.2 3.2,12.3 2.1,3.1000002 5.1,4.6000002 9.2,4.6000002 4.1,0 7.2,-1.6 9.2,-4.8000002 2,-3.1 3,-7.2 3,-12.3 l -0.1,-0.8 z m 9.7,0.7 c 0.1,7.1 -1.9,13 -5.9,17.6000002 -4,4.7 -9.3,6.99999996 -15.9,7.09999996 -6.5,0.1 -11.8,-2.19999996 -15.9,-6.79999996 -4.1,-4.6000002 -6.1,-10.4000002 -6.2,-17.5000002 l 0,-0.7 c -0.1,-7 1.9,-12.9 5.9,-17.6 4,-4.7 9.2,-7.1 15.8,-7.1 6.6,-0.1 11.9,2.2 16,6.8 4.1,4.6 6.2,10.4 6.3,17.5 l -0.1,0.7 z" /><path
style="fill:#4a5261"
inkscape:connector-curvature="0"
id="path69"
d="m 633.9,-25.799997 8.2,-0.1 c 2.7,0 4.7,-0.8 6.1,-2.3 1.4,-1.5 2,-3.4 2,-5.7 0,-2.3 -0.7,-4.2 -2.1,-5.7 -1.4,-1.5 -3.5,-2.2 -6.2,-2.2 l -8.2,0.1 0.2,15.9 z m 8,-23.4 c 5.5,0 9.9,1.3 13.2,4.1 3.2,2.8 4.9,6.5 4.9,11.1 0,4.6 -1.5,8.4 -4.7,11.2 -3.2,2.8 -7.5,4.3 -13.1,4.3 l -8.2,0.1 0.1,10.7000002 5.2,0.9 0,5.79999996 -20,0.2 -0.1,-5.79999996 5.1,-1 -0.3,-34.7000002 -5.2,-1 -0.1,-5.9 5.2,0 18,0 z" /></g></svg>

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@ -0,0 +1,821 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 251.8 222.2" width="251.8" height="222.2" enable-background="new 0 0 251.8 222.2" xml:space="preserve">
<symbol id="Mini_front" viewBox="-121.4 -112.4 242.4 214.1">
<g>
<use xlink:href="#calliope_mini_backside" width="296.7" height="262.1" id="XMLID_2_" x="-149.4" y="-131" transform="matrix(0.8169 0 0 0.8169 0.6672 -5.3582)" overflow="visible"/>
</g>
<g>
<g>
<polygon id="LED_0_0" fill="#FFFFFF" points="-20.9,36.6 -23,36.6 -23,42 -20.9,42 "/>
<polygon id="LED_1_0" fill="#FFFFFF" points="-9.9,36.6 -12.1,36.6 -12.1,42 -9.9,42 "/>
<polygon id="LED_2_0" fill="#FFFFFF" points="1,36.6 -1.1,36.6 -1.1,42 1,42 "/>
<polygon id="LED_3_0" fill="#FFFFFF" points="12,36.6 9.8,36.6 9.8,42 12,42 "/>
<polygon id="LED_4_0" fill="#FFFFFF" points="22.9,36.6 20.8,36.6 20.8,42 22.9,42 "/>
</g>
<g>
<polygon id="LED_0_1" fill="#FFFFFF" points="-20.9,25.9 -23,25.9 -23,31.3 -20.9,31.3 "/>
<polygon id="LED_1_1" fill="#FFFFFF" points="-9.9,25.9 -12.1,25.9 -12.1,31.3 -9.9,31.3 "/>
<polygon id="LED_2_1" fill="#FFFFFF" points="1,25.9 -1.1,25.9 -1.1,31.3 1,31.3 "/>
<polygon id="LED_3_1" fill="#FFFFFF" points="12,25.9 9.8,25.9 9.8,31.3 12,31.3 "/>
<polygon id="LED_4_1" fill="#FFFFFF" points="22.9,25.9 20.8,25.9 20.8,31.3 22.9,31.3 "/>
</g>
<g>
<polygon id="LED_0_2" fill="#FFFFFF" points="-20.9,15.2 -23,15.2 -23,20.6 -20.9,20.6 "/>
<polygon id="LED_1_2" fill="#FFFFFF" points="-9.9,15.2 -12.1,15.2 -12.1,20.6 -9.9,20.6 "/>
<polygon id="LED_2_2" fill="#FFFFFF" points="1,15.2 -1.1,15.2 -1.1,20.6 1,20.6 "/>
<polygon id="LED_3_2" fill="#FFFFFF" points="12,15.2 9.8,15.2 9.8,20.6 12,20.6 "/>
<polygon id="LED_4_2" fill="#FFFFFF" points="22.9,15.2 20.8,15.2 20.8,20.6 22.9,20.6 "/>
</g>
<g>
<polygon id="LED_0_3" fill="#FFFFFF" points="-20.9,4.4 -23,4.4 -23,9.9 -20.9,9.9 "/>
<polygon id="LED_1_3" fill="#FFFFFF" points="-9.9,4.4 -12.1,4.4 -12.1,9.9 -9.9,9.9 "/>
<polygon id="LED_2_3" fill="#FFFFFF" points="1,4.4 -1.1,4.4 -1.1,9.9 1,9.9 "/>
<polygon id="LED_3_3" fill="#FFFFFF" points="12,4.4 9.8,4.4 9.8,9.9 12,9.9 "/>
<polygon id="LED_4_3" fill="#FFFFFF" points="22.9,4.4 20.8,4.4 20.8,9.9 22.9,9.9 "/>
</g>
<g>
<polygon id="LED_0_4" fill="#FFFFFF" points="-20.9,-6.3 -23,-6.3 -23,-0.8 -20.9,-0.8 "/>
<polygon id="LED_1_4" fill="#FFFFFF" points="-9.9,-6.3 -12.1,-6.3 -12.1,-0.8 -9.9,-0.8 "/>
<polygon id="LED_2_4" fill="#FFFFFF" points="1,-6.3 -1.1,-6.3 -1.1,-0.8 1,-0.8 "/>
<polygon id="LED_3_4" fill="#FFFFFF" points="12,-6.3 9.8,-6.3 9.8,-0.8 12,-0.8 "/>
<polygon id="LED_4_4" fill="#FFFFFF" points="22.9,-6.3 20.8,-6.3 20.8,-0.8 22.9,-0.8 "/>
</g>
</g>
<path fill="#BDD1CF" d="M8.8,66.6H-8.8c-0.7,0-1.2,0.5-1.2,1.2v13.5c0,0.7,0.5,1.2,1.2,1.2H8.8c0.7,0,1.2-0.5,1.2-1.2V67.9
C10,67.2,9.4,66.6,8.8,66.6z"/>
<g id="EXT_PWR">
<path fill="#FFFFFF" d="M65.5-65.6L49.9-59c-0.8,0.3-1.1,1.2-0.8,2l8.1,19.3c0.3,0.8,1.2,1.1,2,0.8l15.6-6.6
c0.8-0.3,1.1-1.2,0.8-2l-8.1-19.3C67.2-65.6,66.3-65.9,65.5-65.6z"/>
<polygon fill="#FFFFFF" points="60.3,-41.1 50.8,-37.1 52.1,-34 61.6,-38 "/>
<polygon fill="#FFFFFF" points="52.3,-60 42.8,-56 44.1,-52.9 53.6,-56.9 "/>
</g>
<path id="SPKR" fill="#1D1D1B" d="M75.8-1.1c-9.9,0-17.9-8-17.9-17.9S65.9-37,75.8-37s17.9,8,17.9,17.9S85.7-1.1,75.8-1.1z"/>
<path fill="#333333" d="M75.8-15.6c-1.9,0-3.4-1.5-3.4-3.4s1.5-3.4,3.4-3.4c1.9,0,3.4,1.5,3.4,3.4S77.7-15.6,75.8-15.6z"/>
<polygon fill="#F8B133" points="37.1,-46 25.4,-46 25.4,-25 37.1,-25 "/>
<polygon fill="#1D1D1B" points="-31.8,-47.4 -43.7,-35.5 -31.8,-23.6 -19.9,-35.5 "/>
<polygon fill="#BDD1CF" points="-36.8,-54.6 -43.6,-59 -47.5,-52.9 -40.7,-48.5 "/>
</symbol>
<symbol id="calliope_mini_backside" viewBox="-149.4 -131 296.7 262.1">
<g>
<g>
<path fill="#034854" d="M-78.2,127.5L-78.2,127.5c6.2,4.6,14.6,4.8,20.9,0.5c12.5-8.4,34.7-21,56-21c23.2,0,45.7,13.5,56.4,21
c4.3,3,9.8,3.8,14.7,2l0.6-0.2c7.3-2.6,11.8-9.8,11-17.4c-1.7-15.4-3-41.9,13-62.9c16.8-21.9,31.7-31.2,42.3-34.8
c5.9-2,9.9-7.4,10.4-13.6v0c0.5-8-5.1-13.6-12.3-17c-12-5.7-30.8-15.7-42.8-36.2C77.6-77,79-103.4,80.6-114.8
c0.7-5.1-1.6-10.1-5.9-12.8c-4.8-3-11.9-4.6-21.4,1.5c-5.5,3.6-12,8.6-20.8,12c-10.8,4.1-16.9,5.5-20.3,5.8
c-2.4,0.2-4.4,1.8-5.2,4c-1.1,2.9-3.4,6.2-8.2,6.2c-5,0-7.2-3.6-8.2-6.6c-0.8-2.5-3.3-3.4-5.9-3.7c-4.9-0.4-12.5-2.4-20.5-6.1
c-7.1-3.3-14-7.9-20.4-12.7c-5.5-4.1-15-5.5-20.4-1.3l0,0c-5.7,4.4-7.4,11.7-6.5,18.8c1.9,15.3,1.1,43.3-16.7,64.2
C-117.4-24.6-128-19.2-137-16.3c-3.9,1.3-11.4,5.4-12.3,14.1s3,14.5,10.9,18.4c12.3,6.1,30.5,17.2,42.1,34.1
c15.1,22,15.1,48.1,13.1,61.7C-83.9,117.7-82.8,124.1-78.2,127.5z"/>
<g id="holes_5_">
<g display="none">
<g display="inline">
<path fill="#EFDA48" d="M-54.6-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-53.1-89.3-54.6-89.3z
M-54.6-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-53.9-93.1-54.6-93.1z"/>
<path fill="#1D1D1B" d="M-54.6-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-53.9-93.1-54.6-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-45.8-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-44.3-89.3-45.8-89.3z
M-45.8-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-45.1-93.1-45.8-93.1z"/>
<path fill="#1D1D1B" d="M-45.8-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-45.1-93.1-45.8-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-37-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-35.5-89.3-37-89.3z
M-37-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-36.3-93.1-37-93.1z"/>
<path fill="#1D1D1B" d="M-37-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-36.3-93.1-37-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-28.2-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-26.7-89.3-28.2-89.3z
M-28.2-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-27.5-93.1-28.2-93.1z"/>
<path fill="#1D1D1B" d="M-28.2-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-27.5-93.1-28.2-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-19.3-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-17.9-89.3-19.3-89.3z
M-19.3-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-18.7-93.1-19.3-93.1z"/>
<path fill="#1D1D1B" d="M-19.3-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-18.7-93.1-19.3-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-10.5-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-9.1-89.3-10.5-89.3z
M-10.5-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-9.8-93.1-10.5-93.1z"/>
<path fill="#1D1D1B" d="M-10.5-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-9.8-93.1-10.5-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-1.7-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-0.3-89.3-1.7-89.3z M-1.7-93.1
c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-1-93.1-1.7-93.1z"/>
<path fill="#1D1D1B" d="M-1.7-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-1-93.1-1.7-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M7.1-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S8.5-89.3,7.1-89.3z M7.1-93.1
c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S7.8-93.1,7.1-93.1z"/>
<path fill="#1D1D1B" d="M7.1-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S7.8-93.1,7.1-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M15.9-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S17.3-89.3,15.9-89.3z M15.9-93.1
c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S16.6-93.1,15.9-93.1z"/>
<path fill="#1D1D1B" d="M15.9-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S16.6-93.1,15.9-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M24.7-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S26.1-89.3,24.7-89.3z
M24.7-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S25.4-93.1,24.7-93.1z"/>
<path fill="#1D1D1B" d="M24.7-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S25.4-93.1,24.7-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M33.5-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S35-89.3,33.5-89.3z M33.5-93.1
c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S34.2-93.1,33.5-93.1z"/>
<path fill="#1D1D1B" d="M33.5-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S34.2-93.1,33.5-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M42.3-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S43.8-89.3,42.3-89.3z M42.3-93.1
c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S43-93.1,42.3-93.1z"/>
<path fill="#1D1D1B" d="M42.3-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S43-93.1,42.3-93.1z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M51.1-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S52.6-89.3,51.1-89.3z M51.1-93.1
c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S51.8-93.1,51.1-93.1z"/>
<path fill="#1D1D1B" d="M51.1-93.1c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S51.8-93.1,51.1-93.1z"/>
</g>
</g>
<g display="none">
<g display="inline">
<path fill="#EFDA48" d="M-54.6-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-53.1-80.4-54.6-80.4z
M-54.6-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-53.3-83.7-53.9-84.3-54.6-84.3z"/>
<path fill="#1D1D1B" d="M-54.6-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2
C-53.3-83.7-53.9-84.3-54.6-84.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-45.8-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-44.3-80.4-45.8-80.4z
M-45.8-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-44.5-83.7-45.1-84.3-45.8-84.3z"/>
<path fill="#1D1D1B" d="M-45.8-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2
C-44.5-83.7-45.1-84.3-45.8-84.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-37-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-35.5-80.4-37-80.4z
M-37-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-35.7-83.7-36.3-84.3-37-84.3z"/>
<path fill="#1D1D1B" d="M-37-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2
C-35.7-83.7-36.3-84.3-37-84.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-28.2-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-26.7-80.4-28.2-80.4z
M-28.2-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C-26.9-83.7-27.5-84.3-28.2-84.3z"/>
<path fill="#1D1D1B" d="M-28.2-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2
C-26.9-83.7-27.5-84.3-28.2-84.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-19.3-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-17.9-80.4-19.3-80.4z
M-19.3-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C-18.1-83.7-18.7-84.3-19.3-84.3z"/>
<path fill="#1D1D1B" d="M-19.3-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2
C-18.1-83.7-18.7-84.3-19.3-84.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-10.5-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-9.1-80.4-10.5-80.4z
M-10.5-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C-9.3-83.7-9.8-84.3-10.5-84.3z"/>
<path fill="#1D1D1B" d="M-10.5-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2
C-9.3-83.7-9.8-84.3-10.5-84.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-1.7-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-0.3-80.4-1.7-80.4z M-1.7-84.3
c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C-0.5-83.7-1-84.3-1.7-84.3z"/>
<path fill="#1D1D1B" d="M-1.7-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C-0.5-83.7-1-84.3-1.7-84.3z
"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M7.1-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S8.5-80.4,7.1-80.4z M7.1-84.3
c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C8.3-83.7,7.8-84.3,7.1-84.3z"/>
<path fill="#1D1D1B" d="M7.1-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C8.3-83.7,7.8-84.3,7.1-84.3z
"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M15.9-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S17.3-80.4,15.9-80.4z M15.9-84.3
c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C17.1-83.7,16.6-84.3,15.9-84.3z"/>
<path fill="#1D1D1B" d="M15.9-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2
C17.1-83.7,16.6-84.3,15.9-84.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M24.7-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S26.1-80.4,24.7-80.4z
M24.7-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C25.9-83.7,25.4-84.3,24.7-84.3z"/>
<path fill="#1D1D1B" d="M24.7-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2
C25.9-83.7,25.4-84.3,24.7-84.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M33.5-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S35-80.4,33.5-80.4z M33.5-84.3
c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C34.8-83.7,34.2-84.3,33.5-84.3z"/>
<path fill="#1D1D1B" d="M33.5-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2
C34.8-83.7,34.2-84.3,33.5-84.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M42.3-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S43.8-80.4,42.3-80.4z M42.3-84.3
c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C43.6-83.7,43-84.3,42.3-84.3z"/>
<path fill="#1D1D1B" d="M42.3-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2
C43.6-83.7,43-84.3,42.3-84.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M51.1-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S52.6-80.4,51.1-80.4z M51.1-84.3
c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C52.4-83.7,51.8-84.3,51.1-84.3z"/>
<path fill="#1D1D1B" d="M51.1-84.3c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2
C52.4-83.7,51.8-84.3,51.1-84.3z"/>
</g>
</g>
<g display="none">
<g display="inline">
<path fill="#EFDA48" d="M-19.3-63.5c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-17.9-63.5-19.3-63.5z
M-19.3-67.4c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C-18.1-66.8-18.7-67.4-19.3-67.4z"/>
<path fill="#1D1D1B" d="M-19.3-67.4c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2
C-18.1-66.8-18.7-67.4-19.3-67.4z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-10.5-63.5c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-9.1-63.5-10.5-63.5z
M-10.5-67.4c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C-9.3-66.8-9.8-67.4-10.5-67.4z"/>
<path fill="#1D1D1B" d="M-10.5-67.4c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2
C-9.3-66.8-9.8-67.4-10.5-67.4z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-1.7-63.5c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-0.3-63.5-1.7-63.5z M-1.7-67.4
c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C-0.5-66.8-1-67.4-1.7-67.4z"/>
<path fill="#1D1D1B" d="M-1.7-67.4c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C-0.5-66.8-1-67.4-1.7-67.4z
"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M7.1-63.5c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S8.5-63.5,7.1-63.5z M7.1-67.4
c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C8.3-66.8,7.8-67.4,7.1-67.4z"/>
<path fill="#1D1D1B" d="M7.1-67.4c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C8.3-66.8,7.8-67.4,7.1-67.4z
"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M15.9-63.5c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S17.3-63.5,15.9-63.5z M15.9-67.4
c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C17.1-66.8,16.6-67.4,15.9-67.4z"/>
<path fill="#1D1D1B" d="M15.9-67.4c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2
C17.1-66.8,16.6-67.4,15.9-67.4z"/>
</g>
</g>
<g display="none">
<g display="inline">
<polygon fill="#EFDA48" points="96,28 92.4,31.6 96,35.2 99.6,31.6 "/>
<path fill="#1D1D1B" d="M95.1,30.8c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8
C96.4,30.3,95.6,30.3,95.1,30.8z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M103,28.6c-1,1-2.7,1-3.7,0s-1-2.7,0-3.7s2.7-1,3.7,0S104,27.5,103,28.6z M100.3,25.8
c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8C101.6,25.3,100.8,25.3,100.3,25.8z"/>
<path fill="#1D1D1B" d="M100.3,25.8c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8
C101.6,25.3,100.8,25.3,100.3,25.8z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M107.7,24c-1,1-2.7,1-3.7,0c-1-1-1-2.7,0-3.7s2.7-1,3.7,0S108.7,23,107.7,24z M104.9,21.3
c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8C106.2,20.8,105.4,20.8,104.9,21.3z"/>
<path fill="#1D1D1B" d="M104.9,21.3c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8
C106.2,20.8,105.4,20.8,104.9,21.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M113,18.7c-1,1-2.7,1-3.7,0s-1-2.7,0-3.7c1-1,2.7-1,3.7,0S114,17.7,113,18.7z M110.2,16
c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8C111.5,15.5,110.7,15.5,110.2,16z"/>
<path fill="#1D1D1B" d="M110.2,16c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8
C111.5,15.5,110.7,15.5,110.2,16z"/>
</g>
</g>
<g display="none">
<g display="inline">
<polygon fill="#EFDA48" points="-110.4,17 -114,13.4 -117.7,17 -114,20.7 "/>
<path fill="#1D1D1B" d="M-113.2,16.2c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0
C-112.7,17.5-112.7,16.7-113.2,16.2z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-111,24.1c-1-1-1-2.7,0-3.7s2.7-1,3.7,0c1,1,1,2.7,0,3.7S-110,25.1-111,24.1z M-108.3,21.3
c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0C-107.8,22.6-107.8,21.8-108.3,21.3z"/>
<path fill="#1D1D1B" d="M-108.3,21.3c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0
C-107.8,22.6-107.8,21.8-108.3,21.3z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-106.4,28.7c-1-1-1-2.7,0-3.7c1-1,2.7-1,3.7,0c1,1,1,2.7,0,3.7C-103.7,29.8-105.4,29.8-106.4,28.7z
M-103.7,26c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8s1.3,0.5,1.8,0C-103.2,27.3-103.2,26.5-103.7,26z"/>
<path fill="#1D1D1B" d="M-103.7,26c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8s1.3,0.5,1.8,0
C-103.2,27.3-103.2,26.5-103.7,26z"/>
</g>
<g display="inline">
<path fill="#EFDA48" d="M-101.2,34c-1-1-1-2.7,0-3.7c1-1,2.7-1,3.7,0c1,1,1,2.7,0,3.7C-98.5,35-100.1,35-101.2,34z
M-98.4,31.3c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8s1.3,0.5,1.8,0C-97.9,32.6-97.9,31.8-98.4,31.3z"/>
<path fill="#1D1D1B" d="M-98.4,31.3c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8s1.3,0.5,1.8,0
C-97.9,32.6-97.9,31.8-98.4,31.3z"/>
</g>
</g>
</g>
<path fill="#FFFFFF" d="M130.1-10.2c-5,0-10.1,5.1-10.1,10.1S125.1,10,130.1,10c5,0,10.1-5.1,10.1-10.1S135-10.2,130.1-10.2z"/>
<path fill="#FFFFFF" d="M64.4,104.8c-5.4,0-9.9,4.4-9.9,9.9c0,5.4,4.4,9.9,9.9,9.9s9.9-4.4,9.9-9.9
C74.3,109.2,69.8,104.8,64.4,104.8z"/>
<path fill="#FFFFFF" d="M-67.6,104.3c-5.7,0-10.4,4.6-10.4,10.4s4.6,10.4,10.4,10.4s10.4-4.6,10.4-10.4S-61.9,104.3-67.6,104.3z"
/>
<path fill="#FFFFFF" d="M-134.6-10.2c-5.6,0-10.1,4.5-10.1,10.1s4.5,11.4,10.1,11.4s10.1-5.8,10.1-11.4S-129-10.2-134.6-10.2z"/>
<path fill="#FFFFFF" d="M-67.6-124.7c-5.6,0-10.1,4.5-10.1,10.1s4.5,10.1,10.1,10.1c5.6,0,10.1-4.5,10.1-10.1
S-62-124.7-67.6-124.7z"/>
<path fill="#FFFFFF" d="M64.4-124c-5.7,0-10.4,4.6-10.4,10.4s4.6,10.4,10.4,10.4s10.4-4.6,10.4-10.4S70.1-124,64.4-124z"/>
</g>
</g>
</symbol>
<g id="Ebene_1">
<use xlink:href="#Mini_front" width="242.4" height="214.1" id="XMLID_11_" x="-121.4" y="-112.4" transform="matrix(1 0 0 -1 126.0595 105.6499)" overflow="visible"/>
<rect x="69.7" y="101.1" fill="#1D1D1B" width="10.1" height="6.1"/>
<path fill="#FFFFFF" d="M30.1,125.2c0,0.3,0,0.5-0.1,0.7c-0.1,0.2-0.1,0.4-0.2,0.5c-0.1,0.1-0.2,0.2-0.4,0.3
c-0.2,0.1-0.3,0.1-0.5,0.1c-0.2,0-0.4,0-0.5-0.1c-0.2-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.2-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.7v-0.9
c0-0.3,0-0.5,0.1-0.7c0.1-0.2,0.1-0.4,0.2-0.5c0.1-0.1,0.2-0.2,0.4-0.3c0.2-0.1,0.3-0.1,0.5-0.1c0.2,0,0.4,0,0.5,0.1
c0.2,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.3,0.3,0.5c0.1,0.2,0.1,0.4,0.1,0.7V125.2z M28,125.1l1.5-1.2c0-0.3-0.1-0.5-0.2-0.6
c-0.1-0.1-0.3-0.2-0.5-0.2c-0.3,0-0.5,0.1-0.6,0.3c-0.1,0.2-0.2,0.4-0.2,0.8V125.1z M29.6,124.4l-1.5,1.2c0,0.3,0.1,0.4,0.2,0.6
c0.1,0.1,0.3,0.2,0.5,0.2c0.3,0,0.5-0.1,0.6-0.3c0.1-0.2,0.2-0.4,0.2-0.8V124.4z"/>
<path fill="#FFFFFF" d="M92.7,18h-4v-0.8h4V18z"/>
<path fill="#FFFFFF" d="M162.3,17.3h1.7v0.8h-1.7v1.9h-0.8v-1.9h-1.7v-0.8h1.7v-1.8h0.8V17.3z"/>
<path fill="#FFFFFF" d="M222.1,124.5h0.4c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.2-0.1c0.1-0.1,0.1-0.1,0.2-0.2
c0-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.2-0.5c-0.1-0.1-0.3-0.2-0.5-0.2c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0.1-0.2,0.1
c-0.1,0.1-0.1,0.1-0.1,0.2s-0.1,0.2-0.1,0.3h-0.5c0-0.1,0-0.3,0.1-0.4c0.1-0.1,0.1-0.2,0.2-0.3c0.1-0.1,0.2-0.2,0.4-0.2
c0.1-0.1,0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1c0.1,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.2,0.3c0.1,0.1,0.1,0.3,0.1,0.5
c0,0.1,0,0.2,0,0.2s-0.1,0.2-0.1,0.2c0,0.1-0.1,0.1-0.2,0.2c-0.1,0.1-0.2,0.1-0.3,0.2c0.1,0,0.2,0.1,0.3,0.2
c0.1,0.1,0.2,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.1,0.3s0,0.2,0,0.3c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.3-0.3,0.4
c-0.1,0.1-0.2,0.2-0.4,0.2c-0.2,0.1-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1c-0.2,0-0.3-0.1-0.4-0.2c-0.1-0.1-0.2-0.2-0.3-0.3
c-0.1-0.1-0.1-0.3-0.1-0.5h0.5c0,0.1,0,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.2s0.1,0.1,0.2,0.1c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.3,0
c0.1,0,0.2-0.1,0.2-0.1c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2
c-0.1-0.1-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0h-0.4V124.5z"/>
<path fill="#FFFFFF" d="M90.2,203.7h-0.5v-3.3l-1,0.4v-0.5l1.5-0.6h0V203.7z"/>
<path fill="#FFFFFF" d="M163.8,203.7h-2.6v-0.4l1.3-1.4c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.1-0.2,0.2-0.3c0-0.1,0.1-0.2,0.1-0.2
c0-0.1,0-0.2,0-0.2c0-0.1,0-0.2,0-0.3c0-0.1-0.1-0.2-0.1-0.2c-0.1-0.1-0.1-0.1-0.2-0.1c-0.1,0-0.2-0.1-0.3-0.1
c-0.1,0-0.2,0-0.3,0.1c-0.1,0-0.2,0.1-0.2,0.2c-0.1,0.1-0.1,0.2-0.1,0.3c0,0.1,0,0.2,0,0.3h-0.5c0-0.2,0-0.3,0.1-0.5
c0.1-0.1,0.1-0.3,0.2-0.4c0.1-0.1,0.2-0.2,0.4-0.3c0.2-0.1,0.3-0.1,0.5-0.1c0.2,0,0.4,0,0.5,0.1c0.1,0.1,0.3,0.1,0.4,0.2
c0.1,0.1,0.2,0.2,0.2,0.3c0.1,0.1,0.1,0.3,0.1,0.4c0,0.1,0,0.2-0.1,0.3c0,0.1-0.1,0.2-0.2,0.3c-0.1,0.1-0.1,0.2-0.2,0.3
c-0.1,0.1-0.2,0.2-0.3,0.3l-1.1,1.1h2V203.7z"/>
<path fill="#FFFFFF" d="M131.7,128.3v-3.9h1.2c0.2,0,0.3,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2s0.2,0.2,0.3,0.3c0.1,0.1,0.1,0.3,0.1,0.5
c0,0.1,0,0.2-0.1,0.3c0,0.1-0.1,0.2-0.1,0.2c-0.1,0.1-0.1,0.1-0.2,0.2c-0.1,0.1-0.2,0.1-0.2,0.1c0.1,0,0.2,0.1,0.3,0.1
c0.1,0.1,0.2,0.1,0.2,0.2s0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.3-0.3,0.4
c-0.1,0.1-0.3,0.2-0.4,0.2c-0.2,0.1-0.3,0.1-0.5,0.1H131.7z M132.2,126h0.7c0.1,0,0.2,0,0.3,0c0.1,0,0.2-0.1,0.2-0.1
c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.1-0.2-0.2c-0.1,0-0.2-0.1-0.2-0.1
c-0.1,0-0.2,0-0.3,0h-0.7V126z M132.2,126.4v1.4h0.8c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.2-0.1c0.1-0.1,0.1-0.1,0.2-0.2
c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.1-0.1-0.2-0.1c-0.1,0-0.2-0.1-0.3-0.1H132.2z"/>
<path fill="#FFFFFF" d="M136.9,127.3h-1.3l-0.3,1h-0.5l1.3-3.9h0.4l1.2,3.9h-0.5L136.9,127.3z M135.7,126.8h1l-0.5-1.7L135.7,126.8
z"/>
<path fill="#FFFFFF" d="M141,124.8h-1.2v3.5h-0.5v-3.5H138v-0.4h2.9V124.8z"/>
<path fill="#FFFFFF" d="M144.3,124.8h-1.2v3.5h-0.5v-3.5h-1.2v-0.4h2.9V124.8z"/>
<path fill="#FFFFFF" d="M147.1,126.5h-1.6v1.4h1.9v0.4H145v-3.9h2.4v0.4h-1.9v1.3h1.6V126.5z"/>
<path fill="#FFFFFF" d="M149.6,126.7h-0.8v1.6h-0.5v-3.9h1.2c0.2,0,0.4,0,0.5,0.1s0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.4
c0.1,0.1,0.1,0.3,0.1,0.5c0,0.1,0,0.2-0.1,0.4c0,0.1-0.1,0.2-0.2,0.3c-0.1,0.1-0.1,0.2-0.2,0.2c-0.1,0.1-0.2,0.1-0.3,0.2l0.8,1.7
l0,0h-0.5L149.6,126.7z M148.8,126.3h0.7c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2
c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1s-0.2,0-0.3-0.1h-0.7V126.3z"/>
<path fill="#FFFFFF" d="M151.6,124.3h2.4v0.4H153v3.1h0.9v0.4h-2.4v-0.4h0.9v-3.1h-0.9V124.3z"/>
<path fill="#FFFFFF" d="M157.1,126.5h-1.6v1.4h1.9v0.4h-2.4v-3.9h2.4v0.4h-1.9v1.3h1.6V126.5z"/>
<path fill="#FFFFFF" d="M132.2,121.5h1.9v0.4h-2.4V118h0.5V121.5z"/>
<path fill="#FFFFFF" d="M136.8,120.9h-1.3l-0.3,1h-0.5l1.3-3.9h0.4l1.2,3.9h-0.5L136.8,120.9z M135.6,120.4h1l-0.5-1.7L135.6,120.4
z"/>
<path fill="#FFFFFF" d="M140.7,118l0,2.7c0,0.2,0,0.4-0.1,0.5c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.2,0.2-0.4,0.3
c-0.2,0.1-0.3,0.1-0.5,0.1c-0.2,0-0.4,0-0.5-0.1c-0.2-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.2-0.3-0.3-0.4c-0.1-0.2-0.1-0.3-0.1-0.5
l0-2.7h0.5l0,2.7c0,0.1,0,0.2,0.1,0.3c0,0.1,0.1,0.2,0.2,0.3s0.1,0.1,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1s0.2,0,0.3-0.1
c0.1,0,0.2-0.1,0.2-0.2c0.1-0.1,0.1-0.2,0.2-0.3c0-0.1,0.1-0.2,0.1-0.3l0-2.7H140.7z"/>
<path fill="#FFFFFF" d="M144.2,118.4H143v3.5h-0.5v-3.5h-1.2V118h2.9V118.4z"/>
<path fill="#FFFFFF" d="M147,120.9c0-0.1,0-0.2-0.1-0.3s-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1c-0.1,0-0.2-0.1-0.3-0.1
c-0.1,0-0.3-0.1-0.4-0.2c-0.1-0.1-0.3-0.1-0.4-0.2s-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.3-0.1-0.4c0-0.2,0-0.3,0.1-0.5
c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2c0.2,0,0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1c0.2,0.1,0.3,0.1,0.4,0.2
s0.2,0.2,0.3,0.4s0.1,0.3,0.1,0.5H147c0-0.1,0-0.2-0.1-0.3s-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.2-0.2c-0.1,0-0.2-0.1-0.3-0.1
c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0.1-0.2,0.1c-0.1,0.1-0.1,0.1-0.2,0.2s-0.1,0.2-0.1,0.3c0,0.1,0,0.2,0.1,0.3
c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1
c0.1,0.1,0.2,0.1,0.3,0.2s0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.1,0.3c0,0.1,0,0.2,0,0.3c0,0.2,0,0.3-0.1,0.5
c-0.1,0.1-0.2,0.2-0.3,0.3s-0.3,0.2-0.4,0.2c-0.2,0-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1c-0.2-0.1-0.3-0.1-0.4-0.2
c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5h0.5c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.2,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1
c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.3,0c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2C146.9,121.1,147,121,147,120.9z"/>
<path fill="#FFFFFF" d="M148.8,120.3v1.6h-0.5V118h1.3c0.2,0,0.3,0,0.5,0.1c0.2,0.1,0.3,0.1,0.4,0.2s0.2,0.2,0.3,0.4
c0.1,0.1,0.1,0.3,0.1,0.5s0,0.4-0.1,0.5c-0.1,0.1-0.2,0.3-0.3,0.4s-0.3,0.2-0.4,0.2c-0.2,0.1-0.3,0.1-0.5,0.1H148.8z M148.8,119.9
h0.8c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2-0.1-0.3
c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.2c-0.1,0-0.2-0.1-0.3-0.1h-0.8V119.9z"/>
<path fill="#FFFFFF" d="M152.9,120.3h-0.8v1.6h-0.5V118h1.2c0.2,0,0.4,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.4
c0.1,0.1,0.1,0.3,0.1,0.5c0,0.1,0,0.2-0.1,0.4s-0.1,0.2-0.2,0.3c-0.1,0.1-0.1,0.2-0.2,0.2c-0.1,0.1-0.2,0.1-0.3,0.2l0.8,1.7l0,0
h-0.5L152.9,120.3z M152.1,119.9h0.7c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3
c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2s-0.2-0.1-0.3-0.1s-0.2,0-0.3-0.1h-0.7V119.9z"/>
<path fill="#FFFFFF" d="M157,120.1h-1.6v1.4h1.9v0.4h-2.4V118h2.4v0.4h-1.9v1.3h1.6V120.1z"/>
<path fill="#FFFFFF" d="M160.7,120.7c0,0.2-0.1,0.3-0.1,0.5c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.2,0.2-0.4,0.3
c-0.2,0.1-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.4-0.1c-0.1,0-0.3-0.1-0.4-0.2c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.2-0.2-0.4
c-0.1-0.1-0.1-0.3-0.1-0.4c0-0.1,0-0.3,0-0.4v-0.5c0-0.1,0-0.3,0-0.4c0-0.1,0.1-0.3,0.1-0.4c0-0.1,0.1-0.3,0.2-0.4
c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.2-0.1,0.4-0.2c0.1,0,0.3-0.1,0.4-0.1c0.2,0,0.4,0,0.5,0.1c0.2,0.1,0.3,0.1,0.4,0.3
c0.1,0.1,0.2,0.2,0.3,0.4c0.1,0.2,0.1,0.3,0.1,0.5h-0.5c0-0.1,0-0.2-0.1-0.3s-0.1-0.2-0.2-0.3c-0.1-0.1-0.1-0.1-0.2-0.2
c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0.1c-0.1,0-0.2,0.1-0.2,0.2c-0.1,0.1-0.1,0.1-0.2,0.2c0,0.1-0.1,0.2-0.1,0.3
c0,0.1,0,0.2-0.1,0.3c0,0.1,0,0.2,0,0.3v0.6c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.2,0.2
c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.2-0.2c0.1-0.1,0.1-0.2,0.2-0.3
s0.1-0.2,0.1-0.3H160.7z"/>
<path fill="#FFFFFF" d="M164,121.9h-0.5v-1.8h-1.6v1.8h-0.5V118h0.5v1.7h1.6V118h0.5V121.9z"/>
<path fill="#FFFFFF" d="M167,120.1h-1.6v1.4h1.9v0.4h-2.4V118h2.4v0.4h-1.9v1.3h1.6V120.1z"/>
<path fill="#FFFFFF" d="M169.5,120.3h-0.8v1.6h-0.5V118h1.2c0.2,0,0.4,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.4
c0.1,0.1,0.1,0.3,0.1,0.5c0,0.1,0,0.2-0.1,0.4c0,0.1-0.1,0.2-0.2,0.3s-0.1,0.2-0.2,0.2c-0.1,0.1-0.2,0.1-0.3,0.2l0.8,1.7l0,0h-0.5
L169.5,120.3z M168.7,119.9h0.7c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3
c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1s-0.2,0-0.3-0.1h-0.7V119.9z"/>
<path fill="#FFFFFF" d="M38.6,121.8h-0.8v1.6h-0.5v-3.9h1.2c0.2,0,0.4,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.4
c0.1,0.1,0.1,0.3,0.1,0.5c0,0.1,0,0.2-0.1,0.4s-0.1,0.2-0.2,0.3c-0.1,0.1-0.1,0.2-0.2,0.2c-0.1,0.1-0.2,0.1-0.3,0.2l0.8,1.7l0,0
h-0.5L38.6,121.8z M37.8,121.4h0.7c0.1,0,0.2,0,0.3-0.1s0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3
c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3-0.1h-0.7V121.4z"/>
<path fill="#FFFFFF" d="M43.2,122.9c-0.2,0.2-0.4,0.3-0.6,0.4s-0.4,0.1-0.7,0.1c-0.2,0-0.3,0-0.4-0.1c-0.1,0-0.3-0.1-0.4-0.2
c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.2-0.2-0.4c-0.1-0.1-0.1-0.3-0.1-0.4c0-0.1,0-0.3,0-0.4v-0.5c0-0.1,0-0.3,0-0.4
c0-0.1,0.1-0.3,0.1-0.4c0.1-0.1,0.1-0.3,0.2-0.4c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.2-0.2,0.4-0.2c0.1,0,0.3-0.1,0.4-0.1
c0.2,0,0.4,0,0.5,0.1c0.2,0.1,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.4c0.1,0.1,0.1,0.3,0.1,0.5h-0.5c0-0.1-0.1-0.2-0.1-0.3
s-0.1-0.2-0.2-0.2c-0.1-0.1-0.1-0.1-0.2-0.2c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0.1c-0.1,0-0.2,0.1-0.2,0.2
c-0.1,0.1-0.1,0.1-0.2,0.2c0,0.1-0.1,0.2-0.1,0.3c0,0.1,0,0.2-0.1,0.3c0,0.1,0,0.2,0,0.3v0.5c0,0.1,0,0.2,0,0.3
c0,0.1,0,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3c0.1,0.1,0.1,0.2,0.2,0.2c0.1,0.1,0.2,0.1,0.2,0.2c0.1,0,0.2,0.1,0.3,0.1
c0.1,0,0.1,0,0.2,0c0.1,0,0.1,0,0.2,0c0.1,0,0.1-0.1,0.2-0.1c0.1,0,0.1-0.1,0.2-0.1l0-0.9h-0.8v-0.4h1.3L43.2,122.9z"/>
<path fill="#FFFFFF" d="M43.9,123.4v-3.9h1.2c0.2,0,0.3,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2s0.2,0.2,0.3,0.3c0.1,0.1,0.1,0.3,0.1,0.5
c0,0.1,0,0.2-0.1,0.3c0,0.1-0.1,0.2-0.1,0.2c-0.1,0.1-0.1,0.1-0.2,0.2c-0.1,0.1-0.2,0.1-0.2,0.1c0.1,0,0.2,0.1,0.3,0.1
c0.1,0.1,0.2,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.3-0.3,0.4
c-0.1,0.1-0.3,0.2-0.4,0.2c-0.2,0.1-0.3,0.1-0.5,0.1H43.9z M44.4,121.1h0.7c0.1,0,0.2,0,0.3,0c0.1,0,0.2-0.1,0.2-0.1
c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.1-0.2-0.2c-0.1,0-0.2-0.1-0.2-0.1
c-0.1,0-0.2,0-0.3,0h-0.7V121.1z M44.4,121.6v1.4h0.8c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.2-0.1c0.1-0.1,0.1-0.1,0.2-0.2
c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2s-0.1-0.1-0.2-0.1c-0.1,0-0.2-0.1-0.3-0.1H44.4z"/>
<path fill="#FFFFFF" d="M49.3,123h1.9v0.4h-2.4v-3.9h0.5V123z"/>
<path fill="#FFFFFF" d="M54.2,121.6h-1.6v1.4h1.9v0.4H52v-3.9h2.4v0.4h-1.9v1.3h1.6V121.6z"/>
<path fill="#FFFFFF" d="M55.3,123.4v-3.9h0.9c0.3,0,0.5,0.1,0.7,0.1c0.2,0.1,0.4,0.2,0.5,0.4c0.1,0.2,0.3,0.4,0.3,0.6
c0.1,0.2,0.1,0.5,0.1,0.7v0.3c0,0.3,0,0.5-0.1,0.7c-0.1,0.2-0.2,0.4-0.3,0.6c-0.1,0.2-0.3,0.3-0.5,0.4c-0.2,0.1-0.5,0.1-0.7,0.1
H55.3z M55.8,119.9v3.1h0.4c0.2,0,0.4,0,0.6-0.1c0.2-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.2-0.3,0.2-0.4c0-0.2,0.1-0.4,0.1-0.6v-0.3
c0-0.2,0-0.4-0.1-0.6c-0.1-0.2-0.1-0.3-0.2-0.4c-0.1-0.1-0.2-0.2-0.4-0.3s-0.3-0.1-0.6-0.1H55.8z"/>
<path fill="#FFFFFF" d="M37.8,117h1.9v0.4h-2.4v-3.9h0.5V117z"/>
<path fill="#FFFFFF" d="M42.4,116.4h-1.3l-0.3,1h-0.5l1.3-3.9H42l1.2,3.9h-0.5L42.4,116.4z M41.3,116h1l-0.5-1.7L41.3,116z"/>
<path fill="#FFFFFF" d="M46.4,116.9c-0.2,0.2-0.4,0.3-0.6,0.4s-0.4,0.1-0.7,0.1c-0.2,0-0.3,0-0.4-0.1c-0.1,0-0.3-0.1-0.4-0.2
c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.2-0.2-0.4c-0.1-0.1-0.1-0.3-0.1-0.4c0-0.1,0-0.3,0-0.4v-0.5c0-0.1,0-0.3,0-0.4
c0-0.1,0.1-0.3,0.1-0.4s0.1-0.3,0.2-0.4c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.2-0.2,0.4-0.2s0.3-0.1,0.4-0.1c0.2,0,0.4,0,0.5,0.1
c0.2,0.1,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.4c0.1,0.1,0.1,0.3,0.1,0.5h-0.5c0-0.1-0.1-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2
c-0.1-0.1-0.1-0.1-0.2-0.2c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0.1c-0.1,0-0.2,0.1-0.2,0.2s-0.1,0.1-0.2,0.2
c0,0.1-0.1,0.2-0.1,0.3c0,0.1,0,0.2-0.1,0.3c0,0.1,0,0.2,0,0.3v0.5c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3
c0.1,0.1,0.1,0.2,0.2,0.2c0.1,0.1,0.2,0.1,0.2,0.2c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.1,0,0.2,0c0.1,0,0.1,0,0.2,0
c0.1,0,0.1-0.1,0.2-0.1c0.1,0,0.1-0.1,0.2-0.1l0-0.9h-0.8v-0.4h1.3L46.4,116.9z"/>
<path fill="#FFFFFF" d="M49.4,115.6h-1.6v1.4h1.9v0.4h-2.4v-3.9h2.4v0.4h-1.9v1.3h1.6V115.6z"/>
<path fill="#FFFFFF" d="M52.6,116.5c0-0.1,0-0.2-0.1-0.3s-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1s-0.2-0.1-0.3-0.1
c-0.1,0-0.3-0.1-0.4-0.2c-0.1-0.1-0.3-0.1-0.4-0.2s-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.3-0.1-0.4c0-0.2,0-0.3,0.1-0.5
c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2s0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1c0.2,0.1,0.3,0.1,0.4,0.2
c0.1,0.1,0.2,0.2,0.3,0.4c0.1,0.1,0.1,0.3,0.1,0.5h-0.5c0-0.1,0-0.2-0.1-0.3s-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.2-0.2
c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0.1-0.2,0.1c-0.1,0.1-0.1,0.1-0.2,0.2c0,0.1-0.1,0.2-0.1,0.3
c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1
c0.1,0,0.2,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.3,0.2c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.1,0.3c0,0.1,0,0.2,0,0.3
c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.2c-0.2,0-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1
c-0.2-0.1-0.3-0.1-0.4-0.2c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5h0.5c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.2,0.2,0.2
c0.1,0.1,0.2,0.1,0.3,0.1s0.2,0,0.3,0c0.1,0,0.2,0,0.3,0c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2
C52.6,116.7,52.6,116.6,52.6,116.5z"/>
<path fill="#FFFFFF" d="M56,115.6h-1.6v1.4h1.9v0.4h-2.4v-3.9h2.4v0.4h-1.9v1.3H56V115.6z"/>
<path fill="#FFFFFF" d="M59.6,117.4h-0.5l-1.5-2.9l0,2.9h-0.5v-3.9h0.5l1.5,2.9l0-2.9h0.5V117.4z"/>
<path fill="#FFFFFF" d="M62.6,116.5c0-0.1,0-0.2-0.1-0.3c-0.1-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1s-0.2-0.1-0.3-0.1
c-0.1,0-0.3-0.1-0.4-0.2c-0.1-0.1-0.3-0.1-0.4-0.2c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.3-0.1-0.4c0-0.2,0-0.3,0.1-0.5
c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2c0.2,0,0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1c0.2,0.1,0.3,0.1,0.4,0.2
s0.2,0.2,0.3,0.4c0.1,0.1,0.1,0.3,0.1,0.5h-0.5c0-0.1,0-0.2-0.1-0.3s-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.2-0.2
c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0.1-0.2,0.1c-0.1,0.1-0.1,0.1-0.2,0.2c0,0.1-0.1,0.2-0.1,0.3
c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1
c0.1,0,0.2,0.1,0.3,0.1s0.2,0.1,0.3,0.2c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.1,0.3c0,0.1,0,0.2,0,0.3c0,0.2,0,0.3-0.1,0.5
c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.2c-0.2,0-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1c-0.2-0.1-0.3-0.1-0.4-0.2
c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5h0.5c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.2,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1
s0.2,0,0.3,0c0.1,0,0.2,0,0.3,0c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2C62.5,116.7,62.6,116.6,62.6,116.5z"/>
<path fill="#FFFFFF" d="M66.4,115.7c0,0.1,0,0.3,0,0.4c0,0.1-0.1,0.3-0.1,0.4c0,0.1-0.1,0.3-0.2,0.4c-0.1,0.1-0.2,0.2-0.3,0.3
c-0.1,0.1-0.2,0.2-0.3,0.2c-0.1,0-0.3,0.1-0.4,0.1s-0.3,0-0.4-0.1c-0.1,0-0.2-0.1-0.3-0.2c-0.1-0.1-0.2-0.2-0.3-0.3
c-0.1-0.1-0.1-0.2-0.2-0.4s-0.1-0.3-0.1-0.4c0-0.1,0-0.3,0-0.4v-0.4c0-0.1,0-0.3,0-0.4c0-0.1,0.1-0.3,0.1-0.4
c0-0.1,0.1-0.3,0.2-0.4c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.2-0.2,0.3-0.2c0.1,0,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1
c0.1,0.1,0.2,0.1,0.3,0.2s0.2,0.2,0.3,0.3c0.1,0.1,0.1,0.2,0.2,0.4c0,0.1,0.1,0.3,0.1,0.4c0,0.1,0,0.3,0,0.4V115.7z M65.9,115.3
c0-0.1,0-0.2,0-0.3c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.1-0.1-0.2-0.2
c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0.1s-0.2,0.1-0.2,0.2c-0.1,0.1-0.1,0.2-0.2,0.2c0,0.1-0.1,0.2-0.1,0.3
c0,0.1,0,0.2-0.1,0.3c0,0.1,0,0.2,0,0.3v0.5c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.2,0.2
s0.1,0.1,0.2,0.2c0.1,0,0.2,0.1,0.3,0.1s0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.2-0.2c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3
c0-0.1,0-0.2,0.1-0.3s0-0.2,0-0.3V115.3z"/>
<path fill="#FFFFFF" d="M68.4,115.8h-0.8v1.6h-0.5v-3.9h1.2c0.2,0,0.4,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.4
c0.1,0.1,0.1,0.3,0.1,0.5c0,0.1,0,0.2-0.1,0.4c0,0.1-0.1,0.2-0.2,0.3c-0.1,0.1-0.1,0.2-0.2,0.2c-0.1,0.1-0.2,0.1-0.3,0.2l0.8,1.7
l0,0h-0.5L68.4,115.8z M67.7,115.4h0.7c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3
c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2s-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3-0.1h-0.7V115.4z"/>
<path fill="#FFFFFF" d="M184.1,49.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7c-0.2-0.2-0.5-0.2-0.9-0.2h-1v1.8h1.1
C183.6,49.7,183.9,49.6,184.1,49.5z"/>
<path fill="#FFFFFF" d="M183.6,50.7h-1.5v2.1h1.3c0.4,0,0.7-0.1,0.9-0.3c0.2-0.2,0.3-0.4,0.3-0.7c0-0.4-0.1-0.6-0.3-0.8
C184.3,50.8,184,50.7,183.6,50.7z"/>
<path fill="#FFFFFF" d="M188.5,47.4c-1.3-2.9-4.8-4.2-7.7-2.9l-1.5,0.7c-2.9,1.3-4.2,4.8-2.9,7.7l6.2,13.9l12.1-5.5L188.5,47.4z
M185.5,53.6c-0.5,0.4-1.1,0.5-2,0.5H180v-0.9l0.8-0.2v-5.2l-0.8-0.2v-0.9h0.8h2.5c0.9,0,1.5,0.2,2,0.5c0.5,0.3,0.7,0.8,0.7,1.5
c0,0.3-0.1,0.6-0.3,0.9c-0.2,0.3-0.4,0.5-0.8,0.6c0.4,0.1,0.8,0.3,1,0.6c0.2,0.3,0.3,0.7,0.3,1.1C186.2,52.7,186,53.2,185.5,53.6z"
/>
<path fill="#FFFFFF" d="M157.7,98.3h-0.6l-0.1-0.5c-0.1-0.1-0.2-0.1-0.3-0.2c-0.1,0-0.3-0.1-0.4-0.1c-0.3,0-0.6,0.1-0.8,0.4
c-0.2,0.2-0.3,0.6-0.3,1V99c0,0.4,0.1,0.7,0.3,1c0.2,0.2,0.4,0.4,0.8,0.4c0.2,0,0.3,0,0.4-0.1c0.1,0,0.2-0.1,0.3-0.2l0.1-0.5h0.6
v0.8c-0.2,0.2-0.4,0.3-0.6,0.4c-0.2,0.1-0.5,0.2-0.8,0.2c-0.5,0-1-0.2-1.3-0.5c-0.3-0.4-0.5-0.8-0.5-1.4v-0.1c0-0.6,0.2-1,0.5-1.4
c0.3-0.4,0.8-0.5,1.3-0.5c0.3,0,0.6,0.1,0.8,0.2c0.2,0.1,0.4,0.3,0.6,0.4V98.3z"/>
<path fill="#FFFFFF" d="M158.4,100.4l0.3,0l1.2-3.4h0.8l1.2,3.4l0.3,0v0.5h-1.3v-0.5l0.3,0l-0.2-0.5h-1.3l-0.2,0.5l0.3,0v0.5h-1.3
V100.4z M159.8,99.3h0.9l-0.4-1.4h0L159.8,99.3z"/>
<path fill="#FFFFFF" d="M162.7,100.9v-0.5l0.4-0.1v-2.8l-0.4-0.1V97h0.4h0.8h0.4v0.5l-0.4,0.1v2.7h1.1l0-0.5h0.6v1.1H162.7z"/>
<path fill="#FFFFFF" d="M166.2,100.9v-0.5l0.4-0.1v-2.8l-0.4-0.1V97h0.4h0.8h0.4v0.5l-0.4,0.1v2.7h1.1l0-0.5h0.6v1.1H166.2z"/>
<path fill="#FFFFFF" d="M169.8,97.5V97h1.6v0.5l-0.4,0.1v2.8l0.4,0.1v0.5h-1.6v-0.5l0.4-0.1v-2.8L169.8,97.5z"/>
<path fill="#FFFFFF" d="M175.6,99c0,0.6-0.2,1-0.5,1.4c-0.3,0.4-0.8,0.6-1.3,0.6c-0.5,0-1-0.2-1.3-0.6c-0.3-0.4-0.5-0.8-0.5-1.4
v-0.1c0-0.6,0.2-1,0.5-1.4c0.3-0.4,0.7-0.6,1.3-0.6c0.5,0,1,0.2,1.3,0.6C175.4,97.9,175.6,98.4,175.6,99L175.6,99z M174.8,98.9
c0-0.4-0.1-0.7-0.3-1c-0.2-0.3-0.4-0.4-0.7-0.4s-0.6,0.1-0.7,0.4c-0.2,0.2-0.2,0.6-0.2,1V99c0,0.4,0.1,0.7,0.2,1
c0.2,0.3,0.4,0.4,0.7,0.4c0.3,0,0.6-0.1,0.7-0.4C174.7,99.7,174.8,99.4,174.8,98.9L174.8,98.9z"/>
<path fill="#FFFFFF" d="M178.1,97c0.4,0,0.8,0.1,1.1,0.3c0.3,0.2,0.4,0.5,0.4,0.9c0,0.4-0.1,0.7-0.4,0.9c-0.3,0.2-0.6,0.3-1.1,0.3
h-0.7v0.9l0.4,0.1v0.5h-1.6v-0.5l0.4-0.1v-2.8l-0.4-0.1V97h0.4H178.1z M177.4,98.9h0.7c0.2,0,0.4-0.1,0.5-0.2
c0.1-0.1,0.2-0.3,0.2-0.5c0-0.2-0.1-0.3-0.2-0.5c-0.1-0.1-0.3-0.2-0.5-0.2h-0.7V98.9z"/>
<path fill="#FFFFFF" d="M182.6,99.2h-1.3v1.1h1.3l0-0.5h0.6v1.1h-3.1v-0.5l0.4-0.1v-2.8l-0.4-0.1V97h0.4h2.7v1.1h-0.6l0-0.5h-1.2v1
h1.3V99.2z"/>
<path fill="#FFFFFF" d="M155.8,105.7l0,0.7c0.1-0.2,0.3-0.4,0.5-0.6c0.2-0.1,0.5-0.2,0.8-0.2c0.3,0,0.5,0.1,0.7,0.2
s0.3,0.3,0.4,0.5c0.1-0.2,0.3-0.4,0.5-0.5c0.2-0.1,0.4-0.2,0.7-0.2c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.2,0.4,0.3
c0.1,0.1,0.2,0.3,0.3,0.6c0.1,0.2,0.1,0.5,0.1,0.8v4.6h-1.3v-4.6c0-0.3-0.1-0.4-0.2-0.5c-0.1-0.1-0.2-0.1-0.4-0.1
c-0.2,0-0.3,0-0.4,0.1c-0.1,0.1-0.2,0.2-0.2,0.3v4.8H157v-4.6c0-0.2,0-0.4-0.1-0.5c-0.1-0.1-0.2-0.1-0.4-0.1c-0.2,0-0.3,0-0.4,0.1
c-0.1,0.1-0.2,0.2-0.2,0.3v4.8h-1.3v-6.3H155.8z"/>
<path fill="#FFFFFF" d="M162.8,105.7h3.3v5.1h1.9v1.1h-5.2v-1.1h1.9v-4h-1.9V105.7z M164.7,104.1c0-0.2,0.1-0.4,0.2-0.5
c0.1-0.1,0.3-0.2,0.6-0.2c0.3,0,0.5,0.1,0.6,0.2c0.1,0.1,0.2,0.3,0.2,0.5c0,0.2-0.1,0.4-0.2,0.5c-0.1,0.1-0.3,0.2-0.6,0.2
c-0.3,0-0.4-0.1-0.6-0.2C164.7,104.5,164.7,104.3,164.7,104.1z"/>
<path fill="#FFFFFF" d="M171.4,105.7l0.1,0.9c0.2-0.3,0.5-0.6,0.8-0.7c0.3-0.2,0.7-0.3,1.1-0.3c0.3,0,0.6,0,0.9,0.1
c0.3,0.1,0.5,0.2,0.7,0.4c0.2,0.2,0.3,0.5,0.4,0.8c0.1,0.3,0.2,0.7,0.2,1.1v3.9h-1.4v-3.9c0-0.3,0-0.5-0.1-0.6
c-0.1-0.2-0.1-0.3-0.3-0.4c-0.1-0.1-0.2-0.2-0.4-0.2c-0.2,0-0.3-0.1-0.5-0.1c-0.3,0-0.6,0.1-0.8,0.2c-0.2,0.1-0.4,0.3-0.5,0.5v4.5
h-1.4v-6.3H171.4z"/>
<path fill="#FFFFFF" d="M178,105.7h3.3v5.1h1.9v1.1H178v-1.1h1.9v-4H178V105.7z M179.8,104.1c0-0.2,0.1-0.4,0.2-0.5
c0.1-0.1,0.3-0.2,0.6-0.2c0.3,0,0.5,0.1,0.6,0.2c0.1,0.1,0.2,0.3,0.2,0.5c0,0.2-0.1,0.4-0.2,0.5c-0.1,0.1-0.3,0.2-0.6,0.2
c-0.3,0-0.4-0.1-0.6-0.2C179.9,104.5,179.8,104.3,179.8,104.1z"/>
<path fill="#FFFFFF" d="M165.9,82.8h-2.1c-0.3,0-0.6,0.3-0.6,0.6c0,0,0,1.8,0,1.6c0-1.3-1.1-2.4-2.4-2.4c-1.3,0-2.4,1.1-2.4,2.4
c0,0.2,0,1.6,0,2.6l-2.8,2.1c-1.9,1.5-0.9,4.5,1.5,4.5h0.6c0.2-1.8,0.8-3.9,1.9-5.3h0.1h2.5c1.1,1.3,1.6,3.5,1.9,5.3l0.8,0
c0.9,0,1.6-0.7,1.6-1.6v-6.1v-3.1C166.5,83.1,166.2,82.8,165.9,82.8z M159.9,84.1h2v1.3c0,0.4-0.3,0.8-0.8,0.8h-0.4
c-0.4,0-0.8-0.3-0.8-0.8V84.1z M159.4,88l0.9-1.7l0.5,1.7H159.4z M160.9,88l0.5-1.7l0.9,1.7H160.9z M163.6,86.5v-2.9h2.4v2.9H163.6
z"/>
<path fill="#FFFFFF" d="M162.8,94.3c-1.3-0.9-2.3-3.3-3.2-5.3v5.3L162.8,94.3z"/>
<polygon fill="#FFFFFF" points="120.5,134.9 106,134.9 93.1,121.7 59.6,121.6 59.6,120.9 93.4,120.9 106.3,134.2 120.5,134.2 "/>
<polygon fill="#FFFFFF" points="110.5,146.8 103.5,146.8 102.1,145.3 102.6,144.7 103.8,146 110.5,146 "/>
<path fill="#FFFFFF" d="M112.7,146.9v1.6h-0.5v-3.9h1.3c0.2,0,0.3,0,0.5,0.1c0.2,0.1,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.4
c0.1,0.1,0.1,0.3,0.1,0.5s0,0.4-0.1,0.5c-0.1,0.1-0.2,0.3-0.3,0.4c-0.1,0.1-0.3,0.2-0.4,0.2c-0.2,0.1-0.3,0.1-0.5,0.1H112.7z
M112.7,146.5h0.8c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.3-0.1s0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2-0.1-0.3
c0-0.1-0.1-0.2-0.2-0.2s-0.2-0.1-0.3-0.2c-0.1,0-0.2-0.1-0.3-0.1h-0.8V146.5z"/>
<path fill="#FFFFFF" d="M116.7,146.9H116v1.6h-0.5v-3.9h1.2c0.2,0,0.4,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.4
c0.1,0.1,0.1,0.3,0.1,0.5c0,0.1,0,0.2-0.1,0.4c0,0.1-0.1,0.2-0.2,0.3s-0.1,0.2-0.2,0.2c-0.1,0.1-0.2,0.1-0.3,0.2l0.8,1.7l0,0h-0.5
L116.7,146.9z M116,146.5h0.7c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3
c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2s-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3-0.1H116V146.5z"/>
<path fill="#FFFFFF" d="M121.3,146.8c0,0.1,0,0.3,0,0.4c0,0.1-0.1,0.3-0.1,0.4c0,0.1-0.1,0.3-0.2,0.4c-0.1,0.1-0.2,0.2-0.3,0.3
s-0.2,0.2-0.3,0.2c-0.1,0-0.3,0.1-0.4,0.1s-0.3,0-0.4-0.1c-0.1,0-0.2-0.1-0.3-0.2s-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.2-0.2-0.4
c0-0.1-0.1-0.3-0.1-0.4c0-0.1,0-0.3,0-0.4v-0.4c0-0.1,0-0.3,0-0.4c0-0.1,0.1-0.3,0.1-0.4c0-0.1,0.1-0.3,0.2-0.4
c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.2-0.2,0.3-0.2c0.1,0,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1c0.1,0.1,0.2,0.1,0.3,0.2
s0.2,0.2,0.3,0.3c0.1,0.1,0.1,0.2,0.2,0.4c0,0.1,0.1,0.3,0.1,0.4c0,0.1,0,0.3,0,0.4V146.8z M120.8,146.3c0-0.1,0-0.2,0-0.3
c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.1-0.1-0.2-0.2c-0.1,0-0.2-0.1-0.3-0.1
c-0.1,0-0.2,0-0.3,0.1c-0.1,0-0.2,0.1-0.2,0.2c-0.1,0.1-0.1,0.2-0.2,0.2c0,0.1-0.1,0.2-0.1,0.3c0,0.1,0,0.2-0.1,0.3
c0,0.1,0,0.2,0,0.3v0.5c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.2,0.2
c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0,0.2,0.1,0.3,0.1s0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.2-0.2c0.1-0.1,0.1-0.1,0.2-0.2
c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2,0.1-0.3s0-0.2,0-0.3V146.3z"/>
<path fill="#FFFFFF" d="M122.5,148.1h2v0.4h-2.6l0-0.4l2-3.1H122v-0.4h2.5l0,0.4L122.5,148.1z"/>
<path fill="#FFFFFF" d="M127.6,146.7h-1.6v1.4h1.9v0.4h-2.4v-3.9h2.4v0.4h-1.9v1.3h1.6V146.7z"/>
<path fill="#FFFFFF" d="M130.8,147.5c0-0.1,0-0.2-0.1-0.3s-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1s-0.2-0.1-0.3-0.1
c-0.1,0-0.3-0.1-0.4-0.2c-0.1-0.1-0.3-0.1-0.4-0.2c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.3-0.1-0.4s0-0.3,0.1-0.5
c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2c0.2,0,0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1c0.2,0.1,0.3,0.1,0.4,0.2
s0.2,0.2,0.3,0.4s0.1,0.3,0.1,0.5h-0.5c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.2-0.2
c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0.1-0.2,0.1c-0.1,0.1-0.1,0.1-0.2,0.2c0,0.1-0.1,0.2-0.1,0.3
c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1
c0.1,0,0.2,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.3,0.2s0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.1,0.3c0,0.1,0,0.2,0,0.3c0,0.2,0,0.3-0.1,0.5
c-0.1,0.1-0.2,0.2-0.3,0.3s-0.3,0.2-0.4,0.2c-0.2,0-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1c-0.2-0.1-0.3-0.1-0.4-0.2
c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5h0.5c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.2,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1
c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.3,0c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2C130.8,147.7,130.8,147.6,130.8,147.5z"/>
<path fill="#FFFFFF" d="M134.1,147.5c0-0.1,0-0.2-0.1-0.3c-0.1-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1s-0.2-0.1-0.3-0.1
c-0.1,0-0.3-0.1-0.4-0.2c-0.1-0.1-0.3-0.1-0.4-0.2c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.3-0.1-0.4s0-0.3,0.1-0.5
c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2c0.2,0,0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1c0.2,0.1,0.3,0.1,0.4,0.2
s0.2,0.2,0.3,0.4c0.1,0.1,0.1,0.3,0.1,0.5h-0.5c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.2-0.2
c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0.1-0.2,0.1c-0.1,0.1-0.1,0.1-0.2,0.2c0,0.1-0.1,0.2-0.1,0.3
c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1
c0.1,0,0.2,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.3,0.2c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.1,0.3c0,0.1,0,0.2,0,0.3
c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.2-0.3,0.3s-0.3,0.2-0.4,0.2c-0.2,0-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1
c-0.2-0.1-0.3-0.1-0.4-0.2c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5h0.5c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.2,0.2,0.2
c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.3,0c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2
C134.1,147.7,134.1,147.6,134.1,147.5z"/>
<path fill="#FFFFFF" d="M137.9,146.8c0,0.1,0,0.3,0,0.4c0,0.1-0.1,0.3-0.1,0.4c0,0.1-0.1,0.3-0.2,0.4c-0.1,0.1-0.2,0.2-0.3,0.3
s-0.2,0.2-0.3,0.2c-0.1,0-0.3,0.1-0.4,0.1s-0.3,0-0.4-0.1c-0.1,0-0.2-0.1-0.3-0.2s-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.2-0.2-0.4
c0-0.1-0.1-0.3-0.1-0.4c0-0.1,0-0.3,0-0.4v-0.4c0-0.1,0-0.3,0-0.4c0-0.1,0.1-0.3,0.1-0.4c0-0.1,0.1-0.3,0.2-0.4
c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.2-0.2,0.3-0.2c0.1,0,0.3-0.1,0.4-0.1s0.3,0,0.4,0.1c0.1,0.1,0.2,0.1,0.3,0.2s0.2,0.2,0.3,0.3
c0.1,0.1,0.1,0.2,0.2,0.4c0,0.1,0.1,0.3,0.1,0.4s0,0.3,0,0.4V146.8z M137.4,146.3c0-0.1,0-0.2,0-0.3c0-0.1,0-0.2-0.1-0.3
c0-0.1-0.1-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.1-0.1-0.2-0.2c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0.1
s-0.2,0.1-0.2,0.2c-0.1,0.1-0.1,0.2-0.2,0.2c0,0.1-0.1,0.2-0.1,0.3c0,0.1,0,0.2-0.1,0.3c0,0.1,0,0.2,0,0.3v0.5c0,0.1,0,0.2,0,0.3
c0,0.1,0,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.2,0.2c0.1,0.1,0.1,0.1,0.2,0.2s0.2,0.1,0.3,0.1s0.2,0,0.3-0.1
c0.1,0,0.2-0.1,0.2-0.2c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2,0.1-0.3c0-0.1,0-0.2,0-0.3V146.3z"/>
<path fill="#FFFFFF" d="M140,146.9h-0.8v1.6h-0.5v-3.9h1.2c0.2,0,0.4,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.4
c0.1,0.1,0.1,0.3,0.1,0.5c0,0.1,0,0.2-0.1,0.4c0,0.1-0.1,0.2-0.2,0.3s-0.1,0.2-0.2,0.2c-0.1,0.1-0.2,0.1-0.3,0.2l0.8,1.7l0,0h-0.5
L140,146.9z M139.2,146.5h0.7c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3
c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3-0.1h-0.7V146.5z"/>
<polygon fill="#FFFFFF" points="74.3,115.9 71.3,115.9 71.3,115.2 74,115.2 74.5,114.6 74.5,107.2 75.2,107.2 75.2,115 "/>
<path fill="#FFFFFF" d="M116.3,54l0,2.7c0,0.2,0,0.4-0.1,0.5s-0.2,0.3-0.3,0.4s-0.2,0.2-0.4,0.3c-0.2,0.1-0.3,0.1-0.5,0.1
c-0.2,0-0.4,0-0.5-0.1c-0.2-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.2-0.3-0.3-0.4c-0.1-0.2-0.1-0.3-0.1-0.5l0-2.7h0.5l0,2.7
c0,0.1,0,0.2,0.1,0.3c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1
c0.1,0,0.2-0.1,0.2-0.2c0.1-0.1,0.1-0.2,0.2-0.3s0.1-0.2,0.1-0.3l0-2.7H116.3z"/>
<path fill="#FFFFFF" d="M119.2,56.9c0-0.1,0-0.2-0.1-0.3c-0.1-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1s-0.2-0.1-0.3-0.1
c-0.1,0-0.3-0.1-0.4-0.2c-0.1-0.1-0.3-0.1-0.4-0.2c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.3-0.1-0.4c0-0.2,0-0.3,0.1-0.5
c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2s0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1c0.2,0.1,0.3,0.1,0.4,0.2s0.2,0.2,0.3,0.4
c0.1,0.1,0.1,0.3,0.1,0.5h-0.5c0-0.1,0-0.2-0.1-0.3s-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.2-0.2c-0.1,0-0.2-0.1-0.3-0.1
c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0.1-0.2,0.1c-0.1,0.1-0.1,0.1-0.2,0.2c0,0.1-0.1,0.2-0.1,0.3c0,0.1,0,0.2,0.1,0.3
c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1
c0.1,0.1,0.2,0.1,0.3,0.2c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.1,0.3c0,0.1,0,0.2,0,0.3c0,0.2,0,0.3-0.1,0.5
c-0.1,0.1-0.2,0.2-0.3,0.3s-0.3,0.2-0.4,0.2c-0.2,0-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1c-0.2-0.1-0.3-0.1-0.4-0.2
c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5h0.5c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.2,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1
s0.2,0,0.3,0c0.1,0,0.2,0,0.3,0c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2C119.1,57.1,119.2,57.1,119.2,56.9z"/>
<path fill="#FFFFFF" d="M120.4,57.9V54h1.2c0.2,0,0.3,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.3
c0.1,0.1,0.1,0.3,0.1,0.5c0,0.1,0,0.2-0.1,0.3c0,0.1-0.1,0.2-0.1,0.2c-0.1,0.1-0.1,0.1-0.2,0.2s-0.2,0.1-0.2,0.1
c0.1,0,0.2,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3c0,0.2,0,0.3-0.1,0.5
s-0.2,0.3-0.3,0.4c-0.1,0.1-0.3,0.2-0.4,0.2c-0.2,0.1-0.3,0.1-0.5,0.1H120.4z M120.9,55.7h0.7c0.1,0,0.2,0,0.3,0
c0.1,0,0.2-0.1,0.2-0.1c0.1-0.1,0.1-0.1,0.2-0.2s0.1-0.2,0.1-0.3c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.1-0.2-0.2
c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.2,0-0.3,0h-0.7V55.7z M120.9,56.1v1.4h0.8c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.2-0.1
c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.1-0.1-0.2-0.1
s-0.2-0.1-0.3-0.1H120.9z"/>
<polygon fill="#FFFFFF" points="126.6,56 124.6,56 124.6,55.2 126.2,55.2 126.7,54.7 126.7,39 127.5,39 127.5,55.1 "/>
<polygon fill="#FFFFFF" points="153.8,33.2 151,33.2 151,34 153.5,34 154,34.5 154,45.7 153.5,46.2 152.9,46.2 152.9,47 153.8,47
154.8,46 154.8,34.2 "/>
<polygon fill="#FFFFFF" points="169.8,125.6 159,125.6 159,126.4 169.5,126.4 180.4,137.3 186.4,137.3 190.8,141.8 190.8,147.2
191.6,147.2 191.6,141.4 186.7,136.5 180.7,136.5 "/>
<polygon fill="#FFFFFF" points="184.5,120.1 172.4,120.1 172.4,119.3 184.8,119.3 "/>
<polygon fill="#FFFFFF" points="183.3,17.6 180.8,17.6 180.8,15.1 180.5,15.1 180.5,17.6 178,17.6 178,17.8 180.5,17.8 180.5,20.6
180.8,20.6 180.8,17.8 183.3,17.8 "/>
<path fill="#FFFFFF" d="M138.1,47.1h-0.8v1.6h-0.5v-3.9h1.2c0.2,0,0.4,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.4
c0.1,0.1,0.1,0.3,0.1,0.5c0,0.1,0,0.2-0.1,0.4c0,0.1-0.1,0.2-0.2,0.3c-0.1,0.1-0.1,0.2-0.2,0.2c-0.1,0.1-0.2,0.1-0.3,0.2l0.8,1.7
l0,0h-0.5L138.1,47.1z M137.3,46.6h0.7c0.1,0,0.2,0,0.3-0.1c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3
c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3-0.1h-0.7V46.6z"/>
<path fill="#FFFFFF" d="M142.3,46.8h-1.6v1.4h1.9v0.4h-2.4v-3.9h2.4v0.4h-1.9v1.3h1.6V46.8z"/>
<path fill="#FFFFFF" d="M145.5,47.7c0-0.1,0-0.2-0.1-0.3c-0.1-0.1-0.1-0.2-0.2-0.2c-0.1-0.1-0.2-0.1-0.3-0.1
c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.3-0.1-0.4-0.2c-0.1-0.1-0.3-0.1-0.4-0.2c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.3-0.1-0.4
s0-0.3,0.1-0.5c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2c0.2,0,0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1
c0.2,0.1,0.3,0.1,0.4,0.2s0.2,0.2,0.3,0.4c0.1,0.1,0.1,0.3,0.1,0.5h-0.5c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.2-0.2
c-0.1-0.1-0.2-0.1-0.2-0.2c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0.1-0.2,0.1c-0.1,0.1-0.1,0.1-0.2,0.2
c0,0.1-0.1,0.2-0.1,0.3c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1
c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.3,0.2s0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.1,0.3c0,0.1,0,0.2,0,0.3
c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.2c-0.2,0-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1
c-0.2-0.1-0.3-0.1-0.4-0.2c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5h0.5c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.1,0.2,0.2,0.2
c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.3,0c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.1-0.1,0.2-0.2
C145.5,47.9,145.5,47.8,145.5,47.7z"/>
<path fill="#FFFFFF" d="M148.9,46.8h-1.6v1.4h1.9v0.4h-2.4v-3.9h2.4v0.4h-1.9v1.3h1.6V46.8z"/>
<path fill="#FFFFFF" d="M152.8,45.2h-1.2v3.5H151v-3.5h-1.2v-0.4h2.9V45.2z"/>
<polygon fill="#FFFFFF" points="70.8,77.8 70,80.3 71.6,80.3 70.8,77.8 "/>
<path fill="#FFFFFF" d="M76.5,77.7l-8.6-14.3l-11.4,6.8L65,84.5c1.6,2.8,5.2,3.7,8,2l1.4-0.8C77.2,84,78.1,80.5,76.5,77.7z
M74.3,83.4h-2.5v-0.9l0.5-0.1l-0.3-1h-2.4l-0.3,1l0.5,0.1v0.9h-2.5v-0.9l0.5-0.1l2.2-6.3h1.5l2.2,6.3l0.5,0.1V83.4z"/>
<path fill="#FFFFFF" d="M46.6,100h-1.3l-0.3,1h-0.5l1.3-3.9h0.4l1.2,3.9h-0.5L46.6,100z M45.4,99.5h1L46,97.9L45.4,99.5z"/>
<path fill="#FFFFFF" d="M51.7,99.5c0,0.2,0,0.5-0.1,0.7c-0.1,0.2-0.1,0.4-0.2,0.5c-0.1,0.1-0.2,0.2-0.4,0.3s-0.3,0.1-0.5,0.1
c-0.2,0-0.4,0-0.5-0.1c-0.2-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.2-0.3-0.2-0.5c-0.1-0.2-0.1-0.4-0.1-0.7v-0.9c0-0.2,0-0.5,0.1-0.7
c0.1-0.2,0.1-0.4,0.2-0.5c0.1-0.1,0.2-0.2,0.4-0.3c0.2-0.1,0.3-0.1,0.5-0.1c0.2,0,0.4,0,0.5,0.1c0.2,0.1,0.3,0.2,0.4,0.3
c0.1,0.1,0.2,0.3,0.2,0.5c0.1,0.2,0.1,0.4,0.1,0.7V99.5z M49.7,99.4l1.5-1.2c0-0.3-0.1-0.5-0.2-0.6c-0.1-0.1-0.3-0.2-0.5-0.2
c-0.3,0-0.5,0.1-0.6,0.3c-0.1,0.2-0.2,0.4-0.2,0.8V99.4z M51.2,98.7l-1.5,1.2c0,0.3,0.1,0.4,0.2,0.6c0.1,0.1,0.3,0.2,0.5,0.2
c0.3,0,0.5-0.1,0.6-0.3c0.1-0.2,0.2-0.4,0.2-0.8V98.7z"/>
<path fill="#FFFFFF" d="M203.5,100h-1.3l-0.3,1h-0.5l1.3-3.9h0.4l1.2,3.9h-0.5L203.5,100z M202.3,99.5h1l-0.5-1.7L202.3,99.5z"/>
<path fill="#FFFFFF" d="M207.7,101h-0.5v-3.3l-1,0.4v-0.5l1.5-0.6h0V101z"/>
<rect x="59.4" y="51.6" transform="matrix(0.8923 0.4514 -0.4514 0.8923 31.0258 -21.4341)" fill="#F9EBA7" width="2.1" height="5.4"/>
<rect x="69.8" y="56.9" transform="matrix(0.8923 0.4514 -0.4514 0.8923 34.5226 -25.5642)" fill="#F9EBA7" width="2.1" height="5.4"/>
<rect x="50.1" y="69.9" transform="matrix(0.8923 0.4514 -0.4514 0.8923 38.3019 -15.2737)" fill="#F9EBA7" width="2.1" height="5.4"/>
<rect x="60.5" y="75.2" transform="matrix(0.8923 0.4514 -0.4514 0.8923 41.7987 -19.4037)" fill="#F9EBA7" width="2.1" height="5.4"/>
<path fill="#BDD1CF" d="M63.6,76l-12.2-6.1c-0.5-0.3-0.7-0.9-0.5-1.5l6.2-12.3c0.3-0.5,0.9-0.7,1.5-0.5l12.2,6.1
c0.5,0.3,0.7,0.9,0.5,1.5l-6.2,12.3C64.8,76.1,64.1,76.3,63.6,76z"/>
<circle id="BTN_A" fill="#186A8C" cx="61.1" cy="65.9" r="4.9"/>
<circle fill="#1D1D1B" cx="58.6" cy="58" r="1.6"/>
<circle fill="#1D1D1B" cx="69" cy="63.3" r="1.6"/>
<circle fill="#1D1D1B" cx="53.3" cy="68.3" r="1.6"/>
<circle fill="#1D1D1B" cx="63.7" cy="73.6" r="1.6"/>
<rect x="179.7" y="56.7" transform="matrix(0.8998 -0.4362 0.4362 0.8998 -7.8105 84.8091)" fill="#F9EBA7" width="2.1" height="5.4"/>
<rect x="190.2" y="51.6" transform="matrix(0.8998 -0.4362 0.4362 0.8998 -4.5406 88.8767)" fill="#F9EBA7" width="2.1" height="5.4"/>
<rect x="188.7" y="75.2" transform="matrix(0.8998 -0.4362 0.4362 0.8998 -14.9765 90.5698)" fill="#F9EBA7" width="2.1" height="5.4"/>
<rect x="199.2" y="70.1" transform="matrix(0.8998 -0.4362 0.4362 0.8998 -11.7066 94.6374)" fill="#F9EBA7" width="2.1" height="5.4"/>
<path fill="#BDD1CF" d="M200,70L187.7,76c-0.5,0.3-1.2,0-1.4-0.5l-6-12.4c-0.3-0.5,0-1.2,0.5-1.4l12.3-5.9c0.5-0.3,1.2,0,1.4,0.5
l6,12.4C200.7,69.1,200.5,69.8,200,70z"/>
<circle id="BTN_B" fill="#D82E50" cx="190.4" cy="65.9" r="4.9"/>
<circle fill="#1D1D1B" cx="182.6" cy="63.1" r="1.6"/>
<circle fill="#1D1D1B" cx="193.1" cy="58" r="1.6"/>
<circle fill="#1D1D1B" cx="187.6" cy="73.6" r="1.6"/>
<circle fill="#1D1D1B" cx="198.1" cy="68.5" r="1.6"/>
<path fill="#BDD1CF" d="M151.7,39h-13.6c-0.6,0-1.1-0.5-1.1-1.1V24.1c0-0.6,0.5-1.1,1.1-1.1h13.6c0.6,0,1.1,0.5,1.1,1.1v13.7
C152.8,38.5,152.3,39,151.7,39z"/>
<circle fill="#53787C" cx="144.9" cy="31" r="4.9"/>
<rect x="156.9" y="33.6" fill="#1D1D1B" width="10.7" height="13.1"/>
</g>
<g id="EDGE_P0">
<path fill="#EFDA48" d="M17.1,97.1c-7.7,0-13.9,6.2-13.9,13.9S9.4,125,17.1,125S31,118.8,31,111.1S24.8,97.1,17.1,97.1z
M17.1,117.7c-3.7,0-6.6-3-6.6-6.6s3-6.6,6.6-6.6s6.6,3,6.6,6.6S20.7,117.7,17.1,117.7z"/>
</g>
<g id="EDGE_GND">
<path fill="#EFDA48" d="M71.8,3.4c-7.7,0-13.9,6.2-13.9,13.9s6.2,13.9,13.9,13.9s13.9-6.2,13.9-13.9S79.5,3.4,71.8,3.4z M71.8,24
c-3.7,0-6.6-3-6.6-6.6s3-6.6,6.6-6.6c3.7,0,6.6,3,6.6,6.6S75.5,24,71.8,24z"/>
</g>
<g id="EDGE_VCC">
<path fill="#EFDA48" d="M179.6,3.4c-7.7,0-13.9,6.2-13.9,13.9s6.2,13.9,13.9,13.9s13.9-6.2,13.9-13.9S187.3,3.4,179.6,3.4z
M179.6,24c-3.7,0-6.6-3-6.6-6.6s3-6.6,6.6-6.6c3.7,0,6.6,3,6.6,6.6S183.3,24,179.6,24z"/>
</g>
<g id="EDGE_P3">
<path fill="#EFDA48" d="M233.3,97.1c-7.7,0-13.9,6.2-13.9,13.9s6.2,13.9,13.9,13.9s13.9-6.2,13.9-13.9S241,97.1,233.3,97.1z
M233.3,117.7c-3.7,0-6.6-3-6.6-6.6c0-3.7,3-6.6,6.6-6.6c3.7,0,6.6,3,6.6,6.6C239.9,114.7,236.9,117.7,233.3,117.7z"/>
</g>
<g id="EDGE_P2">
<path fill="#EFDA48" d="M179.9,190.1c-7.7,0-13.9,6.2-13.9,13.9s6.2,13.9,13.9,13.9s13.9-6.2,13.9-13.9S187.6,190.1,179.9,190.1z
M179.9,210.7c-3.7,0-6.6-3-6.6-6.6s3-6.6,6.6-6.6c3.7,0,6.6,3,6.6,6.6S183.5,210.7,179.9,210.7z"/>
</g>
<g id="EDGE_P1">
<path fill="#EFDA48" d="M71.8,190.7c-7.7,0-13.9,6.2-13.9,13.9c0,7.7,6.2,13.9,13.9,13.9s13.9-6.2,13.9-13.9
C85.7,196.9,79.5,190.7,71.8,190.7z M71.8,211.2c-3.7,0-6.6-3-6.6-6.6c0-3.7,3-6.6,6.6-6.6s6.6,3,6.6,6.6
C78.4,208.3,75.5,211.2,71.8,211.2z"/>
</g>
<g id="motor">
<path id="C_GND1" fill="#EFDA48" d="M83.6,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1s2.1-1,2.1-2.1S84.8,183.9,83.6,183.9z M83.6,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1s1,0.5,1,1S84.2,187,83.6,187z"/>
<circle fill="#1D1D1B" cx="83.6" cy="186" r="1"/>
<path id="C_P0" fill="#EFDA48" d="M90.8,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1s2.1-1,2.1-2.1S92,183.9,90.8,183.9z M90.8,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1s1,0.5,1,1S91.4,187,90.8,187z"/>
<circle fill="#1D1D1B" cx="90.8" cy="186" r="1"/>
<path id="C_P2" fill="#EFDA48" d="M98,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1s2.1-1,2.1-2.1S99.2,183.9,98,183.9z M98,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1s1,0.5,1,1S98.6,187,98,187z"/>
<circle fill="#1D1D1B" cx="98" cy="186" r="1"/>
<path id="C_P4" fill="#EFDA48" d="M105.2,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1s2.1-1,2.1-2.1S106.4,183.9,105.2,183.9z M105.2,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1s1,0.5,1,1S105.8,187,105.2,187z"/>
<circle fill="#1D1D1B" cx="105.2" cy="186" r="1"/>
<path id="C_P6" fill="#EFDA48" d="M112.4,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1s2.1-1,2.1-2.1S113.6,183.9,112.4,183.9z M112.4,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S113,187,112.4,187z"/>
<circle fill="#1D1D1B" cx="112.4" cy="186" r="1"/>
<path id="C_P8" fill="#EFDA48" d="M119.6,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1c1.2,0,2.1-1,2.1-2.1S120.8,183.9,119.6,183.9z M119.6,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S120.2,187,119.6,187z"/>
<circle fill="#1D1D1B" cx="119.6" cy="186" r="1"/>
<path id="C_GND2" fill="#EFDA48" d="M126.8,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1c1.2,0,2.1-1,2.1-2.1S128,183.9,126.8,183.9z M126.8,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S127.4,187,126.8,187z"/>
<circle fill="#1D1D1B" cx="126.8" cy="186" r="1"/>
<path id="C_P10" fill="#EFDA48" d="M134,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1s2.1-1,2.1-2.1S135.2,183.9,134,183.9z M134,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S134.5,187,134,187z"/>
<circle fill="#1D1D1B" cx="134" cy="186" r="1"/>
<path id="C_P12" fill="#EFDA48" d="M141.2,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1s2.1-1,2.1-2.1S142.4,183.9,141.2,183.9z M141.2,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S141.7,187,141.2,187z"/>
<circle fill="#1D1D1B" cx="141.2" cy="186" r="1"/>
<path id="C_P14" fill="#EFDA48" d="M148.4,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1s2.1-1,2.1-2.1S149.6,183.9,148.4,183.9z M148.4,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S148.9,187,148.4,187z"/>
<circle fill="#1D1D1B" cx="148.4" cy="186" r="1"/>
<path id="C_P16" fill="#EFDA48" d="M155.6,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1s2.1-1,2.1-2.1S156.8,183.9,155.6,183.9z M155.6,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S156.1,187,155.6,187z"/>
<circle fill="#1D1D1B" cx="155.6" cy="186" r="1"/>
<path id="C_P20" fill="#EFDA48" d="M162.8,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1s2.1-1,2.1-2.1S163.9,183.9,162.8,183.9z M162.8,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S163.3,187,162.8,187z"/>
<circle fill="#1D1D1B" cx="162.8" cy="186" r="1"/>
<path id="C_VCC1" fill="#EFDA48" d="M170,183.9c-1.2,0-2.1,1-2.1,2.1s1,2.1,2.1,2.1s2.1-1,2.1-2.1S171.1,183.9,170,183.9z M170,187
c-0.6,0-1-0.5-1-1s0.5-1,1-1s1,0.5,1,1S170.5,187,170,187z"/>
<circle fill="#1D1D1B" cx="170" cy="186" r="1"/>
<path id="C_VCC2" fill="#EFDA48" d="M83.6,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C85.8,177.6,84.8,176.6,83.6,176.6z
M83.6,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1s1,0.5,1,1S84.2,179.8,83.6,179.8z"/>
<circle fill="#1D1D1B" cx="83.6" cy="178.8" r="1"/>
<path id="C_P1" fill="#EFDA48" d="M90.8,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C93,177.6,92,176.6,90.8,176.6z
M90.8,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1s1,0.5,1,1S91.4,179.8,90.8,179.8z"/>
<circle fill="#1D1D1B" cx="90.8" cy="178.8" r="1"/>
<path id="C_P22" fill="#EFDA48" d="M98,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C100.2,177.6,99.2,176.6,98,176.6z
M98,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1s1,0.5,1,1S98.6,179.8,98,179.8z"/>
<circle fill="#1D1D1B" cx="98" cy="178.8" r="1"/>
<path id="C_P5" fill="#EFDA48" d="M105.2,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C107.3,177.6,106.4,176.6,105.2,176.6
z M105.2,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1s1,0.5,1,1S105.8,179.8,105.2,179.8z"/>
<circle fill="#1D1D1B" cx="105.2" cy="178.8" r="1"/>
<path id="C_P7" fill="#EFDA48" d="M112.4,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C114.5,177.6,113.6,176.6,112.4,176.6
z M112.4,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S113,179.8,112.4,179.8z"/>
<circle fill="#1D1D1B" cx="112.4" cy="178.8" r="1"/>
<path id="C_P9" fill="#EFDA48" d="M119.6,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1c1.2,0,2.1-1,2.1-2.1
C121.7,177.6,120.8,176.6,119.6,176.6z M119.6,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S120.2,179.8,119.6,179.8z"/>
<circle fill="#1D1D1B" cx="119.6" cy="178.8" r="1"/>
<path id="C_GND3" fill="#EFDA48" d="M126.8,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1c1.2,0,2.1-1,2.1-2.1
C128.9,177.6,128,176.6,126.8,176.6z M126.8,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S127.4,179.8,126.8,179.8z"/>
<circle fill="#1D1D1B" cx="126.8" cy="178.8" r="1"/>
<path id="C_P11" fill="#EFDA48" d="M134,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C136.1,177.6,135.2,176.6,134,176.6z
M134,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S134.5,179.8,134,179.8z"/>
<circle fill="#1D1D1B" cx="134" cy="178.8" r="1"/>
<path id="C_P13" fill="#EFDA48" d="M141.2,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C143.3,177.6,142.4,176.6,141.2,176.6
z M141.2,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S141.7,179.8,141.2,179.8z"/>
<circle fill="#1D1D1B" cx="141.2" cy="178.8" r="1"/>
<path id="C_P15" fill="#EFDA48" d="M148.4,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C150.5,177.6,149.6,176.6,148.4,176.6
z M148.4,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S148.9,179.8,148.4,179.8z"/>
<circle fill="#1D1D1B" cx="148.4" cy="178.8" r="1"/>
<path id="C_P21" fill="#EFDA48" d="M155.6,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C157.7,177.6,156.8,176.6,155.6,176.6
z M155.6,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S156.1,179.8,155.6,179.8z"/>
<circle fill="#1D1D1B" cx="155.6" cy="178.8" r="1"/>
<path id="C_P19" fill="#EFDA48" d="M162.8,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C164.9,177.6,163.9,176.6,162.8,176.6
z M162.8,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1c0.6,0,1,0.5,1,1S163.3,179.8,162.8,179.8z"/>
<circle fill="#1D1D1B" cx="162.8" cy="178.8" r="1"/>
<path id="C_GND4" fill="#EFDA48" d="M170,176.6c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C172.1,177.6,171.1,176.6,170,176.6z
M170,179.8c-0.6,0-1-0.5-1-1s0.5-1,1-1s1,0.5,1,1S170.5,179.8,170,179.8z"/>
<circle fill="#1D1D1B" cx="170" cy="178.8" r="1"/>
<path id="M_GND1" fill="#EFDA48" d="M112.4,162.8c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C114.5,163.8,113.6,162.8,112.4,162.8
z M112.4,166c-0.6,0-1-0.5-1-1c0-0.6,0.5-1,1-1c0.6,0,1,0.5,1,1C113.4,165.5,113,166,112.4,166z"/>
<circle fill="#1D1D1B" cx="112.4" cy="165" r="1"/>
<path id="M_OUT1" fill="#EFDA48" d="M119.6,162.8c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1c1.2,0,2.1-1,2.1-2.1
C121.7,163.8,120.8,162.8,119.6,162.8z M119.6,166c-0.6,0-1-0.5-1-1c0-0.6,0.5-1,1-1c0.6,0,1,0.5,1,1
C120.6,165.5,120.2,166,119.6,166z"/>
<circle fill="#1D1D1B" cx="119.6" cy="165" r="1"/>
<path id="M_OUT2" fill="#EFDA48" d="M126.8,162.8c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1c1.2,0,2.1-1,2.1-2.1
C128.9,163.8,128,162.8,126.8,162.8z M126.8,166c-0.6,0-1-0.5-1-1c0-0.6,0.5-1,1-1c0.6,0,1,0.5,1,1
C127.8,165.5,127.4,166,126.8,166z"/>
<circle fill="#1D1D1B" cx="126.8" cy="165" r="1"/>
<path id="M_GND2" fill="#EFDA48" d="M134,162.8c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C136.1,163.8,135.2,162.8,134,162.8z
M134,166c-0.6,0-1-0.5-1-1c0-0.6,0.5-1,1-1c0.6,0,1,0.5,1,1C135,165.5,134.5,166,134,166z"/>
<circle fill="#1D1D1B" cx="134" cy="165" r="1"/>
<path id="M_VM" fill="#EFDA48" d="M141.2,162.8c-1.2,0-2.1,1-2.1,2.1c0,1.2,1,2.1,2.1,2.1s2.1-1,2.1-2.1C143.3,163.8,142.4,162.8,141.2,162.8
z M141.2,166c-0.6,0-1-0.5-1-1c0-0.6,0.5-1,1-1c0.6,0,1,0.5,1,1C142.2,165.5,141.7,166,141.2,166z"/>
<circle fill="#1D1D1B" cx="141.2" cy="165" r="1"/>
</g>
<g id="rgbled">
<g>
<rect x="120.6" y="130.6" fill="#FFFFFF" width="10.8" height="10.5"/>
<circle fill="#BDD1CF" cx="126" cy="135.9" r="4.1"/>
</g>
</g>
<g id="a0">
<rect x="36.6" y="78" transform="matrix(-0.7113 -0.7029 0.7029 -0.7113 5.9446 184.6141)" fill="#FFFFFF" width="8.6" height="26.1"/>
<circle id="G_A0_GND" fill="#BDD1CF" cx="47.9" cy="84.2" r="1.2"/>
<circle id="G_A0_VCC" fill="#BDD1CF" cx="43.1" cy="88.8" r="1.2"/>
<circle id="G_A0_SDA" fill="#BDD1CF" cx="38.8" cy="93.1" r="1.2"/>
<circle id="G_A0_SCL" fill="#BDD1CF" cx="33.9" cy="98" r="1.2"/>
</g>
<g id="a1">
<rect x="206.6" y="77.1" transform="matrix(0.7113 -0.7029 0.7029 0.7113 -2.4835 174.2752)" fill="#FFFFFF" width="8.6" height="26.1"/>
<circle id="G_A1_RX" fill="#BDD1CF" cx="203.9" cy="83.2" r="1.2"/>
<circle id="G_A1_TX" fill="#BDD1CF" cx="208.7" cy="87.9" r="1.2"/>
<circle id="G_A1_VCC" fill="#BDD1CF" cx="213" cy="92.2" r="1.2"/>
<circle id="G_A1_GND" fill="#BDD1CF" cx="217.9" cy="97.1" r="1.2"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -16,13 +16,9 @@ You will find two files in that project:
## Translating the blocks and reference documentation
The project below contains the resources from the blocks and functions using in the https://codethemicrobit.com.
You will find package files under ``/microbit`` , one for the block definition and one for the descriptions:
* [https://crowdin.com/project/pxt-microbit](https://crowdin.com/project/pxt-microbit)
You will find two files for each package available in the micro:bit, one for the block definition and one for the descriptions:
* ``microbit-strings.json``: contains the block definitions
* ``microbit-jsdoc-strings.json``: contains the descriptions
* ``core-strings.json``: contains the block definitions
* ``core-jsdoc-strings.json``: contains the descriptions
The block definition should be carefully translated using the [block definition syntax](https://www.pxt.io/defining-blocks).

View File

@ -4,22 +4,6 @@
using namespace pxt;
enum Delimiters {
//% block="new line"
NewLine = 1,
//% block=","
Comma = 2,
//% block="$"
Dollar = 3,
//% block=":"
Colon = 4,
//% block="."
Fullstop = 5,
//% block="#"
Hash = 6,
};
/**
* Support for additional Bluetooth services.
*/
@ -27,12 +11,33 @@ enum Delimiters {
namespace bluetooth {
MicroBitUARTService *uart = NULL;
/**
* Starts the Bluetooth accelerometer service
*/
//% help=bluetooth/start-accelerometer-service
//% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service"
//% parts="bluetooth" weight=90 blockGap=8
void startAccelerometerService() {
new MicroBitAccelerometerService(*uBit.ble, uBit.accelerometer);
}
/**
* Starts the Bluetooth button service
*/
//% help=bluetooth/start-button-service
//% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8
//% parts="bluetooth" weight=89
void startButtonService() {
new MicroBitButtonService(*uBit.ble);
}
/**
* Starts the Bluetooth IO pin service.
*/
//% help=bluetooth/start-io-pin-service
//% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8
//% parts="bluetooth"
//% parts="bluetooth" weight=88
void startIOPinService() {
new MicroBitIOPinService(*uBit.ble, uBit.io);
}
@ -42,7 +47,7 @@ namespace bluetooth {
*/
//% help=bluetooth/start-led-service
//% blockId=bluetooth_start_led_service block="bluetooth led service" blockGap=8
//% parts="bluetooth"
//% parts="bluetooth" weight=87
void startLEDService() {
new MicroBitLEDService(*uBit.ble, uBit.display);
}
@ -52,7 +57,7 @@ namespace bluetooth {
*/
//% help=bluetooth/start-temperature-service
//% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8
//% parts="bluetooth"
//% parts="bluetooth" weight=86
void startTemperatureService() {
new MicroBitTemperatureService(*uBit.ble, uBit.thermometer);
}
@ -61,38 +66,19 @@ namespace bluetooth {
* Starts the Bluetooth magnetometer service
*/
//% help=bluetooth/start-magnetometer-service
//% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service" blockGap=8
//% parts="bluetooth"
//% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service"
//% parts="bluetooth" weight=85
void startMagnetometerService() {
new MicroBitMagnetometerService(*uBit.ble, uBit.compass);
}
/**
* Starts the Bluetooth accelerometer service
*/
//% help=bluetooth/start-accelerometer-service
//% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service" blockGap=8
//% parts="bluetooth"
void startAccelerometerService() {
new MicroBitAccelerometerService(*uBit.ble, uBit.accelerometer);
}
/**
* Starts the Bluetooth button service
*/
//% help=bluetooth/start-button-service
//% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8
//% parts="bluetooth"
void startButtonService() {
new MicroBitButtonService(*uBit.ble);
}
/**
* Starts the Bluetooth UART service
*/
//% help=bluetooth/start-uart-service
//% blockId=bluetooth_start_uart_service block="bluetooth uart service" blockGap=8
//% parts="bluetooth"
//% blockId=bluetooth_start_uart_service block="bluetooth uart service"
//% parts="bluetooth" advanced=true
void startUartService() {
if (uart) return;
// 61 octet buffer size is 3 x (MTU - 3) + 1
@ -102,13 +88,13 @@ namespace bluetooth {
}
//%
void uartWrite(StringData *data) {
void uartWriteString(StringData *data) {
startUartService();
uart->send(ManagedString(data));
}
//%
StringData* uartRead(StringData *del) {
StringData* uartReadUntil(StringData *del) {
startUartService();
return uart->readUntil(ManagedString(del)).leakData();
}
@ -133,7 +119,5 @@ namespace bluetooth {
//% parts="bluetooth"
void onBluetoothDisconnected(Action body) {
registerWithDal(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, body);
}
}
}

View File

@ -1,42 +1,48 @@
/**
* Support for additional Bluetooth services.
*/
//% color=#0082FB weight=20
namespace bluetooth {
/**
* Returns the delimiter corresponding string
*/
//% blockId="bluetooth_uart_delimiter_conv" block="%del"
//% weight=1 parts="bluetooth"
export function delimiters(del: Delimiters): string {
// even though it might not look like, this is more
// (memory) efficient than the C++ implementation, because the
// strings are statically allocated and take no RAM
switch (del) {
case Delimiters.NewLine: return "\n"
case Delimiters.Comma: return ","
case Delimiters.Dollar: return "$"
case Delimiters.Colon: return ":"
case Delimiters.Fullstop: return "."
case Delimiters.Hash: return "#"
default: return "\n"
}
}
/**
* Writes to the Bluetooth UART service buffer. From there the data is transmitted over Bluetooth to a connected device.
*/
//% help=bluetooth/uart-write
//% blockId=bluetooth_uart_write block="bluetooth uart write %data" blockGap=8
//% parts="bluetooth" shim=bluetooth::uartWrite
export function uartWrite(data: string): void {
//% help=bluetooth/uart-write-string weight=80
//% blockId=bluetooth_uart_write block="bluetooth uart|write string %data" blockGap=8
//% parts="bluetooth" shim=bluetooth::uartWriteString advanced=true
export function uartWriteString(data: string): void {
// dummy implementation for simulator
console.log("UART Write: " + data)
}
/**
* Prints a numeric value to the serial
*/
//% help=bluetooth/uart-write-number weight=79
//% weight=89 blockGap=8 advanced=true
//% blockId=bluetooth_uart_writenumber block="bluetooth uart|write number %value"
export function uartWriteNumber(value: number): void {
uartWriteString(value.toString());
}
/**
* Writes a ``name: value`` pair line to the serial.
* @param name name of the value stream, eg: x
* @param value to write
*/
//% weight=88 weight=78
//% help=bluetooth/uart-write-value advanced=true
//% blockId=bluetooth_uart_writevalue block="bluetooth uart|write value %name|= %value"
export function uartWriteValue(name: string, value: number): void {
uartWriteString(name + ":" + value + "\r\n");
}
/**
* Reads from the Bluetooth UART service buffer, returning its contents when the specified delimiter character is encountered.
*/
//% help=bluetooth/uart-read
//% blockId=bluetooth_uart_read block="bluetooth uart read %del=bluetooth_uart_delimiter_conv" blockGap=8
//% parts="bluetooth" shim=bluetooth::uartRead
export function uartRead(del: string): string {
//% help=bluetooth/uart-read-until weight=75
//% blockId=bluetooth_uart_read block="bluetooth uart|read until %del=serial_delimiter_conv"
//% parts="bluetooth" shim=bluetooth::uartReadUntil advanced=true
export function uartReadUntil(del: string): string {
// dummy implementation for simulator
return "???"
}

View File

@ -1,20 +1,4 @@
// Auto-generated. Do not edit.
declare enum Delimiters {
//% block="new line"
NewLine = 1,
//% block=","
Comma = 2,
//% block="$"
Dollar = 3,
//% block=":"
Colon = 4,
//% block="."
Fullstop = 5,
//% block="#"
Hash = 6,
}
declare namespace bluetooth {
}

View File

@ -7,44 +7,12 @@
//% color=#0082FB weight=20
declare namespace bluetooth {
/**
* Starts the Bluetooth IO pin service.
*/
//% help=bluetooth/start-io-pin-service
//% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8
//% parts="bluetooth" shim=bluetooth::startIOPinService
function startIOPinService(): void;
/**
* Starts the Bluetooth LED service
*/
//% help=bluetooth/start-led-service
//% blockId=bluetooth_start_led_service block="bluetooth led service" blockGap=8
//% parts="bluetooth" shim=bluetooth::startLEDService
function startLEDService(): void;
/**
* Starts the Bluetooth temperature service
*/
//% help=bluetooth/start-temperature-service
//% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8
//% parts="bluetooth" shim=bluetooth::startTemperatureService
function startTemperatureService(): void;
/**
* Starts the Bluetooth magnetometer service
*/
//% help=bluetooth/start-magnetometer-service
//% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service" blockGap=8
//% parts="bluetooth" shim=bluetooth::startMagnetometerService
function startMagnetometerService(): void;
/**
* Starts the Bluetooth accelerometer service
*/
//% help=bluetooth/start-accelerometer-service
//% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service" blockGap=8
//% parts="bluetooth" shim=bluetooth::startAccelerometerService
//% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service"
//% parts="bluetooth" weight=90 blockGap=8 shim=bluetooth::startAccelerometerService
function startAccelerometerService(): void;
/**
@ -52,15 +20,47 @@ declare namespace bluetooth {
*/
//% help=bluetooth/start-button-service
//% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8
//% parts="bluetooth" shim=bluetooth::startButtonService
//% parts="bluetooth" weight=89 shim=bluetooth::startButtonService
function startButtonService(): void;
/**
* Starts the Bluetooth IO pin service.
*/
//% help=bluetooth/start-io-pin-service
//% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8
//% parts="bluetooth" weight=88 shim=bluetooth::startIOPinService
function startIOPinService(): void;
/**
* Starts the Bluetooth LED service
*/
//% help=bluetooth/start-led-service
//% blockId=bluetooth_start_led_service block="bluetooth led service" blockGap=8
//% parts="bluetooth" weight=87 shim=bluetooth::startLEDService
function startLEDService(): void;
/**
* Starts the Bluetooth temperature service
*/
//% help=bluetooth/start-temperature-service
//% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8
//% parts="bluetooth" weight=86 shim=bluetooth::startTemperatureService
function startTemperatureService(): void;
/**
* Starts the Bluetooth magnetometer service
*/
//% help=bluetooth/start-magnetometer-service
//% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service"
//% parts="bluetooth" weight=85 shim=bluetooth::startMagnetometerService
function startMagnetometerService(): void;
/**
* Starts the Bluetooth UART service
*/
//% help=bluetooth/start-uart-service
//% blockId=bluetooth_start_uart_service block="bluetooth uart service" blockGap=8
//% parts="bluetooth" shim=bluetooth::startUartService
//% blockId=bluetooth_start_uart_service block="bluetooth uart service"
//% parts="bluetooth" advanced=true shim=bluetooth::startUartService
function startUartService(): void;
/**

View File

@ -0,0 +1,54 @@
/*basic.showString("RGB")
basic.setLedColor(Colors.Blue)
basic.pause(500)
basic.setLedColor(Colors.Red)
basic.pause(500)
basic.setLedColor(Colors.Green)
basic.pause(500)
basic.setLedColor(Colors.Violet)
basic.pause(500)
basic.setLedColor(0);
basic.showString("Gesten")
input.onGesture(Gesture.Shake, () => {
basic.showString("S")
})
input.onGesture(Gesture.LogoUp, () => {
basic.showString("U")
})
input.onGesture(Gesture.LogoDown, () => {
basic.showString("D")
})
input.onGesture(Gesture.ScreenUp, () => {
basic.showString("+")
})
input.onGesture(Gesture.TiltRight, () => {
basic.showString("R")
})
input.onGesture(Gesture.FreeFall, () => {
basic.showString("F")
})
input.onGesture(Gesture.ScreenDown, () => {
basic.showString("-")
})
input.onGesture(Gesture.TiltLeft, () => {
basic.showString("L")
})
input.onGesture(Gesture.ThreeG, () => {
basic.showString("3")
})
input.onGesture(Gesture.SixG, () => {
basic.showString("6")
})
*/
input.onPinPressed(TouchPin.P0, () => {
basic.showNumber(0)
})
input.onPinPressed(TouchPin.P1, () => {
basic.showNumber(1)
})
input.onPinPressed(TouchPin.P2, () => {
basic.showNumber(2)
})
input.onPinPressed(TouchPin.P3, () => {
basic.showNumber(3)
})

View File

@ -0,0 +1,11 @@
{
"name": "calliope",
"description": "Test of Calliope Parts",
"files": [
"calliope.ts"
],
"public": true,
"dependencies": {
"core": "file:../core"
}
}

View File

@ -0,0 +1,80 @@
{
"Math.randomBoolean|block": "pick random true or false",
"Math|block": "Math",
"String.fromCharCode|block": "text from char code %code",
"String|block": "String",
"basic.clearScreen|block": "clear screen",
"basic.forever|block": "forever",
"basic.pause|block": "pause (ms) %pause",
"basic.showLeds|block": "show leds",
"basic.showNumber|block": "show|number %number",
"basic.showString|block": "show|string %text",
"basic|block": "basic",
"control.inBackground|block": "run in background",
"control.reset|block": "reset",
"control.waitMicros|block": "wait (µs)%micros",
"control|block": "control",
"game.addScore|block": "change score by|%points",
"game.gameOver|block": "game over",
"game.score|block": "score",
"game.startCountdown|block": "start countdown|(ms) %duration",
"game|block": "game",
"images.createBigImage|block": "create big image",
"images.createImage|block": "create image",
"images|block": "images",
"input.acceleration|block": "acceleration (mg)|%NAME",
"input.buttonIsPressed|block": "button|%NAME|is pressed",
"input.compassHeading|block": "compass heading (°)",
"input.lightLevel|block": "light level",
"input.magneticForce|block": "magnetic force (µT)|%NAME",
"input.onButtonPressed|block": "on button|%NAME|pressed",
"input.onGesture|block": "on |%NAME",
"input.onPinPressed|block": "on pin %NAME|pressed",
"input.onPinReleased|block": "on pin %NAME|released",
"input.pinIsPressed|block": "pin %NAME|is pressed",
"input.rotation|block": "rotation (°)|%NAME",
"input.runningTime|block": "running time (ms)",
"input.setAccelerometerRange|block": "set accelerometer|range %range",
"input.temperature|block": "temperature (°C)",
"input|block": "input",
"led.brightness|block": "brightness",
"led.plotBarGraph|block": "plot bar graph of %value |up to %high",
"led.plot|block": "plot|x %x|y %y",
"led.point|block": "point|x %x|y %y",
"led.setBrightness|block": "set brightness %value",
"led.stopAnimation|block": "stop animation",
"led.toggle|block": "toggle|x %x|y %y",
"led.unplot|block": "unplot|x %x|y %y",
"led|block": "led",
"music.beat|block": "%fraction|beat",
"music.changeTempoBy|block": "change tempo by (bpm)|%value",
"music.noteFrequency|block": "%note",
"music.playTone|block": "play|tone %note=device_note|for %duration=device_beat",
"music.rest|block": "rest(ms)|%duration=device_beat",
"music.ringTone|block": "ring tone (Hz)|%note=device_note",
"music.setTempo|block": "set tempo to (bpm)|%value",
"music.tempo|block": "tempo (bpm)",
"music|block": "music",
"pins.analogReadPin|block": "analog read|pin %name",
"pins.analogSetPeriod|block": "analog set period|pin %pin|to (µs)%micros",
"pins.analogWritePin|block": "analog write|pin %name|to %value",
"pins.digitalReadPin|block": "digital read|pin %name",
"pins.digitalWritePin|block": "digital write|pin %name|to %value",
"pins.i2cReadNumber|block": "i2c read number|at address %address|of format %format=i2c_sizeof",
"pins.i2cWriteNumber|block": "i2c write number|at address %address|with value %value|of format %format=i2c_sizeof",
"pins.map|block": "map %value|from low %fromLow|from high %fromHigh|to low %toLow|to high %toHigh",
"pins.onPulsed|block": "on|pin %pin|pulsed %pulse",
"pins.pulseDuration|block": "pulse duration (µs)",
"pins.servoSetPulse|block": "servo set pulse|pin %value|to (µs) %micros",
"pins.servoWritePin|block": "servo write|pin %name|to %value",
"pins.setPull|block": "set pull|pin %pin|to %pull",
"pins.spiWrite|block": "spi write %value",
"pins|block": "pins",
"serial.readLine|block": "serial read line",
"serial.redirect|block": "serial redirect to|TX %tx|RX %rx|at baud rate %rate",
"serial.writeLine|block": "serial|write line %text",
"serial.writeNumber|block": "serial|write number %value",
"serial.writeString|block": "serial write string %text",
"serial.writeValue|block": "serial|write value %name|= %value",
"serial|block": "serial"
}

View File

@ -6,6 +6,24 @@
*/
//% color=#0078D7 weight=100
namespace basic {
/**
* Sets the color on the build-in LED. Set to 0 to turn off.
*/
//% blockId=device_set_led_color block="set led to %color=color_id" icon="\uf00a"
//% weight=50
void setLedColor(int color) {
if (!color) {
uBit.rgb.off();
return;
}
int w = (color >> 24) & 0xFF;
int r = (color >> 16) & 0xFF;
int g = (color >> 8) & 0xFF;
int b = (color) & 0xFF;
uBit.rgb.setColour(r,g,b,w);
}
/**
* Scroll a number on the screen. If the number fits on the screen (i.e. is a single digit), do not scroll.

View File

@ -4,31 +4,31 @@
enum Colors {
//% blockIdentity=basic.color
//% block=red
Red = 0xFF0000,
Red = 0x00FF0000,
//% blockIdentity=basic.color
//% block=orange
Orange = 0xFFA500,
Orange = 0x00FFA500,
//% blockIdentity=basic.color
//% block=yellow
Yellow = 0xFFFF00,
Yellow = 0x00FFFF00,
//% blockIdentity=basic.color
//% block=green
Green = 0x00FF00,
Green = 0x0000FF00,
//% blockIdentity=basic.color
//% block=blue
Blue = 0x0000FF,
Blue = 0x000000FF,
//% blockIdentity=basic.color
//% block=indigo
Indigo = 0x4b0082,
Indigo = 0x004b0082,
//% blockIdentity=basic.color
//% block=violet
Violet = 0x8a2be2,
Violet = 0x008a2be2,
//% blockIdentity=basic.color
//% block=purple
Purple = 0xFF00FF,
Purple = 0x00FF00FF,
//% blockIdentity=basic.color
//% block=white
White = 0xFFFFFF
White = 0xFF00000
}
/**
@ -36,16 +36,6 @@ enum Colors {
*/
//% color=#0078D7 weight=100
namespace basic {
/**
* Sets the color on the build-in LED
*/
//% blockId=device_set_led_color block="set led to %color=color_id" icon="\uf00a"
//% weight=50
export function setLedColor(color: number) {
// TODO
}
/**
* Converts the color name to a number
*/
@ -53,4 +43,17 @@ namespace basic {
export function color(c: Colors): number {
return c;
}
/**
* Converts red, green, blue channels into a RGB color
* @param red value of the red channel between 0 and 255. eg: 255
* @param green value of the green channel between 0 and 255. eg: 255
* @param blue value of the blue channel between 0 and 255. eg: 255
* @param white value of the white channel between 0 and 255. eg: 0
*/
//% weight=1
//% blockId="core_rgb" block="red %red|green %green|blue %blue|white %white"
export function rgbw(red: number, green: number, blue: number, white:number): number {
return ((white & 0xFF) << 24) | ((red & 0xFF) << 16) | ((green & 0xFF) << 8) | (blue & 0xFF);
}
}

View File

@ -110,6 +110,7 @@ enum EventBusValue {
};
//% weight=1 color="#333333"
//% advanced=true
namespace control {
void fiberDone(void *a)
{
@ -131,7 +132,7 @@ namespace control {
*/
//% weight=30 async help=control/reset blockGap=8
//% blockId="control_reset" block="reset"
void reset() {
void reset() {
microbit_reset();
}
@ -153,16 +154,16 @@ namespace control {
*/
//% weight=21 blockGap=12 blockId="control_raise_event" block="raise event|from source %src=control_event_source_id|with value %value=control_event_value_id" blockExternalInputs=1
//% mode.defl=CREATE_AND_FIRE
void raiseEvent(int src, int value, EventCreationMode mode) {
MicroBitEvent evt(src, value, (MicroBitEventLaunchMode)mode);
void raiseEvent(int src, int value, EventCreationMode mode) {
MicroBitEvent evt(src, value, (MicroBitEventLaunchMode)mode);
}
/**
* Raises an event in the event bus.
*/
//% weight=20 blockGap=8 blockId="control_on_event" block="on event|from %src=control_event_source_id|with value %value=control_event_value_id"
//% weight=20 blockGap=8 blockId="control_on_event" block="on event|from %src=control_event_source_id|with value %value=control_event_value_id"
//% blockExternalInputs=1
void onEvent(int src, int value, Action handler) {
void onEvent(int src, int value, Action handler) {
registerWithDal(src, value, handler);
}
@ -174,7 +175,7 @@ namespace control {
int eventValue() {
return pxt::lastEvent.value;
}
/**
* Gets the timestamp of the last event executed on the bus
*/
@ -183,15 +184,15 @@ namespace control {
int eventTimestamp() {
return pxt::lastEvent.timestamp;
}
/**
* Gets a friendly name for the device derived from the its serial number
*/
//% blockId="control_device_name" block="device name" weight=10 blockGap=8
StringData* deviceName() {
return ManagedString(microbit_friendly_name()).leakData();
return ManagedString(microbit_friendly_name()).leakData();
}
/**
* Derive a unique, consistent serial number of this device from internal data.
*/

View File

@ -2,6 +2,7 @@
* Runtime and event utilities.
*/
//% weight=1 color="#333333"
//% advanced=true
namespace control {
/**

10
libs/core/dal.d.ts vendored
View File

@ -145,13 +145,14 @@ declare const enum DAL {
MICROBIT_ID_RADIO_DATA_READY = 30,
MICROBIT_ID_MULTIBUTTON_ATTACH = 31,
MICROBIT_ID_SERIAL = 32,
CALLIOPE_ID_IO_P0 = 33,
CALLIOPE_ID_IO_P3 = 33,
CALLIOPE_ID_IO_P7 = 34,
CALLIOPE_ID_IO_P8 = 35,
CALLIOPE_ID_IO_P9 = 36,
CALLIOPE_ID_IO_P13 = 37,
CALLIOPE_ID_IO_P14 = 38,
CALLIOPE_ID_IO_P15 = 39,
CALLIOPE_ID_IO_P22 = 40,
MICROBIT_ID_MESSAGE_BUS_LISTENER = 1021,
MICROBIT_ID_NOTIFY_ONE = 1022,
MICROBIT_ID_NOTIFY = 1023,
@ -190,12 +191,6 @@ declare const enum DAL {
MICROBIT_SERIAL_EVT_TX_EMPTY = 2,
MICROBIT_UART_S_EVT_TX_EMPTY = 3,
// built/yt/yotta_modules/microbit-dal/inc//drivers/CalliopeRGB.h
RGB_LED_DEFAULT_GREEN = 0,
RGB_LED_DEFAULT_RED = 0,
RGB_LED_DEFAULT_BLUE = 0,
RGB_LED_DEFAULT_WHITE = 0,
RGB_KEEP_VALUE = -1,
RGB_LED_MAX_INTENSITY = 50,
// built/yt/yotta_modules/microbit-dal/inc//drivers/CalliopeSoundMotor.h
CALLIOPE_SM_DEFAULT_DUTY_M = 50,
CALLIOPE_SM_DEFAULT_DUTY_S = 100,
@ -432,6 +427,7 @@ declare const enum DAL {
MICROBIT_ACCELEROMETER_TILT_TOLERANCE = 200,
MICROBIT_ACCELEROMETER_FREEFALL_TOLERANCE = 400,
MICROBIT_ACCELEROMETER_SHAKE_TOLERANCE = 400,
MICROBIT_ACCELEROMETER_2G_TOLERANCE = 2048,
MICROBIT_ACCELEROMETER_3G_TOLERANCE = 3072,
MICROBIT_ACCELEROMETER_6G_TOLERANCE = 6144,
MICROBIT_ACCELEROMETER_8G_TOLERANCE = 8192,

19
libs/core/enums.d.ts vendored
View File

@ -37,6 +37,7 @@ declare namespace basic {
P0 = 7, // MICROBIT_ID_IO_P0
P1 = 8, // MICROBIT_ID_IO_P1
P2 = 9, // MICROBIT_ID_IO_P2
P3 = 33, // CALLIOPE_ID_IO_P3
}
@ -238,6 +239,8 @@ declare namespace control {
// TODO DISPLAY_MODE_BLACK_AND_WHITE_LIGHT_SENSE
}
declare namespace led {
}
declare namespace motors {
}
@ -309,6 +312,22 @@ declare namespace led {
//% block=9600
BaudRate9600 = 9600,
}
declare enum Delimiters {
//% block="new line"
NewLine = 1,
//% block=","
Comma = 2,
//% block="$"
Dollar = 3,
//% block=":"
Colon = 4,
//% block="."
Fullstop = 5,
//% block="#"
Hash = 6,
}
declare namespace serial {
}

View File

@ -1,5 +1,5 @@
enum Direction {
//% block=right
//% block=right
Right,
//% block=left
Left
@ -22,6 +22,7 @@ enum LedSpriteProperty {
* A single-LED sprite game engine
*/
//% color=#008272 weight=32
//% advanced=true
namespace game {
let _score: number = 0;
let _life: number = 3;

View File

@ -4,6 +4,7 @@
* Creation, manipulation and display of LED images.
*/
//% color=#5C2D91 weight=31
//% advanced=true
namespace images {
/**
* Creates an image that fits on the LED screen.
@ -29,7 +30,7 @@ namespace images {
namespace ImageMethods {
/**
* Plots the image at a given column to the screen
*/
*/
//% help=images/plot-image
//% parts="ledmatrix"
void plotImage(Image i, int xOffset = 0) {
@ -46,7 +47,7 @@ namespace ImageMethods {
void showImage(Image sprite, int xOffset) {
uBit.display.print(MicroBitImage(sprite), -xOffset, 0, 0);
}
/**
* Draws the ``index``-th frame of the image on the screen.
* @param xOffset column index to start displaying the image
@ -57,7 +58,7 @@ namespace ImageMethods {
// TODO showImage() used in original implementation
plotImage(i, xOffset * 5);
}
/**
* Scrolls an image .
* @param frameOffset x offset moved on each animation step, eg: 5, 1, -1

View File

@ -29,6 +29,7 @@ enum class TouchPin {
P0 = MICROBIT_ID_IO_P0,
P1 = MICROBIT_ID_IO_P1,
P2 = MICROBIT_ID_IO_P2,
P3 = CALLIOPE_ID_IO_P3
};
enum class AcceleratorRange {
@ -89,7 +90,7 @@ enum class Gesture {
* Raised when the screen is pointing right
*/
//% block="tilt right"
TiltRight = MICROBIT_ACCELEROMETER_EVT_TILT_RIGHT,
TiltRight = MICROBIT_ACCELEROMETER_EVT_TILT_RIGHT,
/**
* Raised when the board is falling!
*/
@ -130,9 +131,9 @@ namespace input {
//% parts="accelerometer"
void onGesture(Gesture gesture, Action body) {
if ((int)gesture == MICROBIT_ACCELEROMETER_EVT_3G && uBit.accelerometer.getRange() < 3)
uBit.accelerometer.setRange(4);
uBit.accelerometer.setRange(6);
else if ((int)gesture == MICROBIT_ACCELEROMETER_EVT_6G && uBit.accelerometer.getRange() < 6)
uBit.accelerometer.setRange(8);
uBit.accelerometer.setRange(8);
registerWithDal(MICROBIT_ID_GESTURE, (int)gesture, body);
}
@ -159,6 +160,7 @@ namespace input {
*/
//% help=input/on-pin-released weight=6 blockGap=8
//% blockId=device_pin_released block="on pin %NAME|released" icon="\uf094"
//% advanced=true
void onPinReleased(TouchPin name, Action body) {
auto pin = getPin((int)name);
if (!pin) return;
@ -171,7 +173,7 @@ namespace input {
/**
* Get the button state (pressed or not) for ``A`` and ``B``.
*/
//% help=input/button-is-pressed weight=57
//% help=input/button-is-pressed weight=60
//% block="button|%NAME|is pressed"
//% blockId=device_get_button2
//% icon="\uf192" blockGap=8
@ -190,7 +192,7 @@ namespace input {
* Get the pin state (pressed or not). Requires to hold the ground to close the circuit.
* @param name pin used to detect the touch
*/
//% help=input/pin-is-pressed weight=56
//% help=input/pin-is-pressed weight=58
//% blockId="device_pin_is_pressed" block="pin %NAME|is pressed" icon="\uf094"
//% blockGap=8
bool pinIsPressed(TouchPin name) {
@ -198,10 +200,44 @@ namespace input {
return pin && pin->isTouched();
}
int getAccelerationStrength() {
double x = uBit.accelerometer.getX();
double y = uBit.accelerometer.getY();
double z = uBit.accelerometer.getZ();
return (int)sqrt(x*x+y*y+z*z);
}
/**
* Get the acceleration value in milli-gravitys (when the board is laying flat with the screen up, x=0, y=0 and z=-1024)
* @param dimension TODO
*/
//% help=input/acceleration weight=58 icon="\uf135"
//% blockId=device_acceleration block="acceleration (mg)|%NAME" blockGap=8
//% parts="accelerometer"
int acceleration(Dimension dimension) {
switch (dimension) {
case Dimension::X: return uBit.accelerometer.getX();
case Dimension::Y: return uBit.accelerometer.getY();
case Dimension::Z: return uBit.accelerometer.getZ();
case Dimension::Strength: return getAccelerationStrength();
}
return 0;
}
/**
* Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.
*/
//% help=input/light-level weight=57
//% blockId=device_get_light_level block="light level" blockGap=8 icon="\uf185"
//% parts="ledmatrix"
int lightLevel() {
return uBit.display.readLightLevel();
}
/**
* Get the current compass heading in degrees.
*/
//% help=input/compass-heading
//% help=input/compass-heading
//% weight=56 icon="\uf14e"
//% blockId=device_heading block="compass heading (°)" blockGap=8
//% parts="compass"
@ -221,54 +257,19 @@ namespace input {
return uBit.thermometer.getTemperature();
}
int getAccelerationStrength() {
double x = uBit.accelerometer.getX();
double y = uBit.accelerometer.getY();
double z = uBit.accelerometer.getZ();
return (int)sqrt(x*x+y*y+z*z);
}
/**
* Get the acceleration value in milli-gravitys (when the board is laying flat with the screen up, x=0, y=0 and z=-1024)
* @param dimension TODO
*/
//% help=input/acceleration weight=54 icon="\uf135"
//% blockId=device_acceleration block="acceleration (mg)|%NAME" blockGap=8
//% parts="accelerometer"
int acceleration(Dimension dimension) {
switch (dimension) {
case Dimension::X: return uBit.accelerometer.getX();
case Dimension::Y: return uBit.accelerometer.getY();
case Dimension::Z: return uBit.accelerometer.getZ();
case Dimension::Strength: return getAccelerationStrength();
}
return 0;
}
/**
* Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.
*/
//% help=input/light-level weight=53
//% blockId=device_get_light_level block="light level" blockGap=8 icon="\uf185"
//% parts="ledmatrix"
int lightLevel() {
return uBit.display.readLightLevel();
}
/**
* The pitch or roll of the device, rotation along the ``x-axis`` or ``y-axis``, in degrees.
* @param kind TODO
*/
//% help=input/rotation weight=52
//% blockId=device_get_rotation block="rotation (°)|%NAME" blockGap=8 icon="\uf197"
//% parts="accelerometer"
//% parts="accelerometer" advanced=true
int rotation(Rotation kind) {
switch (kind) {
case Rotation::Pitch: return uBit.accelerometer.getPitch();
case Rotation::Roll: return uBit.accelerometer.getRoll();
}
return 0;
return 0;
}
/**
@ -278,6 +279,7 @@ namespace input {
//% help=input/magnetic-force weight=51
//% blockId=device_get_magnetic_force block="magnetic force (µT)|%NAME" blockGap=8 icon="\uf076"
//% parts="compass"
//% advanced=true
int magneticForce(Dimension dimension) {
if (!uBit.compass.isCalibrated())
uBit.compass.calibrate();
@ -296,6 +298,7 @@ namespace input {
*/
//% help=input/running-time weight=50
//% blockId=device_get_running_time block="running time (ms)" icon="\uf017"
//% advanced=true
int runningTime() {
return system_timer_current_time();
}
@ -314,6 +317,7 @@ namespace input {
//% blockId=device_set_accelerometer_range block="set accelerometer|range %range" icon="\uf135"
//% weight=5
//% parts="accelerometer"
//% advanced=true
void setAccelerometerRange(AcceleratorRange range) {
uBit.accelerometer.setRange((int)range);
}

View File

@ -19,7 +19,7 @@ namespace led {
//% help=led/plot weight=78
//% blockId=device_plot block="plot|x %x|y %y" icon="\uf205" blockGap=8
//% parts="ledmatrix"
void plot(int x, int y) {
void plot(int x, int y) {
uBit.display.image.setPixelValue(x, y, 1);
}
@ -31,7 +31,7 @@ namespace led {
//% help=led/unplot weight=77
//% blockId=device_unplot block="unplot|x %x|y %y" icon="\uf204" blockGap=8
//% parts="ledmatrix"
void unplot(int x, int y) {
void unplot(int x, int y) {
uBit.display.image.setPixelValue(x, y, 0);
}
@ -54,6 +54,7 @@ namespace led {
//% help=led/brightness weight=60
//% blockId=device_get_brightness block="brightness" icon="\uf042" blockGap=8
//% parts="ledmatrix"
//% advanced=true
int brightness() {
return uBit.display.getBrightness();
}
@ -65,7 +66,8 @@ namespace led {
//% help=led/set-brightness weight=59
//% blockId=device_set_brightness block="set brightness %value" icon="\uf042"
//% parts="ledmatrix"
void setBrightness(int value) {
//% advanced=true
void setBrightness(int value) {
uBit.display.setBrightness(value);
}
@ -75,7 +77,8 @@ namespace led {
//% weight=50 help=led/stop-animation
//% blockId=device_stop_animation block="stop animation" icon="\uf04d"
//% parts="ledmatrix"
void stopAnimation() {
//% advanced=true
void stopAnimation() {
uBit.display.stopAnimation();
}
@ -85,7 +88,7 @@ namespace led {
*/
//% weight=1 help=led/set-display-mode
//% parts="ledmatrix"
void setDisplayMode(DisplayMode_ mode) {
void setDisplayMode(DisplayMode_ mode) {
uBit.display.setDisplayMode((DisplayMode)mode);
}

17
libs/core/motors.cpp Normal file
View File

@ -0,0 +1,17 @@
#include "ksbit.h"
/**
* Blocks to control the onboard motors
*/
//% weight=30
namespace motors {
/**
* Controls the power sent to a single motor
* @param power %percent of power sent to the motor. Negative power goes backward. eg: 50
*/
//% blockId=motor_on block="motor on at %percent|%"
//% parts=dcmotor
void motorOn(int power) {
uBit.soundmotor.Motor_On(power);
}
}

View File

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" width="488" height="836" viewBox="0 0 488 836">
<g transform="translate(0 -216.362)">
<rect width="34.286" height="122.532" x="226.365" y="929.711" fill="#ccc" ry="16.162"/>
<path fill="gray" d="M23.23 359.456A23.233 23.233 0 0 0 0 382.686v511.428a23.233 23.233 0 0 0 23.23 23.23h38.2v24.117a23.233 23.233 0 0 0 23.23 23.234h317.143a23.233 23.233 0 0 0 23.23-23.23v-24.118h38.197a23.233 23.233 0 0 0 23.23-23.23v-511.43a23.233 23.233 0 0 0-23.23-23.23h-440z"/>
<path fill="#333" d="M23.23 357.82C10.4 357.82.002 368.22 0 381.05v511.427c.002 12.83 10.4 23.23 23.23 23.23h38.2v24.118c2.08 25.815 20.27 23.748 33.1 23.75 0 0-11.976-16.96-12.05-40.988-.057-17.923-9.03-12.008-8.176-39.76 2.743-237.84-2.423-390.158.37-522.93z"/>
<path fill="#fd5" d="M23.508 286.934A23.51 18.415 0 0 0 0 305.347v69.375a23.51 18.415 0 0 0 23.508 18.413h440a23.51 18.415 0 0 0 23.508-18.413v-69.375a23.51 18.415 0 0 0-23.508-18.413h-440z"/>
<path fill="#c87137" d="M77.156 216.362c-5.698 0-10.283 4.588-10.283 10.286v94.03c0 5.7 4.585 10.286 10.283 10.286h24.98c5.697 0 10.284-4.587 10.284-10.285v-94.034c0-5.698-4.587-10.286-10.285-10.286h-24.98zm10.18 10.37h4.018c5.095 0 9.197 4.103 9.197 9.2v28.032c0 5.096-4.1 9.197-9.194 9.197h-4.018c-5.096 0-9.2-4.1-9.2-9.194V235.93c0-5.095 4.104-9.197 9.2-9.197zm288.814-10.37c-5.697 0-10.283 4.588-10.283 10.286v94.03c0 5.7 4.586 10.286 10.283 10.286h24.98c5.697 0 10.284-4.587 10.284-10.285v-94.034c0-5.698-4.587-10.286-10.285-10.286h-24.98zm11.045 11.885h4.02c5.095 0 9.197 4.102 9.197 9.197v28.032c0 5.095-4.102 9.2-9.197 9.2h-4.02c-5.095 0-9.197-4.105-9.197-9.2v-28.032c0-5.095 4.102-9.197 9.197-9.197z"/>
<path fill="#fc0" d="M170.587 306.637a17.633 17.633 0 0 0-17.63 17.63v67.587a17.633 17.633 0 0 0 17.63 17.63h34.852v20.57c0 15.162 12.756 27.915 27.913 27.915h24.976c15.157 0 27.916-12.756 27.916-27.917v-20.57h38.612a17.633 17.633 0 0 0 17.63-17.63v-67.587a17.633 17.633 0 0 0-17.63-17.63H170.585z"/>
<rect width="126.356" height="29.385" x="272.569" y="914.707" fill="#b3b3b3" ry="14.693"/>
<rect width="169.991" height="457.913" x="300.928" y="430.348" fill="#b3b3b3" ry="27.415"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -66,6 +66,14 @@ MicroBitPin *getPin(int id) {
//case MICROBIT_ID_IO_P16: return &uBit.io.P16;
case MICROBIT_ID_IO_P19: return &uBit.io.P19;
case MICROBIT_ID_IO_P20: return &uBit.io.P20;
case CALLIOPE_ID_IO_P3: return &uBit.io.CAL_P3;
case CALLIOPE_ID_IO_P7: return &uBit.io.CAL_P7;
case CALLIOPE_ID_IO_P8: return &uBit.io.CAL_P8;
case CALLIOPE_ID_IO_P9: return &uBit.io.CAL_P9;
case CALLIOPE_ID_IO_P13: return &uBit.io.CAL_P13;
case CALLIOPE_ID_IO_P14: return &uBit.io.CAL_P14;
case CALLIOPE_ID_IO_P15: return &uBit.io.CAL_P15;
case CALLIOPE_ID_IO_P22: return &uBit.io.CAL_P22;
default: return NULL;
}
}

View File

@ -2,6 +2,7 @@
* Control currents in Pins for analog/digital signals, servos, i2c, ...
*/
//% color=#A80000 weight=30
//% advanced=true
namespace pins {
/**
* Re-maps a number from one range to another. That is, a value of ``from low`` would get mapped to ``to low``, a value of ``from high`` to ``to high``, values in-between to values in-between, etc.

View File

@ -22,6 +22,7 @@
"game.ts",
"led.cpp",
"led.ts",
"motors.cpp",
"music.ts",
"pins.cpp",
"pins.ts",
@ -31,7 +32,10 @@
"pxtparts.json",
"parts/speaker.svg",
"parts/headphone.svg",
"_locales/fr/microbit-jsdoc-strings.json"
"parts/dcmotor.svg",
"_locales/ja/core-jsdoc-strings.json",
"_locales/ja/core-strings.json",
"_locales/fr/core-jsdoc-strings.json"
],
"public": true,
"dependencies": {},
@ -41,8 +45,7 @@
"microbit-dal": {
"bluetooth": {
"enabled": 0
},
"debug": 1
}
}
}
}

View File

@ -144,5 +144,26 @@
{"part": true, "pinIndices": [0]},
{"pinIndices": [1]}
]
}
},
"dcmotor": {
"numberOfPins": 2,
"visual": {
"image": "parts/dcmotor.svg",
"width": 488,
"height": 836,
"pinDistance": 65,
"pinLocations": [
{"x": 89, "y": 48},
{"x": 395, "y": 48} ]
},
"pinDefinitions": [
{ "target": "M_OUT1", "style": "croc", "orientation": "-Z"},
{ "target": "M_OUT2", "style": "croc", "orientation": "-Z"}
],
"instantiation": {"kind": "singleton"},
"assembly": [
{"part": true, "pinIndices": [0]},
{"pinIndices": [1]}
]
}
}

View File

@ -1,6 +1,6 @@
#include "ksbit.h"
enum class SerialPin {
enum SerialPin {
P0 = MICROBIT_ID_IO_P0,
P1 = MICROBIT_ID_IO_P1,
P2 = MICROBIT_ID_IO_P2,
@ -12,25 +12,63 @@ enum class SerialPin {
//P16 = MICROBIT_ID_IO_P16
};
enum class BaudRate {
enum BaudRate {
//% block=115200
BaudRate115200 = 115200,
//% block=9600
BaudRate9600 = 9600
};
enum Delimiters {
//% block="new line"
NewLine = 1,
//% block=","
Comma = 2,
//% block="$"
Dollar = 3,
//% block=":"
Colon = 4,
//% block="."
Fullstop = 5,
//% block="#"
Hash = 6,
};
//% weight=2 color=30
//% advanced=true
namespace serial {
// note that at least one // followed by % is needed per declaration!
/**
* Reads a line of text from the serial port and returns the buffer when the delimiter is met.
* @param delimiter text delimiter that separates each text chunk
*/
//% help=serial/read-until
//% blockId=serial_read_until block="serial|read until %delimiter=serial_delimiter_conv"
//% weight=19
StringData* readUntil(StringData* delimiter) {
return uBit.serial.readUntil(ManagedString(delimiter)).leakData();
}
/**
* Reads a line of text from the serial port.
*/
//% help=serial/read-line
//% blockId=serial_read_line block="serial read line"
//% weight=20
//% blockId=serial_read_line block="serial|read line"
//% weight=20 blockGap=8
StringData* readLine() {
return uBit.serial.readUntil(ManagedString("\n")).leakData();
return readUntil(ManagedString("\n").leakData());
}
/**
* Registers an event to be fired when one of the delimiter is matched
* @param delimiters the characters to match received characters against. eg:"\n"
*/
// help=serial/on-data-received
// weight=18
void onDataReceived(StringData* delimiters, Action body) {
uBit.serial.eventOn(ManagedString(delimiters));
registerWithDal(MICROBIT_ID_SERIAL, MICROBIT_SERIAL_EVT_DELIM_MATCH, body);
}
/**
@ -38,22 +76,11 @@ namespace serial {
*/
//% help=serial/write-string
//% weight=87
//% blockId=serial_writestring block="serial write string %text"
void writeString(StringData *text) {
//% blockId=serial_writestring block="serial|write string %text"
void writeString(StringData *text) {
uBit.serial.send(ManagedString(text));
}
/**
* Registers an event to be fired when one of the delimiter is matched
* @param delimiters the characters to match received characters against. eg:"\n"
*/
// help=serial/on-data-received
// weight=19
void onDataReceived(StringData* delimiters, Action body) {
uBit.serial.eventOn(ManagedString(delimiters));
registerWithDal(MICROBIT_ID_SERIAL, MICROBIT_SERIAL_EVT_DELIM_MATCH, body);
}
/**
* Dynamically configuring the serial instance to use pins other than USBTX and USBRX.
* @param tx the new transmission pins
@ -62,7 +89,7 @@ namespace serial {
*/
//% weight=10
//% help=serial/redirect-to
//% blockId=serial_redirect block="serial redirect to|TX %tx|RX %rx|at baud rate %rate"
//% blockId=serial_redirect block="serial|redirect to|TX %tx|RX %rx|at baud rate %rate"
//% blockExternalInputs=1
void redirect(SerialPin tx, SerialPin rx, BaudRate rate) {
uBit.serial.redirect((PinName)tx, (PinName)rx);

View File

@ -2,6 +2,7 @@
* Reading and writing data over a serial connection.
*/
//% weight=2 color=#002050
//% advanced=true
namespace serial {
/**
* Prints a line of text to the serial
@ -45,4 +46,24 @@ namespace serial {
export function onLineReceived(body: Action): void {
// serial.onDataReceived("\n", body);
}
/**
* Returns the delimiter corresponding string
*/
//% blockId="serial_delimiter_conv" block="%del"
//% weight=1
export function delimiters(del: Delimiters): string {
// even though it might not look like, this is more
// (memory) efficient than the C++ implementation, because the
// strings are statically allocated and take no RAM
switch (del) {
case Delimiters.NewLine: return "\n"
case Delimiters.Comma: return ","
case Delimiters.Dollar: return "$"
case Delimiters.Colon: return ":"
case Delimiters.Fullstop: return "."
case Delimiters.Hash: return "#"
default: return "\n"
}
}
}

108
libs/core/shims.d.ts vendored
View File

@ -5,6 +5,7 @@
* Creation, manipulation and display of LED images.
*/
//% color=#5C2D91 weight=31
//% advanced=true
declare namespace images {
/**
@ -128,6 +129,13 @@ declare interface Image {
//% color=#0078D7 weight=100
declare namespace basic {
/**
* Sets the color on the build-in LED. Set to 0 to turn off.
*/
//% blockId=device_set_led_color block="set led to %color=color_id" icon="\uf00a"
//% weight=50 shim=basic::setLedColor
function setLedColor(color: number): void;
/**
* Scroll a number on the screen. If the number fits on the screen (i.e. is a single digit), do not scroll.
* @param interval speed of scroll; eg: 150, 100, 200, -100
@ -247,13 +255,14 @@ declare namespace input {
* @param body the code to run when the pin is released
*/
//% help=input/on-pin-released weight=6 blockGap=8
//% blockId=device_pin_released block="on pin %NAME|released" icon="\uf094" shim=input::onPinReleased
//% blockId=device_pin_released block="on pin %NAME|released" icon="\uf094"
//% advanced=true shim=input::onPinReleased
function onPinReleased(name: TouchPin, body: () => void): void;
/**
* Get the button state (pressed or not) for ``A`` and ``B``.
*/
//% help=input/button-is-pressed weight=57
//% help=input/button-is-pressed weight=60
//% block="button|%NAME|is pressed"
//% blockId=device_get_button2
//% icon="\uf192" blockGap=8
@ -264,15 +273,32 @@ declare namespace input {
* Get the pin state (pressed or not). Requires to hold the ground to close the circuit.
* @param name pin used to detect the touch
*/
//% help=input/pin-is-pressed weight=56
//% help=input/pin-is-pressed weight=58
//% blockId="device_pin_is_pressed" block="pin %NAME|is pressed" icon="\uf094"
//% blockGap=8 shim=input::pinIsPressed
function pinIsPressed(name: TouchPin): boolean;
/**
* Get the acceleration value in milli-gravitys (when the board is laying flat with the screen up, x=0, y=0 and z=-1024)
* @param dimension TODO
*/
//% help=input/acceleration weight=58 icon="\uf135"
//% blockId=device_acceleration block="acceleration (mg)|%NAME" blockGap=8
//% parts="accelerometer" shim=input::acceleration
function acceleration(dimension: Dimension): number;
/**
* Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.
*/
//% help=input/light-level weight=57
//% blockId=device_get_light_level block="light level" blockGap=8 icon="\uf185"
//% parts="ledmatrix" shim=input::lightLevel
function lightLevel(): number;
/**
* Get the current compass heading in degrees.
*/
//% help=input/compass-heading
//% help=input/compass-heading
//% weight=56 icon="\uf14e"
//% blockId=device_heading block="compass heading (°)" blockGap=8
//% parts="compass" shim=input::compassHeading
@ -287,30 +313,13 @@ declare namespace input {
//% parts="thermometer" shim=input::temperature
function temperature(): number;
/**
* Get the acceleration value in milli-gravitys (when the board is laying flat with the screen up, x=0, y=0 and z=-1024)
* @param dimension TODO
*/
//% help=input/acceleration weight=54 icon="\uf135"
//% blockId=device_acceleration block="acceleration (mg)|%NAME" blockGap=8
//% parts="accelerometer" shim=input::acceleration
function acceleration(dimension: Dimension): number;
/**
* Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.
*/
//% help=input/light-level weight=53
//% blockId=device_get_light_level block="light level" blockGap=8 icon="\uf185"
//% parts="ledmatrix" shim=input::lightLevel
function lightLevel(): number;
/**
* The pitch or roll of the device, rotation along the ``x-axis`` or ``y-axis``, in degrees.
* @param kind TODO
*/
//% help=input/rotation weight=52
//% blockId=device_get_rotation block="rotation (°)|%NAME" blockGap=8 icon="\uf197"
//% parts="accelerometer" shim=input::rotation
//% parts="accelerometer" advanced=true shim=input::rotation
function rotation(kind: Rotation): number;
/**
@ -319,14 +328,16 @@ declare namespace input {
*/
//% help=input/magnetic-force weight=51
//% blockId=device_get_magnetic_force block="magnetic force (µT)|%NAME" blockGap=8 icon="\uf076"
//% parts="compass" shim=input::magneticForce
//% parts="compass"
//% advanced=true shim=input::magneticForce
function magneticForce(dimension: Dimension): number;
/**
* Gets the number of milliseconds elapsed since power on.
*/
//% help=input/running-time weight=50
//% blockId=device_get_running_time block="running time (ms)" icon="\uf017" shim=input::runningTime
//% blockId=device_get_running_time block="running time (ms)" icon="\uf017"
//% advanced=true shim=input::runningTime
function runningTime(): number;
/**
@ -342,13 +353,15 @@ declare namespace input {
//% help=input/set-accelerometer-range
//% blockId=device_set_accelerometer_range block="set accelerometer|range %range" icon="\uf135"
//% weight=5
//% parts="accelerometer" shim=input::setAccelerometerRange
//% parts="accelerometer"
//% advanced=true shim=input::setAccelerometerRange
function setAccelerometerRange(range: AcceleratorRange): void;
}
//% weight=1 color="#333333"
//% advanced=true
declare namespace control {
/**
@ -386,7 +399,7 @@ declare namespace control {
/**
* Raises an event in the event bus.
*/
//% weight=20 blockGap=8 blockId="control_on_event" block="on event|from %src=control_event_source_id|with value %value=control_event_value_id"
//% weight=20 blockGap=8 blockId="control_on_event" block="on event|from %src=control_event_source_id|with value %value=control_event_value_id"
//% blockExternalInputs=1 shim=control::onEvent
function onEvent(src: number, value: number, handler: () => void): void;
@ -457,7 +470,8 @@ declare namespace led {
*/
//% help=led/brightness weight=60
//% blockId=device_get_brightness block="brightness" icon="\uf042" blockGap=8
//% parts="ledmatrix" shim=led::brightness
//% parts="ledmatrix"
//% advanced=true shim=led::brightness
function brightness(): number;
/**
@ -466,7 +480,8 @@ declare namespace led {
*/
//% help=led/set-brightness weight=59
//% blockId=device_set_brightness block="set brightness %value" icon="\uf042"
//% parts="ledmatrix" shim=led::setBrightness
//% parts="ledmatrix"
//% advanced=true shim=led::setBrightness
function setBrightness(value: number): void;
/**
@ -474,7 +489,8 @@ declare namespace led {
*/
//% weight=50 help=led/stop-animation
//% blockId=device_stop_animation block="stop animation" icon="\uf04d"
//% parts="ledmatrix" shim=led::stopAnimation
//% parts="ledmatrix"
//% advanced=true shim=led::stopAnimation
function stopAnimation(): void;
/**
@ -492,6 +508,22 @@ declare namespace led {
//% parts="ledmatrix" shim=led::screenshot
function screenshot(): Image;
}
/**
* Blocks to control the onboard motors
*/
//% weight=30
declare namespace motors {
/**
* Controls the power sent to a single motor
* @param power %percent of power sent to the motor. Negative power goes backward. eg: 50
*/
//% blockId=motor_on block="motor on at %percent|%"
//% parts=dcmotor shim=motors::motorOn
function motorOn(power: number): void;
}
declare namespace pins {
/**
@ -636,14 +668,24 @@ declare namespace pins {
//% weight=2 color=30
//% advanced=true
declare namespace serial {
/**
* Reads a line of text from the serial port and returns the buffer when the delimiter is met.
* @param delimiter text delimiter that separates each text chunk
*/
//% help=serial/read-until
//% blockId=serial_read_until block="serial|read until %delimiter=serial_delimiter_conv"
//% weight=19 shim=serial::readUntil
function readUntil(delimiter: string): string;
/**
* Reads a line of text from the serial port.
*/
//% help=serial/read-line
//% blockId=serial_read_line block="serial read line"
//% weight=20 shim=serial::readLine
//% blockId=serial_read_line block="serial|read line"
//% weight=20 blockGap=8 shim=serial::readLine
function readLine(): string;
/**
@ -651,7 +693,7 @@ declare namespace serial {
*/
//% help=serial/write-string
//% weight=87
//% blockId=serial_writestring block="serial write string %text" shim=serial::writeString
//% blockId=serial_writestring block="serial|write string %text" shim=serial::writeString
function writeString(text: string): void;
/**
@ -662,7 +704,7 @@ declare namespace serial {
*/
//% weight=10
//% help=serial/redirect-to
//% blockId=serial_redirect block="serial redirect to|TX %tx|RX %rx|at baud rate %rate"
//% blockId=serial_redirect block="serial|redirect to|TX %tx|RX %rx|at baud rate %rate"
//% blockExternalInputs=1 shim=serial::redirect
function redirect(tx: SerialPin, rx: SerialPin, rate: BaudRate): void;
}

View File

@ -1,3 +1,12 @@
basic.setLedColor(Colors.Blue)
basic.pause(500)
basic.setLedColor(Colors.Red)
basic.pause(500)
basic.setLedColor(Colors.Green)
basic.pause(500)
basic.setLedColor(0);
basic.setLedColor(Colors.Violet)
basic.pause(100)
led.plot(0, 0)
basic.pause(1000);
basic.forever(() => {

View File

@ -6,6 +6,6 @@
],
"public": true,
"dependencies": {
"core": "file:../core",
"core": "file:../core"
}
}

View File

@ -9,12 +9,12 @@ namespace radio {
// -------------------------------------------------------------------------
// Radio
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
bool radioEnabled = false;
bool transmitSerialNumber = false;
PacketBuffer packet;
int radioEnable() {
int r = uBit.radio.enable();
if (r != MICROBIT_OK) {
@ -32,7 +32,7 @@ namespace radio {
if (radioEnable() != MICROBIT_OK) return;
uBit.radio.event.eventReceived(MicroBitEvent(MES_BROADCAST_GENERAL_ID, message, CREATE_ONLY));
}
void onBroadcastMessageReceived(int message, Action f) {
if (radioEnable() != MICROBIT_OK) return;
registerWithDal(MES_BROADCAST_GENERAL_ID, message, f);
@ -40,18 +40,18 @@ namespace radio {
/**
* Broadcasts a number over radio to any connected micro:bit in the group.
*/
*/
//% help=radio/send-number
//% weight=60
//% blockId=radio_datagram_send block="radio send number %value" blockGap=8
void sendNumber(int value) {
if (radioEnable() != MICROBIT_OK) return;
void sendNumber(int value) {
if (radioEnable() != MICROBIT_OK) return;
uint32_t t = system_timer_current_time();
uint32_t sn = transmitSerialNumber ? microbit_serial_number() : 0;
uint32_t buf[] = { (uint32_t)value, t, sn };
uint32_t buf[] = { (uint32_t)value, t, sn };
uBit.radio.datagram.send((uint8_t*)buf, 3*sizeof(uint32_t));
}
/**
* Broadcasts a name / value pair along with the device serial number
* and running time to any connected micro:bit in the group.
@ -64,8 +64,8 @@ namespace radio {
void sendValue(StringData* name, int value) {
if (radioEnable() != MICROBIT_OK) return;
ManagedString n(name);
uint32_t t = system_timer_current_time();
ManagedString n(name);
uint32_t t = system_timer_current_time();
uint32_t sn = transmitSerialNumber ? microbit_serial_number() : 0;
uint8_t buf[32];
uint32_t* buf32 = (uint32_t*)buf;
@ -75,28 +75,28 @@ namespace radio {
buf32[2] = sn; // 4 bytes: serial number
uint8_t len = min(MAX_FIELD_NAME_LENGTH, n.length()); // 1 byte: string length
if (len > 0) {
buf[12] = len; //
memcpy(buf + 13, n.toCharArray(), len); // 13-25: field name
buf[12] = len; //
memcpy(buf + 13, n.toCharArray(), len); // 13-25: field name
}
uBit.radio.datagram.send(buf, 13 + len);
}
/**
* Broadcasts a number over radio to any connected micro:bit in the group.
*/
*/
//% help=radio/send-string
//% weight=58
//% blockId=radio_datagram_send_string block="radio send string %msg"
void sendString(StringData* msg) {
if (radioEnable() != MICROBIT_OK) return;
if (radioEnable() != MICROBIT_OK) return;
ManagedString s(msg);
if (s.length() > MICROBIT_RADIO_MAX_PACKET_SIZE)
s = s.substring(0, MICROBIT_RADIO_MAX_PACKET_SIZE);
uBit.radio.datagram.send(s);
}
/**
* Reads a value sent with `stream value` and writes it
* to the serial stream as JSON
@ -104,29 +104,30 @@ namespace radio {
//% help=radio/write-value-to-serial
//% weight=3
//% blockId=radio_write_value_serial block="radio write value to serial"
//% advanced=true
void writeValueToSerial() {
if (radioEnable() != MICROBIT_OK) return;
PacketBuffer p = uBit.radio.datagram.recv();
int length = p.length();
uint8_t* bytes = p.getBytes();
int value;
uBit.serial.send("{");
if (length >= 4) {
memcpy(&value, bytes, 4);
uBit.serial.send("\"v\":"); uBit.serial.send(value);
if(length >= 8) {
memcpy(&value, bytes + 4, 4);
uBit.serial.send(",\"t\":"); uBit.serial.send(value);
uBit.serial.send(",\"t\":"); uBit.serial.send(value);
if (length >= 12) {
memcpy(&value, bytes + 8, 4);
uBit.serial.send(",\"s\":"); uBit.serial.send(value);
uBit.serial.send(",\"s\":"); uBit.serial.send(value);
if (length >= 13) {
char name[MAX_FIELD_NAME_LENGTH+1];
uint8_t len = min(MAX_FIELD_NAME_LENGTH, bytes[12]);
memcpy(name, bytes + 13, len);
name[len] = 0;
uBit.serial.send(",\"n\":\""); uBit.serial.send(name); uBit.serial.send("\"");
uBit.serial.send(",\"n\":\""); uBit.serial.send(name); uBit.serial.send("\"");
}
}
}
@ -151,7 +152,7 @@ namespace radio {
}
return 0;
}
/**
* Reads the next packet as a number from the radio queue.
*/
@ -173,12 +174,12 @@ namespace radio {
//% blockId=radio_datagram_received_event block="radio on data received" blockGap=8
void onDataReceived(Action body) {
if (radioEnable() != MICROBIT_OK) return;
registerWithDal(MICROBIT_ID_RADIO, MICROBIT_RADIO_EVT_DATAGRAM, body);
registerWithDal(MICROBIT_ID_RADIO, MICROBIT_RADIO_EVT_DATAGRAM, body);
// make the the receive buffer has a free spot
receiveNumber();
}
/**
* Reads the next packet as a string and returns it.
*/
@ -188,9 +189,9 @@ namespace radio {
StringData* receiveString() {
if (radioEnable() != MICROBIT_OK) return ManagedString().leakData();
packet = uBit.radio.datagram.recv();
return ManagedString(packet).leakData();
return ManagedString(packet).leakData();
}
/**
* Gets the received signal strength indicator (RSSI) from the packet received by ``receive number``. Not supported in simulator.
* namespace=radio
@ -198,6 +199,7 @@ namespace radio {
//% help=radio/received-signal-strength
//% weight=40
//% blockId=radio_datagram_rssi block="radio received signal strength"
//% advanced=true
int receivedSignalStrength() {
if (radioEnable() != MICROBIT_OK) return 0;
return packet.getRSSI();
@ -208,13 +210,13 @@ namespace radio {
* @ param id the group id between ``0`` and ``255``, 1 eg
*/
//% help=radio/set-group
//% weight=10 blockGap=8
//% weight=10 blockGap=8 advanced=true
//% blockId=radio_set_group block="radio set group %ID"
void setGroup(int id) {
if (radioEnable() != MICROBIT_OK) return;
uBit.radio.setGroup(id);
}
/**
* Change the output power level of the transmitter to the given value.
* @param power a value in the range 0..7, where 0 is the lowest power and 7 is the highest. eg: 7
@ -222,17 +224,20 @@ namespace radio {
//% help=radio/set-transmit-power
//% weight=9 blockGap=8
//% blockId=radio_set_transmit_power block="radio set transmit power %power"
//% advanced=true
void setTransmitPower(int power) {
if (radioEnable() != MICROBIT_OK) return;
uBit.radio.setTransmitPower(power);
}
/**
* Set the radio to transmit the serial number in each message.
* @param transmit value indicating if the serial number is transmitted, eg: true
*/
//% help=radio/set-transmit-serial-number
//% weight=8 blockGap=8
//% blockId=radio_set_transmit_serial_number block="radio set transmit serial number %transmit"
//% advanced=true
void setTransmitSerialNumber(bool transmit) {
if (radioEnable() != MICROBIT_OK) return;
transmitSerialNumber = transmit;

15
libs/radio/shims.d.ts vendored
View File

@ -38,7 +38,8 @@ declare namespace radio {
*/
//% help=radio/write-value-to-serial
//% weight=3
//% blockId=radio_write_value_serial block="radio write value to serial" shim=radio::writeValueToSerial
//% blockId=radio_write_value_serial block="radio write value to serial"
//% advanced=true shim=radio::writeValueToSerial
function writeValueToSerial(): void;
/**
@ -79,7 +80,8 @@ declare namespace radio {
*/
//% help=radio/received-signal-strength
//% weight=40
//% blockId=radio_datagram_rssi block="radio received signal strength" shim=radio::receivedSignalStrength
//% blockId=radio_datagram_rssi block="radio received signal strength"
//% advanced=true shim=radio::receivedSignalStrength
function receivedSignalStrength(): number;
/**
@ -87,7 +89,7 @@ declare namespace radio {
* @ param id the group id between ``0`` and ``255``, 1 eg
*/
//% help=radio/set-group
//% weight=10 blockGap=8
//% weight=10 blockGap=8 advanced=true
//% blockId=radio_set_group block="radio set group %ID" shim=radio::setGroup
function setGroup(id: number): void;
@ -97,15 +99,18 @@ declare namespace radio {
*/
//% help=radio/set-transmit-power
//% weight=9 blockGap=8
//% blockId=radio_set_transmit_power block="radio set transmit power %power" shim=radio::setTransmitPower
//% blockId=radio_set_transmit_power block="radio set transmit power %power"
//% advanced=true shim=radio::setTransmitPower
function setTransmitPower(power: number): void;
/**
* Set the radio to transmit the serial number in each message.
* @param transmit value indicating if the serial number is transmitted, eg: true
*/
//% help=radio/set-transmit-serial-number
//% weight=8 blockGap=8
//% blockId=radio_set_transmit_serial_number block="radio set transmit serial number %transmit" shim=radio::setTransmitSerialNumber
//% blockId=radio_set_transmit_serial_number block="radio set transmit serial number %transmit"
//% advanced=true shim=radio::setTransmitSerialNumber
function setTransmitSerialNumber(transmit: boolean): void;
}

View File

@ -1,6 +1,6 @@
{
"name": "pxt-calliope",
"version": "0.5.2",
"version": "0.5.26",
"description": "calliope target for PXT",
"keywords": [
"JavaScript",
@ -29,6 +29,6 @@
"typescript": "^1.8.7"
},
"dependencies": {
"pxt-core": "0.4.51"
"pxt-core": "0.4.67"
}
}

View File

@ -80,6 +80,13 @@
"microbit-pins": "",
"microbit-serial": ""
}
},
{
"type": "api",
"map": {
"bluetooth\\.uartRead\\((.*?)\\)" : "bluetooth.uartReadUntil($1)",
"bluetooth\\.uartWrite\\((.*?)\\)" : "bluetooth.uartWriteUntil($1)"
}
}
]
},
@ -92,7 +99,7 @@
"simulator": {
"autoRun": true,
"streams": true,
"aspectRatio": 1.08,
"aspectRatio": 1.13,
"parts": true,
"partsAspectRatio": 0.69,
"boardDefinition": {
@ -146,7 +153,13 @@
"P15": "P15",
"P16": "P16",
"P19": "P19",
"P20": "P20"
"P20": "P20",
"EXT_PWR":"EXT_PWR",
"SPKR":"EXT_PWR",
"BTN_A": "BTN_A",
"BTN_B": "BTN_B",
"M_OUT1": "M_OUT1",
"M_OUT2": "M_OUT2"
},
"spiPins": {
"MOSI": "P15",
@ -196,7 +209,7 @@
"yottaTarget": "bbc-microbit-classic-gcc",
"yottaCorePackage": "pxt-calliope-core",
"githubCorePackage": "microsoft/pxt-calliope-core",
"gittag": "v0.5.5",
"gittag": "v0.5.12",
"serviceId": "calliope"
},
"serial": {
@ -206,16 +219,15 @@
},
"appTheme": {
"accentColor": "#249899",
"invertedMenu": true,
"defaultLocale": "de",
"logoUrl": "https://calliope.cc/about",
"logo": "./static/Logo_Calliope_Woman.svg",
"docsLogo": "./static/Logo_Calliope_Woman.svg",
"logo": "./static/Calliopeminieditor.svg",
"docsLogo": "./static/Calliopeminieditor.svg",
"portraitLogo": "./static/Logo_Calliope_Woman.svg",
"footerLogo": "./static/Logo_Calliope_Woman.svg",
"footerLogo": "./static/Calliopeminieditor.svg",
"cardLogo": "https://az851932.vo.msecnd.net/pub/drbwxcth",
"appLogo": "https://az851932.vo.msecnd.net/pub/tbhemtig",
"organization": "Microsoft",
"organizationUrl": "https://calliope.cc/",
"organizationLogo": "./static/Microsoft-logo_rgb_c-gray.png",
"homeUrl": "https://calliope.cc/",
"privacyUrl": "https://go.microsoft.com/fwlink/?LinkId=521839",
"termsOfUseUrl": "https://go.microsoft.com/fwlink/?LinkID=206977",
@ -247,7 +259,7 @@
"path": "/browsers/windows"
}
],
"boardName": "BBC micro:bit",
"boardName": "Calliope MINI",
"docMenu": [
{
"name": "Getting Started",

View File

@ -168,7 +168,7 @@ namespace pxsim.bluetooth {
export function uartWrite(s : string): void {
// TODO
}
export function uartRead(): string {
export function uartReadUntil(del: string): string {
// TODO
return ""
}

View File

@ -1,5 +1,6 @@
namespace pxsim.basic {
export function setLedColor(c: number) {
board().rgbLedState = c;
runtime.queueDisplayUpdate()
}
}

View File

@ -43,6 +43,10 @@ namespace pxsim.serial {
return board().serialState.readSerial();
}
export function readUntil(del: string): string {
return readLine();
}
export function onDataReceived(delimiters: string, handler: RefAction) {
let b = board();
b.bus.listen(DAL.MICROBIT_ID_SERIAL, DAL.MICROBIT_SERIAL_EVT_DELIM_MATCH, handler);

5
sim/state/soundmotor.ts Normal file
View File

@ -0,0 +1,5 @@
namespace pxsim.motors {
export function motorOn(power: number) {
// TODO
}
}

File diff suppressed because one or more lines are too long