Compare commits

...

No commits in common. "gh-pages" and "master" have entirely different histories.

313 changed files with 581 additions and 228693 deletions

37
.gitattributes vendored
View file

@ -1,37 +0,0 @@
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Explicitly specify line endings for as many files as possible.
# People who (for example) rsync between Windows and Linux need this.
# File types which we know are binary
*.eot binary
*.ico binary
*.jpg binary
*.png binary
*.sbx binary
*.swf binary
*.ttf binary
*.woff binary
# Prefer LF for most file types
*.css text eol=lf
*.css.map text eol=lf
*.html text eol=lf
*.js text eol=lf
*.js.map text eol=lf
*.md text eol=lf
*.po text eol=lf
*.scss text eol=lf
*.svg text eol=lf
*.txt text eol=lf
*min.map text eol=lf
# Prefer LF for these files
.editorconfig text eol=lf
.eslintignore text eol=lf
.gitattributes text eol=lf
.gitignore text eol=lf
CNAME text eol=lf
# Use CRLF for Windows-specific file types

4
.gitignore vendored
View file

@ -1,3 +1,3 @@
/.idea
.sass-cache
/_site
.DS_Store
.sass-cache

View file

@ -1,5 +1,9 @@
# ScratchX is no longer supported
#### ScratchX is now archived and no longer supported because Adobe Flash has reached end of life. If you're interested in developing extensions for Scratch, please visit the [Scratch-GUI](https://github.com/scratchfoundation/scratch-gui) repo as a starting point for building a local version of the Scratch editor. It can be linked to your local version of [Scratch-VM](https://github.com/scratchfoundation/scratch-vm), where you can create your own extensions.
ScratchX Examples
=================
## ScratchX
#### Website for experimental Scratch extensions
Sample code for creating extensions with Scratch 2.0.
See [the wiki](https://github.com/LLK/scratchx/wiki) for documentation.
Questions? See the Scratch extension developer's forum:
http://scratch.mit.edu/discuss/48/

Binary file not shown.

44
alarm_extension.js Normal file
View file

@ -0,0 +1,44 @@
/* Extension demonstrating a hat block */
/* Sayamindu Dasgupta <sayamindu@media.mit.edu>, May 2014 */
new (function() {
var ext = this;
var alarm_went_off = false; // This becomes true after the alarm goes off
// Cleanup function when the extension is unloaded
ext._shutdown = function() {};
// Status reporting code
// Use this to report missing hardware, plugin or unsupported browser
ext._getStatus = function() {
return {status: 2, msg: 'Ready'};
};
ext.set_alarm = function(time) {
window.setTimeout(function() {
alarm_went_off = true;
}, time*1000);
};
ext.when_alarm = function() {
// Reset alarm_went_off if it is true, and return true
// otherwise, return false.
if (alarm_went_off === true) {
alarm_went_off = false;
return true;
}
return false;
};
// Block and block menu descriptions
var descriptor = {
blocks: [
['', 'run alarm after %n seconds', 'set_alarm', '2'],
['h', 'when alarm goes off', 'when_alarm'],
]
};
// Register the extension
ScratchExtensions.register('Alarm extension', descriptor, ext);
})();

45
browser_extension.js Normal file
View file

@ -0,0 +1,45 @@
// Scratch Extension to demonstrate some simple web browser functionality
// 2014 Shane M. Clements
(function(ext) {
ext.alert = function(message) {
alert(message);
};
ext.confirm = function(question) {
return confirm(question);
};
ext.ask = function(question) {
return prompt(question);
};
ext.setTitle = function(title) {
window.document.title = title;
};
ext.openTab = function(location) {
window.open(location, '_blank');
};
ext._shutdown = function() {
console.log('Shutting down...');
};
ext._getStatus = function() {
return {status: 2, msg: 'Ready'};
};
var descriptor = {
blocks: [
[' ', 'alert %s', 'alert', ''],
['b', 'confirm %s', 'confirm', 'Are you sure?'],
['r', 'ask %s', 'ask', 'How are you?'],
[' ', 'set window title to %s', 'setTitle', 'title'],
[' ', 'open tab with %s', 'openTab', 'https://twitter.com/scratchteam']
]
};
ScratchExtensions.register('Browser Stuff', descriptor, ext);
})({});

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width: 32px  |  Height: 32px  |  Size: 4.2 KiB

Binary file not shown.

View file

@ -1,25 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="ScratchX" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe600;" glyph-name="documentation" horiz-adv-x="1097" d="M1060.791 596.763l-18.595 23.244c-23.244 23.244-51.137 37.191-83.68 46.489h-9.297c-23.244 4.648-41.839 18.595-55.785 32.54l-120.869 120.869c-4.648 4.648-74.382 79.031-176.655 79.031-37.191 0-74.382-9.297-106.924-27.892-18.595-9.297-27.892-32.54-23.244-51.137s23.244-32.54 41.839-32.54h4.648c4.648 0 9.297 0 13.947 0 46.489 0 88.329-13.947 125.518-46.489-9.297-23.244-4.648-46.489 9.297-69.733l-116.221-116.221-41.839 41.839c9.297 69.733-18.595 144.114-69.733 195.252l-60.436 69.733c-23.244 23.244-51.137 37.191-88.329 37.191-32.54 0-60.436-13.947-83.68-37.191-4.648-4.648-9.297-13.947-9.297-18.595s4.648-13.947 9.297-18.595l120.869-120.869-23.244-88.329-88.329-23.244-120.869 120.869c-9.297 9.297-27.892 9.297-37.191 0-46.489-46.489-46.489-125.518 0-172.007l74.382-74.382c51.137-51.137 120.869-79.031 190.602-69.733l4.648-4.648-176.655-176.655c-32.54-32.54-32.54-83.68 0-116.221l83.68-83.68c13.947-13.947 37.191-23.244 55.785-23.244 23.244 0 41.839 9.297 55.785 23.244l176.657 176.655 120.869-120.869c27.892-27.892 60.436-41.839 97.625-41.839s74.382 13.947 97.625 41.839c27.892 27.892 41.839 60.436 41.839 97.625s-13.947 69.733-41.839 97.625l-153.413 153.413 92.977 92.977c0-4.648 0-4.648 0-9.297l4.648-23.244c4.648-32.54 18.595-60.436 37.191-79.031l27.892-27.892c23.244-23.244 65.084-23.244 88.329 0l134.817 134.816c23.244 23.244 23.244 65.084-4.648 88.329zM298.381 57.498c-9.297-9.297-27.892-9.297-37.191 0l-83.68 83.68c-9.297 9.297-9.297 27.892 0 37.191l176.657 176.655 120.869-120.869-176.655-176.657zM795.807 234.154c13.947-13.947 23.244-37.191 23.244-60.436s-9.297-41.839-23.244-60.436c-32.54-32.54-88.329-32.54-120.869 0l-297.525 297.525-32.54 37.191c-4.648 4.648-13.947 9.297-18.595 9.297 0 0-4.648 0-4.648 0-55.785-9.297-116.221 9.297-158.061 46.489l-74.382 74.382c-18.595 18.595-23.244 46.489-13.947 74.382l106.924-106.924c9.297-13.947 18.595-13.947 27.892-13.947l116.221 32.54c9.297 4.648 18.595 9.297 18.595 18.595l32.54 116.221c0 9.297 0 18.595-9.297 27.892l-106.924 111.572c23.244 9.297 55.785 4.648 74.382-13.947l69.733-69.733c41.839-41.839 60.436-102.275 51.137-162.709 0-9.297 0-18.595 9.297-23.244l37.191-32.54c0 0 0-4.648 4.648-4.648l120.869-120.869 167.359-176.655zM1023.6 545.625l-134.816-134.816c-4.648-4.648-9.297-4.648-9.297 0l-27.892 27.892c-13.947 13.947-23.244 27.892-23.244 46.489l-4.648 32.54c-4.648 23.244-13.947 46.489-27.892 65.084-4.648 4.648-13.947 9.297-18.595 9.297-9.297 0-13.947-4.648-23.244-9.297l-120.869-120.869-46.489 46.489 130.168 130.168c9.297 9.297 9.297 23.244 0 37.191l-4.648 27.892c-4.648 4.648-4.648 13.947 0 23.244 9.297 9.297 9.297 27.892 0 37.191-41.839 41.839-92.977 69.733-148.763 74.382 13.947 4.648 23.244 4.648 37.191 4.648 74.382 0 130.168-60.436 134.816-60.436l116.221-120.869c23.244-23.244 51.137-41.839 83.68-46.488h9.297c23.244-4.648 41.839-18.595 60.436-32.54l23.244-23.244c0-4.648 0-9.297-4.648-13.947zM572.661 220.206v0c-4.648 4.648 0 0 0 0zM554.067 554.924l-13.947 13.947c0 0 0 0 0 0l13.947-13.947z" />
<glyph unicode="&#xe601;" glyph-name="download" horiz-adv-x="731" d="M365.683 11.154c-9.6 0-19.203 4.8-24.003 9.6l-278.43 278.43c-9.6 9.6-14.401 24.003-4.8 33.604 4.8 14.401 14.401 24.003 28.803 24.003h91.21v225.624c0 19.203 14.401 33.604 33.604 33.604h307.233c19.203 0 33.604-14.401 33.604-33.604v-225.624h91.21c14.401 0 24.003-9.6 33.604-19.203 4.8-14.401 0-28.803-9.6-38.403l-278.43-278.43c-9.6-4.8-14.401-9.6-24.003-9.6zM168.862 289.583l196.82-196.82 196.82 196.82h-43.204c-19.203 0-33.604 14.401-33.604 33.604v225.625h-240.025v-225.625c0-19.203-14.401-33.604-33.604-33.604h-43.204zM485.697 688.026h-240.026c-19.203 0-33.604 14.401-33.604 33.604s14.401 33.604 33.604 33.604h240.026c19.203 0 33.604-14.401 33.604-33.604s-14.401-33.604-33.604-33.604zM428.090 817.64h-129.614c-19.203 0-33.604 14.401-33.604 33.604s14.401 33.604 33.604 33.604h129.614c19.203 0 33.604-14.401 33.604-33.604s-14.401-33.604-33.604-33.604z" />
<glyph unicode="&#xe602;" glyph-name="github" horiz-adv-x="1018" d="M623.543 322.499c16.733-16.733 33.468-50.2 33.468-94.823 0-39.045 0-111.555 0-172.913-44.623-11.156-83.668-16.733-128.29-16.733s-89.244 5.577-128.29 16.733c0 44.623 0 100.402 0 122.714-145.023-33.468-178.491 61.356-178.491 61.356-22.31 61.356-55.779 78.090-55.779 78.090-50.2 33.468 5.577 33.468 5.577 33.468 50.2-5.577 78.090-55.779 78.090-55.779 44.623-78.090 122.713-55.779 156.179-44.623 5.577 33.468 16.733 55.779 33.468 72.511-128.29 11.156-251.001 55.779-251.001 256.578 0 55.779 22.31 105.978 55.779 139.447-5.577 11.156-22.31 66.933 5.577 139.447 0 0 44.624 11.156 145.023-55.779 44.623 11.156 89.244 16.733 133.868 16.733s89.244-5.577 133.868-16.733c100.402 66.933 145.023 55.779 145.023 55.779 27.889-72.512 11.156-122.713 5.577-139.447 27.888-39.045 50.2-83.668 50.2-139.447 0-200.802-122.714-245.424-239.845-256.578z" />
<glyph unicode="&#xe603;" glyph-name="link" d="M474.164 238.122c-5.381 0-10.763 0-16.142 5.381-10.763 5.381-26.907 0-37.669-10.763l-21.526-21.526c-32.286-37.669-91.484-37.669-129.154-5.381-43.050 37.669-43.050 96.868-5.381 134.535l166.82 161.442c5.381 5.381 10.763 10.763 16.148 10.763 16.142 10.763 32.288 16.142 53.814 16.142 10.763 0 21.526 0 32.288-5.381s21.526-10.763 32.286-21.526c0 0 0 0 0 0 16.148-16.142 37.669-16.142 48.433 0l10.763 10.763c16.148 10.763 16.148 32.288 0 48.433 0 0 0 0 0 0-5.386 5.381-16.142 10.763-26.907 21.526-10.763 5.381-16.148 5.381-26.907 10.763s-21.526 5.381-32.286 10.763c-53.814 10.763-107.626 0-156.064-32.288 0-5.381-5.381-10.763-10.763-16.142l-166.82-161.442c-69.961-69.961-69.961-182.967 5.381-252.928 69.961-64.583 182.973-59.195 252.928 5.381l26.907 26.907c21.526 26.907 10.763 59.195-16.142 64.583zM823.954 743.974c-69.961 69.961-188.348 69.961-258.31 0l-32.286-26.907c-21.526-21.526-10.763-53.814 16.148-59.195 5.381 0 10.763 0 16.142-5.381 10.763-5.381 26.907 0 37.669 10.763l21.526 26.907c37.669 37.669 102.246 37.669 139.917-5.386 32.288-37.669 32.288-91.484-5.381-129.154l-161.442-161.442c-10.763 0-16.148-5.381-21.526-10.763-16.148-10.763-32.286-10.763-48.433-10.763-10.763 0-21.526 0-32.286 5.381-16.142 5.386-26.907 10.763-37.669 21.526 0 0 0 0 0 0-16.148 16.148-37.669 16.148-48.433 0l-10.763-10.763c-16.142-10.763-16.142-32.286 0-48.433 0 0 0 0 0 0 10.763-10.763 21.526-16.148 32.288-26.907 10.763-5.381 16.148-10.763 26.907-16.148 5.381 0 16.142-5.381 26.907-5.381 53.814-10.763 107.626 0 156.059 32.286 5.381 5.381 10.763 10.763 16.148 10.763l161.442 156.059c69.961 75.342 75.342 182.973 5.381 252.926z" />
<glyph unicode="&#xe604;" glyph-name="right-arrow" d="M508.609-64c-135.629 0-264.477 54.252-359.417 149.192-196.662 196.662-196.662 522.172 0 725.616 94.94 94.94 223.788 149.192 359.417 149.192s264.477-54.252 359.417-149.192c196.662-196.662 196.662-522.172 0-725.616-88.159-94.94-217.007-149.192-359.417-149.192zM508.609 898.967c-122.066 0-237.351-47.47-318.728-135.629-176.318-176.318-176.318-461.139 0-637.457 88.159-88.159 196.662-135.629 318.728-135.629s237.351 47.47 318.728 135.629c176.318 176.318 176.318 461.139 0 637.457-81.377 88.159-196.662 135.629-318.728 135.629zM427.232 159.788c-20.344 0-40.689 6.781-54.252 20.344-27.126 27.126-27.126 74.596 0 101.722l162.755 162.755-162.755 162.755c-27.126 33.907-27.126 81.377 0 108.503s74.596 27.126 101.722 0l217.007-217.007c27.126-27.126 27.126-74.596 0-101.722l-217.007-217.007c-6.781-13.563-27.126-20.344-47.47-20.344z" />
<glyph unicode="&#xe605;" glyph-name="twitter" horiz-adv-x="1015" d="M928.454 692.459v0 0zM677.503 766.013c-90.862 0-164.413-73.555-164.413-160.089 0-12.979 0-25.962 4.326-34.613-138.455 4.325-259.604 69.226-341.812 164.413-12.979-21.633-21.633-51.919-21.633-82.207 0-56.247 30.287-103.842 73.554-134.127-25.962 0-51.919 8.654-73.554 21.632 0 0 0 0 0 0 0-77.882 56.247-142.782 134.127-155.761-17.307-8.654-30.287-8.654-47.595-8.654-8.654 0-21.633 0-30.287 4.326 21.632-64.9 82.207-112.494 155.761-112.494-56.248-43.267-129.801-69.227-207.681-69.227-12.979 0-25.962 0-38.94 4.325 73.554-47.595 160.089-73.554 255.275-73.554 302.871 0 471.613 246.622 471.613 458.631 0 8.654 0 12.979 0 21.632 30.287 21.633 60.575 51.919 82.207 82.207-30.287-12.979-64.9-21.633-95.188-25.962 34.613 21.633 60.575 51.919 73.554 90.862-30.287-17.307-69.227-30.287-103.842-38.94-34.613 25.962-77.882 47.595-125.474 47.595z" />
<glyph unicode="&#xe606;" glyph-name="upload" horiz-adv-x="731" d="M365.683 884.846c-9.6 0-19.203-4.8-24.003-9.6l-278.43-278.43c-9.6-9.6-14.401-24.003-4.8-33.604 4.8-14.401 14.401-24.003 28.803-24.003h91.21v-225.624c0-19.203 14.401-33.604 33.604-33.604h307.233c19.203 0 33.604 14.401 33.604 33.604v225.624h91.21c14.401 0 24.003 9.6 33.604 19.203 4.8 14.401 0 28.803-9.6 38.403l-278.43 278.43c-9.6 4.8-14.401 9.6-24.003 9.6zM168.862 606.417l196.82 196.82 196.82-196.82h-43.204c-19.203 0-33.604-14.401-33.604-33.604v-225.625h-240.025v225.625c0 19.203-14.401 33.604-33.604 33.604h-43.204zM485.697 207.974h-240.026c-19.203 0-33.604-14.401-33.604-33.604s14.401-33.604 33.604-33.604h240.026c19.203 0 33.604 14.401 33.604 33.604s-14.401 33.604-33.604 33.604zM428.090 78.36h-129.614c-19.203 0-33.604-14.401-33.604-33.604s14.401-33.604 33.604-33.604h129.614c19.203 0 33.604 14.401 33.604 33.604s-14.401 33.604-33.604 33.604z" />
<glyph unicode="&#xe607;" glyph-name="warning" horiz-adv-x="1022" d="M832.76 50.842h-627.306c-44.808 0-85.544 24.441-109.984 61.1-24.441 40.735-24.441 85.544 0 126.277l313.653 545.837c24.441 36.66 65.176 61.1 109.984 61.1s85.544-24.441 109.984-61.1l313.653-545.837c24.441-40.735 24.441-85.544 0-126.277-24.441-36.66-65.176-61.1-109.984-61.1zM519.107 784.058c-24.441 0-44.808-12.22-57.028-32.587l-313.653-541.764c-12.22-20.366-12.22-44.808 0-65.176s32.587-32.587 57.028-32.587h627.306c24.441 0 44.808 12.22 57.028 32.587s12.22 44.808 0 65.176l-313.654 541.764c-12.22 20.366-32.587 32.587-57.028 32.587zM519.107 344.128v0c-28.514 0-52.955 20.367-57.028 48.881l-16.293 114.057c-4.073 32.587 20.366 65.176 57.028 65.176h36.66c32.587 0 61.1-28.514 57.028-65.176l-16.293-118.129c-12.22-24.441-32.587-44.808-61.1-44.808zM576.134 250.44c0-31.494-25.532-57.028-57.028-57.028s-57.028 25.532-57.028 57.028c0 31.495 25.532 57.028 57.028 57.028s57.028-25.532 57.028-57.028z" />
<glyph unicode="&#xe608;" glyph-name="new-link" horiz-adv-x="1017" d="M356.342 175.501l-25.251-25.251c-65.657-65.657-171.714-65.657-237.365-5.050-70.707 60.61-75.755 171.71-5.050 232.314l156.563 151.51c5.050 5.050 10.101 10.101 15.154 15.154 40.402 30.3 95.956 40.402 146.461 30.3 10.101 0 20.201-5.050 30.3-10.101 5.050-5.055 10.101-5.055 20.201-10.101s20.201-15.154 25.251-20.201c0 0 0 0 0 0 15.154-10.101 10.101-30.3 0-45.454l-10.101-15.154c-10.101-10.101-30.3-10.101-45.453 0 0 0 0 0 0 0-10.101 10.101-20.201 15.154-30.302 20.201s-20.201 5.050-30.3 5.050c-15.15 0-35.352-5.050-50.503-15.154-5.050 0-10.101-5.055-15.15-10.101l-156.563-151.51c-35.352-30.3-35.352-90.908 5.050-121.208 35.352-30.302 90.908-25.251 126.255 5.050l20.201 20.201c10.101 10.101 20.201 10.101 35.352 10.101 5.050 0 10.101 0 15.154-5.050 20.201-5.050 30.3-35.352 10.101-55.553zM669.465 705.788c-65.657 65.657-176.76 65.657-242.415 0l-30.3-25.251c-20.201-20.201-10.101-50.503 15.15-55.553 5.050 0 10.101 0 15.154-5.050 10.101-5.050 25.251 0 35.352 10.101l20.201 25.251c35.352 35.352 95.956 35.352 126.258-5.055 15.154-15.154 20.201-30.302 20.201-50.5 15.15 0 25.251 5.055 35.352 5.055h50.503c0 35.352-15.154 70.707-45.453 101.006zM578.555 503.774l-126.258-121.208c-5.050-5.050-10.101-10.101-15.154-15.154-15.154-10.101-30.3-10.101-45.454-10.101-10.101 0-20.201 0-30.3 5.050-15.154 5.050-25.251 10.101-35.352 20.201 0 0 0 0 0 0-15.15 10.101-35.352 15.154-50.503 0l-5.050-10.101c-10.101-10.101-15.154-35.352 0-45.454 0 0 0 0 0 0 10.101-10.101 20.201-15.15 30.3-25.251 5.055-5.050 15.154-10.101 25.251-15.15 5.050 0 15.154-5.050 25.251-5.050 50.5-10.101 101.011 0 146.461 30.3 5.055 5.050 10.101 10.101 15.154 10.101l121.208 116.16c-30.3 15.15-45.453 35.352-55.553 65.657zM977.535 518.925c0-25.251-20.201-40.402-40.402-40.402h-90.906v-85.855c0-25.251-20.201-40.402-45.454-40.402s-40.402 20.201-40.402 40.402v80.806h-85.855c-25.251 0-45.454 20.201-45.454 40.402 0 25.251 20.201 40.402 45.454 40.402h85.855v90.908c0 25.251 20.201 40.402 40.402 40.402 25.251 0 45.454-20.201 45.454-40.402v-85.855h85.855c25.251 0 45.454-20.201 45.454-40.402z" />
<glyph unicode="&#xe609;" glyph-name="wifi" horiz-adv-x="1017" d="M661.1 351.6c16.8-15.8 17.6-41.6 2.1-58.4-7.9-8.6-19-13.3-30.1-13.3-10 0-20.1 3.9-28 11.1-52.7 49.1-140.5 49.8-193.9 2.2-17.2-15.1-43-13.6-58.4 3.6-15.1 16.8-13.6 43 3.6 58.1 41.6 36.9 95 57.3 150.5 57.3 57.5 0 112.3-21.5 154.2-60.6zM581.6 187.1c0-38-31.2-69.2-69.2-69.2-38.3 0-69.5 31.2-69.5 69.2 0 38.4 31.2 69.5 69.5 69.5 38 0 69.2-31.2 69.2-69.5zM896.3 562c-7.9-8.6-18.6-12.5-29.4-12.5-10.4 0-20.8 3.9-28.7 11.5-89.3 86.6-206.8 134.7-331.2 134.7-123.3 0-239.8-47-328.3-131.9-16.5-16.1-42.7-15.4-58.4 1.1-15.8 16.5-15.1 42.3 1.4 58.1 103.9 99.9 240.9 155.1 385.3 155.1 145.9 0 283.9-56.3 388.5-158.1 16.5-15.7 16.9-41.9 0.8-58zM782.6 484.6c16.1-15.8 16.8-41.6 1.1-58.1-8.2-8.6-19-12.5-29.7-12.5-10.4 0-20.8 3.6-28.7 11.5-58.8 56.6-136.6 88.2-218.3 88.2-80.6 0-157-30.5-215.8-85.7-16.5-15.4-42.7-14.7-58.1 1.8-15.8 16.5-14.7 42.7 1.8 58.4 73.9 69.5 170.7 107.8 272.1 107.8 103.2 0 201.1-39.8 275.6-111.4z" />
<glyph unicode="&#xe60a;" glyph-name="faq" horiz-adv-x="1017" d="M751.3 552.4l-1.5-20.8c-0.3-3.4-1.5-10.2-2.4-15-4-22.5-10.9-38.2-18.2-53.6-9-17.2-19.4-32-31-44.7-10.7-12-23.4-23.1-38.8-33.8-13.5-9.2-28.2-17.2-44-23.6-12-4.8-24.4-8.7-36.9-11.6-9.2-23.8-32.4-40.3-58.7-40.3l-2.7 0.1c-32.2 1.4-58.7 27.8-60.1 60.1l-3 38.6c-1.4 33.4 23.1 62.1 55.8 65.9l8.3 0.9c28.9 1.5 58.4 16 72.7 35.3 3.5 4.3 6.1 8.9 8.7 14.8 1.6 4.2 3 9.8 3.2 11.3l-0.1 2.6 1 2.8-0.2 2.3 0.1 7.2-0.7 5c-0.9 5.7-2.3 10.7-4.3 15-8.2 20-27 35.3-47 38.3l-15 0.9c-5.7-0.5-10.4-1.5-14.5-2.9-4.8-1.6-9-3.7-12.9-6.3-2.1-1.4-3.9-2.8-5.7-4.2l-7-6.7c-33.8-32.9-90.1-31.5-122.1 1.6-16 16.5-24.6 38.3-24.1 61.3 0.4 23 9.7 44.4 26.2 60.4 1.5 1.4 3.2 3 4.8 4.3l8.2 6.8c4.6 3.8 8.7 6.8 12.5 9.4 7.7 5.4 15.7 10.3 24.1 14.7 16.5 8.8 34.2 15.4 52.6 19.8 16.7 4 34.4 6.1 52.6 6.1l16.8-0.8c4.8-0.4 6.8-0.6 10.8-1.1 11.1-1.6 22.3-3.3 30.9-6.1 71.2-18.6 129.7-74.2 151.6-144.9 5.3-16.1 8.7-34 9.9-52.8l0.1-16.3zM595.2 197.5c0-41.9-34.1-76-76-76s-76 34.1-76 76c0 41.9 34.1 76 76 76 42-0.1 76-34.1 76-76z" />
<glyph unicode="&#xe60b;" glyph-name="doc" horiz-adv-x="1017" d="M779.9 572.1l-195.3 195c-1.8 1.9-4 3.4-6.2 4.6 2.2-1.2 4.3-2.7 6.1-4.5l195.5-195.2c2.4-2.3 4.2-5.1 5.5-8.1-1.3 3-3.2 5.8-5.6 8.2zM786.9 559c-0.1 0.3-0.1 0.6-0.2 0.9-0.1 0.6-0.3 1.2-0.5 1.8-0.1 0.3-0.2 0.6-0.3 0.9-0.2 0.4-0.3 0.9-0.5 1.3-1.3 3-3.1 5.7-5.5 8.1l-195.4 195.1c-1.8 1.8-3.9 3.3-6.1 4.5-0.3 0.2-0.7 0.3-1 0.5-1.2 0.6-2.4 1-3.6 1.4-0.7 0.2-1.3 0.4-2 0.5-0.1 0-0.2 0-0.3 0-0.6 0.1-1.2 0.2-1.8 0.3-0.1 0-0.2 0-0.3 0-0.6 0.1-1.2 0.1-1.8 0.1-0.1 0-0.2 0-0.2 0-0.2 0-0.5 0-0.7 0h-173.2c-52.8 0-96-43.2-96-96v-181.8c0-7 2.8-13.4 7.5-18 4.6-4.6 11-7.5 18-7.5 14.1 0 25.5 11.4 25.5 25.5v181.9c0 24.9 20.1 45 45 45h147.6v-99c0-52.9 43-96 96-96h99.3v-311.1c0-24.8-20.2-45-45-45h-297.9c-18.7 0-34.6 11.2-41.3 27.4-3.6 8.6-11.1 14.9-20.4 14.9h-4.1c-17.1 0-29.4-17.2-23.1-33 14.1-35.4 48.8-60.3 89-60.3h297.9c53 0 96 43 96 96v336.6c-0.1 1.7-0.3 3.4-0.6 5zM637.1 579.5c-24.8 0-45 20.2-45 45v63l108.2-108h-63.2zM211.2 411.6h54.4c50.4 0 79.6-29 79.6-69.7v-0.4c0-40.7-29.6-70.9-80.4-70.9h-53.6v141zM266.2 305.2c23.4 0 38.9 12.9 38.9 35.7v0.4c0 22.6-15.5 35.7-38.9 35.7h-15.9v-71.7h15.9zM377.7 340.7v0.4c0 40.5 32.6 73.3 76.1 73.3s75.7-32.4 75.7-72.9v-0.4c0-40.5-32.6-73.3-76.1-73.3s-75.7 32.4-75.7 72.9zM489.7 340.7v0.4c0 20.4-14.7 38.1-36.3 38.1-21.4 0-35.7-17.3-35.7-37.7v-0.4c0-20.3 14.7-38.1 36.1-38.1 21.6 0 35.9 17.3 35.9 37.7zM561.6 340.7v0.4c0 41.1 31.6 73.3 74.3 73.3 28.8 0 47.3-12.1 59.8-29.4l-29.4-22.8c-8.1 10.1-17.3 16.5-30.8 16.5-19.7 0-33.6-16.7-33.6-37.3v-0.4c0-21.2 13.9-37.6 33.6-37.6 14.7 0 23.4 6.8 31.8 17.1l29.4-20.9c-13.3-18.3-31.2-31.8-62.4-31.8-40.3 0-72.7 30.8-72.7 72.9z" />
<glyph unicode="&#xe60c;" glyph-name="blocks" horiz-adv-x="1017" d="M800 671.7h-203.6c-48.3 64.7-126.1 102.8-210.9 102.8-90 0-172.1-42.9-219.6-114.7-2.9-4.4-4.4-9.5-4.4-14.7v-122c0-10.5 2.9-20.3 8-28.6-5.1-8.4-8-18.2-8-28.6v-91.3c0-10.4 2.9-20.1 7.8-28.4-5-8.3-7.8-18-7.8-28.4v-91.3c0-30.6 24.9-55.5 55.5-55.5h83.2l31.4-39.5c5.1-6.4 12.7-10 20.8-10h114.6c8.1 0 15.8 3.7 20.8 10l31.4 39.5h251.8c30.6 0 55.5 24.9 55.5 55.5v91.3c0 30.6-24.9 55.5-55.5 55.5h-39.9c0 0.4 0 0.8 0 1.3v91.3c0 0.6 0 1.2 0 1.8h68.8c30.6 0 55.5 24.9 55.5 55.5v93.2c0.1 30.4-24.8 55.3-55.4 55.3zM214.7 465.8c0 0.8 0.4 1.4 1 1.8 0.4 0.3 0.8 0.4 1.3 0.4h83.2l31.4-39.5c5.1-6.3 12.7-10 20.8-10h114.6c8.1 0 15.8 3.7 20.8 10l31.4 39.5h156.4c0.5 0 1-0.2 1.3-0.4 0.6-0.4 0.9-1 0.9-1.8v-91.3c0-0.5-0.1-0.9-0.4-1.3-0.4-0.6-1-1-1.8-1h-169.1c-8.1 0-15.8-3.7-20.8-10l-31.5-39.5h-88.9l-31.4 39.5c-5 6.3-12.7 10-20.8 10h-96c-0.7 0-1.4 0.4-1.8 0.9-0.3 0.4-0.4 0.8-0.4 1.3v91.4zM771.2 320c1.2 0 2.2-1 2.2-2.2v-91.3c0-1.2-1-2.2-2.2-2.2h-264.7c-8.1 0-15.8-3.7-20.8-10l-31.5-39.5h-88.9l-31.4 39.5c-5 6.3-12.7 10-20.8 10h-96c-1.2 0-2.2 1-2.2 2.2v91.3c0 0.5 0.2 0.9 0.4 1.3 0.4 0.6 1.1 0.9 1.8 0.9h83.1l31.4-39.5c5.1-6.3 12.7-10.1 20.8-10.1h114.6c8.1 0 15.8 3.7 20.8 10.1l31.4 39.5h252zM802.2 523.1c0-1.2-1-2.2-2.2-2.2h-293.5c-8.1 0-15.8-3.7-20.8-10l-31.5-39.5h-88.9l-31.4 39.5c-5 6.3-12.7 10-20.8 10h-96c-0.5 0-0.9 0.2-1.3 0.4-0.6 0.4-1 1.1-1 1.8v113.7c38.1 53 101.4 84.4 170.7 84.4 72 0 137.4-34 174.9-90.8 4.9-7.5 13.3-12 22.2-12h217.4c1.2 0 2.2-1 2.2-2.2v-93.1z" />
<glyph unicode="&#xe60d;" glyph-name="gears" horiz-adv-x="1017" d="M730.7 432c0 0-0.2 0-0.2 0l-28 0.2c-22 0-41.1 15.9-45.2 37.8l-2.8 15.4c-0.7 3.7-3.6 5.7-5.4 6.6-0.5 0.2-0.9 0.3-1.2 0.5-3.2 1.4-6.7 1.2-9-0.4l-12.8-8.7c-7.6-5.3-16.7-8-26-8v0c-12.4 0-24 4.8-32.8 13.6l-19.8 20c-15.7 15.8-17.8 40.6-5 58.8l8.8 12.7c1.7 2.4 2.1 5.5 1 8.1-2.1 5.1-4.5 7-7.4 7.6l-15.3 2.9c-21.9 4.3-37.6 23.4-37.5 45.5l0.1 27.9c0.1 22.1 16 41.1 37.7 45.2l15.5 2.8c2.9 0.5 5.3 2.4 6.4 4.9 0.3 0.7 1.6 3.5 1.9 4.2 0.4 1.1 0.1 4.1-1.6 6.6l-8.7 12.8c-12.6 18.3-10.2 43 5.5 58.7l20 19.8c15.4 15.2 40.9 17.5 58.7 5.2l12.8-8.9c1.6-1.1 3.3-1.6 5-1.6l4.2 1.1c4.1 1.6 6 4 6.6 7l2.8 15.2c4.4 21.9 23.4 37.6 45.4 37.6l28.2-0.1c22.1-0.1 41.1-16 45.2-37.7l2.8-15.6c0.5-2.8 2.5-5.3 5-6.3l5.7-1.7c1.8 0 3.4 0.5 4.9 1.5l12.9 8.8c18.2 12.3 43.4 9.6 58.7-5.7l19.7-19.9c15.7-15.9 17.8-40.6 5.1-58.8l-11.5-16.6c1-2.3 2-4.5 2.9-6.8 1.1-2.6 3.4-4.5 6.4-5.1l15.2-2.8c22-4.3 37.7-23.4 37.6-45.5l-0.1-28c-0.1-22.2-16-41.2-37.9-45.2l-15.3-2.8c-3-0.5-5.5-2.7-6.9-5.9-0.1-0.2-0.2-0.4-0.2-0.6-1.4-4.3-1.1-7.1 0.4-9.2l8.7-12.8c12.6-18.3 10.2-43-5.6-58.7l-19.9-19.7c-15.8-15.4-41.1-17.5-58.8-5.1l-12.8 8.9c-1.5 1.1-3.2 1.6-5 1.6-0.6-0.3-5.8-1.7-6.4-1.9-1.9-0.7-3.8-3.2-4.4-6.2l-2.8-15.1c-4.4-22.4-23.5-38.1-45.5-38.1zM714.2 492h5.1l0.7 4.1c4.6 23.4 20.3 42.3 41.9 50.8 25.3 10.6 47.9 6.8 66.9-6.4l3.4-2.4 3.6 3.6-2.3 3.3c-13.2 19.4-15.5 44.1-6.1 66.3 0.2 0.4 0.4 0.8 0.5 1.2 9.3 21.6 28.4 36.8 51.1 40.9l4 0.7v5.1l-4 0.7c-23.2 4.5-42.1 20.1-50.8 41.8-2.2 5.6-4.8 10.8-7.8 15.9-6 10.1-5.5 22.7 1.1 32.3l15.3 22.2-3.6 3.7-3.3-2.3c-19.1-13-44.2-15.6-65.5-6.4-23.3 9.6-38.6 28.7-42.9 51.8l-0.5 4.1h-5.1l-0.7-4c-4.5-23.2-20.1-42.1-41.7-50.8-25.7-10.6-48.2-6.9-67.1 6.4l-3.4 2.4-3.7-3.7 2.3-3.3c13.3-19.5 15.6-43.9 6.4-65.5-9.6-23.4-28.7-38.8-51.9-42.9l-4-0.7v-5.1l4.1-0.8c23-4.4 42-20 50.7-41.6 9.7-23.4 7.1-47.8-6.3-67.1l-2.3-3.4 3.6-3.6 3.3 2.2c18.6 12.8 43.3 15.3 64.9 6.7 0.6-0.2 1.2-0.5 1.8-0.7 22-9.3 37.7-28.6 41.8-51.6l0.5-3.9zM273.3 13.2c-6.7 0-13.1 1.3-19.3 3.8l-33.3 13.8c-22.5 9.3-35.3 33.3-30.3 57.2l4.2 19.8c1.3 6.2-0.8 13-5.7 18.2-0.1 0-0.2 0.1-0.2 0.2-5.1 5.1-10.4 7.4-15.8 7.4l-23.4-4.6c-3.5-0.7-7.1-1.1-10.7-1.1v0c-20.5 0-38.9 12.3-46.8 31.3l-13.8 33.1c-9.5 22.5-1.4 48.7 19.2 62l16.7 10.9c5.5 3.6 8.9 10.3 8.9 17.7 0 0.5 0 0.9 0 1.4-0.2 7.2-3.6 13.6-9 17.2l-16.7 10.8c-20.5 13.2-28.7 39.3-19.3 62l13.7 33.2c9.2 22.4 33.6 35.4 57.5 30.3l19.4-4.1c9.4-0.5 14.5 1.9 18.8 6.1 0.2 0.2 0.5 0.5 0.7 0.7 5.1 5.3 7.4 12.3 6 18.8l-4.2 19.5c-5.1 23.9 7.5 48.1 30.1 57.5l33 13.7c22.9 9.2 48.9 0.8 62-19.1l11-16.8c3.9-5.9 11.3-8.3 19-8.9 7.2 0.2 13.6 3.6 17.2 9l10.8 16.7c13 20.1 39.7 28.5 61.8 19.4l33.4-13.8c22.5-9.3 35.3-33.4 30.3-57.3l-4.1-19.6c-1.4-6.5 0.8-13.3 5.8-18.5 0.3-0.3 0.6-0.6 0.9-0.9 4.2-4.2 9.5-6.5 14.9-6.5 0 0 3.9 0.4 4 0.4l19.5 4.2c24 5.1 48.1-7.9 57.4-30.2l13.8-33.2c9.5-22.5 1.4-48.6-19.1-62l-16.8-10.9c-5.5-3.6-8.9-10.2-8.9-17.7 0-0.5 0-0.9 0-1.4 0.2-7.2 3.6-13.6 9-17.1l16.7-10.8c20.6-13.3 28.7-39.4 19.3-62l-13.7-33c-9.2-22.4-33.8-35.3-57.5-30.3l-19.3 4c-9.5 0.3-14.7-1.9-19-6.2-0.1-0.1-0.2-0.2-0.3-0.3 0 0-0.1-0.1-0.1-0.1-5.3-5.3-7.5-12.3-6.1-18.9l4.2-19.5c5.1-23.8-7.5-48-30.1-57.5l-33.3-13.8c-22.5-9.2-48.8-0.9-61.9 19l-11 16.9c-3.9 5.9-10.4 8.2-19 9-7.2-0.2-13.6-3.6-17.2-9l-10.8-16.7c-9.4-14.7-25.3-23.4-42.5-23.4zM346.1 122.1c27.6-0.4 52.5-13.8 66.9-36.2l7-10.8 18.9 8.3-2.6 12.2c-5.7 26.5 2.7 54.1 22.3 73.8 0.1 0.1 0.2 0.2 0.3 0.3s0.1 0.1 0.2 0.2c19.5 19.5 47.2 27.9 73.6 22.5l12.1-2.5 7.9 19.2-10.3 6.7c-22.7 14.8-36.3 40.2-36.4 68 0 0.6 0 1.1 0 1.7 0.3 27.4 13.7 52.4 36 67l10.4 6.7-8 19.3-12-2.7c-25.9-5.7-53.5 2.6-73 21.6-0.2 0.2-0.4 0.3-0.5 0.5-0.2 0.2-0.3 0.3-0.5 0.5-19.8 19.7-28.3 47.3-22.6 73.9l2.5 11.9-19.2 8-6.7-10.4c-14.8-22.7-40.2-36.3-68-36.4-0.5-0.1-1.1 0-1.7 0-27.5 0.4-52.5 13.8-66.9 36.2l-7.1 10.8-18.9-8.3 2.6-12.2c5.7-26.5-2.7-54.1-22.3-73.8v0c0 0-0.1-0.1-0.1-0.1-0.1-0.1-0.2-0.2-0.4-0.4-19.5-19.5-47.1-28-73.6-22.5l-12.1 2.5-7.9-19.1 10.3-6.7c22.7-14.8 36.3-40.2 36.4-68 0-0.6 0-1.1 0-1.7-0.3-27.3-13.6-52.3-36-67l-10.4-6.8 8-19.2 12 2.7c26.1 5.4 52.2-2.3 71.5-20.2 1.1-0.7 1.2-1.1 2.6-2.5 19.8-19.7 28.3-47.2 22.7-73.7l-2.6-12.2 19.2-7.9 6.7 10.4c14.8 22.7 40.2 36.3 68 36.4 0.4 0.1 1.1 0 1.7 0zM344.3 191.3c-50.9 0-92.3 41.4-92.3 92.3s41.4 92.3 92.3 92.3 92.3-41.4 92.3-92.3-41.3-92.3-92.3-92.3zM344.3 316.1c-17.9 0-32.4-14.5-32.4-32.4s14.5-32.4 32.4-32.4 32.4 14.5 32.4 32.4-14.5 32.4-32.4 32.4zM717.5 605.3c-28.7 0-52.1 23.4-52.1 52.1s23.4 52.1 52.1 52.1c28.7 0 52.1-23.4 52.1-52.1s-23.3-52.1-52.1-52.1zM717.5 665.2c-4.3 0-7.8-3.5-7.8-7.8 0-8.6 15.5-8.6 15.5 0 0.1 4.4-3.4 7.8-7.7 7.8z" />
<glyph unicode="&#xe60e;" glyph-name="gear" horiz-adv-x="1017" d="M420.5 108.1c-8.9 0-17.6 1.7-25.9 5.1l-41.2 17.1c-30.2 12.3-47.3 44.7-40.6 76.8l5.2 24.3c1.3 6.1-0.9 12.7-5.7 18-0.1 0.1-0.2 0.2-0.3 0.3-6.4 6.5-13.1 8.5-19.6 7.1l-24.2-5.2c-4.5-1-9.4-1.5-14.2-1.5v0c-27.4 0-52 16.4-62.6 41.8l-17.3 41.1c-12.6 30.3-1.8 65.2 25.6 83.1l20.8 13.5c5.3 3.5 8.6 10.1 8.6 17.6 0 0.5 0 1 0 1.5-0.2 7.2-3.5 13.6-8.9 17.1l-20.5 13.2c-27.5 17.8-38.4 52.7-26 83l16.9 41.1c12.3 30 45.1 47.3 77 40.6l24.1-5c7-1.5 13.4 1 18.7 6.3v0c0.3 0.3 0.6 0.6 0.9 0.9 5 5.2 7.2 12.1 5.8 18.3l-5.2 24.1c-6.9 32 10 64.4 40.2 77l41.2 17.1c30.6 12.5 65.6 1.1 83-25.5l13.6-20.9c3.7-5.8 10.9-8.5 18.9-8.7 7.3 0.2 13.6 3.5 17.1 8.8l13.6 20.9c17.4 26.9 53.1 38.2 82.9 25.9l41.2-17.1c30.1-12.4 47.2-44.7 40.6-76.7l-5.1-24.2c-1.4-6.4 0.8-13.2 5.8-18.3 0.4-0.3 0.7-0.7 1.1-1 5.2-5.2 11.9-7.4 18.5-6.2l24.2 5.2c32.7 6.7 64.6-10.7 76.9-40.5l17.1-41c12.7-30.2 1.9-65.2-25.7-83.1l-20.7-13.4c-5.3-3.5-8.6-10.1-8.6-17.6 0-0.5 0-1 0-1.5 0.2-7.2 3.5-13.6 8.9-17.1l20.6-13.3c27.5-17.8 38.4-52.7 26-83l-17-41.2c-12.4-29.9-45.1-47.2-77-40.6l-24.1 5c-6.6 1.3-13.4-1-18.7-6.3-0.1-0.1-0.3-0.3-0.4-0.4 0-0.1-0.1-0.1-0.1-0.2-5.3-5.2-7.6-12.2-6.2-18.7l5.2-24.1c6.9-32-10-64.4-40.2-77l-41.2-17.1c-30.1-12.4-65.5-1.1-83 25.6l-13.5 20.9c-3.8 5.9-10.9 8.2-19.4 8.7-7.1-0.4-13.3-3.6-16.7-8.9l-13.3-20.7c-12.6-19.4-34-31-57.1-31zM398.3 203.1l15.8-6.5 6 9.2c19.3 29.6 52.3 47.3 88.4 47.5 1 0 2 0 3-0.1 35.7-0.7 67.7-18.2 86.4-47.1l5.9-9.1 15.8 6.6-2.3 10.7c-7.4 34.6 3.4 70.5 29 96.1 0.1 0.1 0.3 0.3 0.4 0.4 0 0 0.1 0.1 0.1 0.1 25.4 25.4 61.3 36.4 95.8 29.3l10.9-2.3 6.5 15.8-9.2 5.9c-29.6 19.3-47.3 52.3-47.5 88.4 0 0.6 0 1.3 0.1 2 0.3 35.7 17.8 68.3 46.9 87.3l9.3 6.1-6.7 16-10.7-2.5c-33.8-7.3-69.9 3.4-95.3 28.3-0.2 0.1-0.3 0.3-0.5 0.5s-0.4 0.4-0.5 0.5c-25.9 25.5-36.9 61.5-29.5 96.3l2.2 10.6-15.9 6.6-6-9.3c-19.2-29.6-52.2-47.3-88.4-47.4-0.8 0.1-1.4 0-2 0.1-35.9 0.4-68.4 18-87.4 47.2l-5.9 9.1-15.8-6.6 2.3-10.7c7.5-34.5-3.4-70.4-29-96.1v0c-0.4-0.4-0.8-0.7-1.1-1.1-25.4-25-61-36-95.3-28.7l-10.8 2.2-6.5-15.8 9.1-5.9c29.7-19.3 47.4-52.4 47.5-88.5 0-0.6 0-1.3-0.1-1.9-0.3-35.7-17.8-68.3-46.9-87.3l-9.3-6.1 6.6-15.9 10.8 2.5c34.2 7.2 69.6-3.4 94.8-28 0.5-0.5 1-0.9 1.5-1.4 25.8-25.6 36.8-61.5 29.5-96.1l-2-10.9zM508.5 328.6c-65.9 0-119.5 53.6-119.5 119.5s53.6 119.5 119.5 119.5 119.5-53.6 119.5-119.5-53.6-119.5-119.5-119.5zM508.5 483.1c-19.3 0-35-15.7-35-35s15.7-35 35-35c19.3 0 35 15.7 35 35s-15.7 35-35 35z" />
</font></defs></svg>

Before

(image error) Size: 24 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

(image error) Size: 48 KiB

Binary file not shown.

Before

(image error) Size: 83 KiB

Binary file not shown.

Before

(image error) Size: 176 KiB

Binary file not shown.

Before

(image error) Size: 53 KiB

Binary file not shown.

Before

(image error) Size: 56 KiB

Binary file not shown.

Before

(image error) Size: 6.4 KiB

Binary file not shown.

Before

(image error) Size: 322 KiB

Binary file not shown.

Before

(image error) Size: 103 KiB

Binary file not shown.

Before

(image error) Size: 80 KiB

Binary file not shown.

Before

(image error) Size: 44 KiB

Binary file not shown.

Before

(image error) Size: 33 KiB

Binary file not shown.

Before

(image error) Size: 17 KiB

Binary file not shown.

Before

(image error) Size: 34 KiB

Binary file not shown.

Before

(image error) Size: 13 KiB

Binary file not shown.

Before

(image error) Size: 108 KiB

Binary file not shown.

Before

(image error) Size: 33 KiB

Binary file not shown.

Before

(image error) Size: 46 KiB

Binary file not shown.

Before

(image error) Size: 67 KiB

Binary file not shown.

Before

(image error) Size: 154 KiB

Binary file not shown.

Before

(image error) Size: 48 KiB

Binary file not shown.

Before

(image error) Size: 13 KiB

Binary file not shown.

Before

(image error) Size: 38 KiB

Binary file not shown.

Before

(image error) Size: 12 KiB

Binary file not shown.

Before

(image error) Size: 54 KiB

Binary file not shown.

Before

(image error) Size: 174 KiB

Binary file not shown.

Before

(image error) Size: 61 KiB

Binary file not shown.

Before

(image error) Size: 168 KiB

Binary file not shown.

Before

(image error) Size: 48 KiB

Binary file not shown.

Before

(image error) Size: 29 KiB

Binary file not shown.

Before

(image error) Size: 231 KiB

Binary file not shown.

Before

(image error) Size: 42 KiB

Binary file not shown.

Before

(image error) Size: 54 KiB

Binary file not shown.

Before

(image error) Size: 249 KiB

Binary file not shown.

Before

(image error) Size: 80 KiB

Binary file not shown.

Before

(image error) Size: 8.6 KiB

Binary file not shown.

Before

(image error) Size: 28 KiB

Binary file not shown.

Before

(image error) Size: 20 KiB

Binary file not shown.

Before

(image error) Size: 14 KiB

Binary file not shown.

Before

(image error) Size: 148 KiB

Binary file not shown.

Before

(image error) Size: 53 KiB

Binary file not shown.

Before

(image error) Size: 4.4 KiB

Binary file not shown.

Before

(image error) Size: 43 KiB

Binary file not shown.

Before

(image error) Size: 20 KiB

Binary file not shown.

Before

(image error) Size: 27 KiB

Binary file not shown.

Before

(image error) Size: 5.9 KiB

Binary file not shown.

Before

(image error) Size: 7.5 KiB

Binary file not shown.

Before

(image error) Size: 6.5 KiB

View file

@ -1,841 +0,0 @@
<!DOCTYPE html>
<html lang="en"> <!-- Set this to the main language of your site -->
<head>
<meta charset="utf-8">
<title>ScratchX</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/scratchx.css" rel="stylesheet" type="text/css">
</head>
<body>
<main>
<header>
<div>
<a href="#home"><h1 class="scratchx-logo"><span>ScratchX</span></h1></a>
<nav class="main-nav">
<ul>
<li><a href="#faq">FAQ</a></li>
<li><a href="#extensions">See all Extensions</a></li>
</ul>
</nav>
</div>
</header>
<article id="home">
<header>
<section>
<div>
<h1>Play with Experimental Extensions to Scratch!</h1>
<p>With Experimental Extensions, you can create Scratch projects that connect with external hardware (such as electronic devices and robotics) and online resources (including web data and web services).</p>
</div>
<div class="open-extension">
<a href="#" data-action="modal" data-template="template-extension-file">Open Extension File</a>
</div>
<div class="open-url">
<a href="#" data-action="modal" data-template="template-extension-url">Open Extension URL</a>
</div>
</section>
<ul class="featured-extensions">
<li class="featured-extension">
<a href="http://ericrosenbaum.github.io/spotify-extension/">
<img src="images/extensions/spotify_large.png" alt="Spotify" />
<section>
<h2>Spotify</h2>
<p class="author">Eric Rosenbaum</p>
</section>
</a>
</li>
<li class="featured-extension">
<a href="http://llk.github.io/microbit-extension/">
<img src="images/extensions/microbit_small.png" alt="micro:bit" />
<section>
<h2>micro:bit</h2>
<p class="author">Kreg Hanning</p>
</section>
</a>
</li>
<li class="featured-extension">
<a href="?url=https://scratchx.org/tmp/TalkingGobo.sbx" data-action="load-url">
<img src="images/extensions/text-extension-sm.png" alt="Text To Speech" />
<section>
<h2>Text to Speech</h2>
<p class="author">Sayamindu Dasgupta</p>
</section>
</a>
</li>
<li class="featured-extension">
<a href="http://khanning.github.io/scratch-arduino-extension/">
<img src="images/extensions/arduino_small.png" alt="Arduino" />
<section>
<h2>Arduino</h2>
<p class="author">Kreg Hanning, David Mellis</p>
</section>
</a>
</li>
</ul>
<div class="bottom-row">
<div>
<aside class="icon-gears">Most physical extensions require the Scratch Device Plugin - <a href="http://scratch.mit.edu/info/ext_download/">Download here</a></aside>
<a href="#extensions"><button>See all Extensions</button></a>
</div>
</div>
</header>
<aside class="warning message"><strong>Warning:</strong> all extensions are experimental and not a product of the Scratch Team. <a href="#faq">Find out more</a></aside>
<section class="scratch-vs-scratchx">
<div><div>
<div>
<div>
<h2 class="logo-scratch">Scratch</h2>
<p>With the Scratch programming language, you can create your own interactive stories, games, and animations &mdash; and share your creations with others in an online community. <a href="https://scratch.mit.edu">Take me to Scratch</a></p>
</div>
</div>
<div>
<div>
<h2 class="logo-scratchx">ScratchX</h2>
<p>On the ScratchX website, you can play with Experimental Extensions to Scratch. Because these extensions are experimental and not endorsed or supported by the Scratch Team, they are available only on the ScratchX site, not the main Scratch site. <a href="#extensions">Try out ScratchX</a></p>
</div>
</div>
</div></div>
</section>
<section class="who-uses-scratchx">
<div><div>
<div>
<h2>Who uses ScratchX?</h2>
<p><strong>Anyone</strong> can access and play with Experimental Extensions on ScratchX. Integrate <a href="?url=http://technoboy10.github.io/twitter/extension.js" data-action="load-url">Twitter</a> feeds into your Scratch project, connect with hardware like <a href="?url=http://khanning.github.io/scratch-arduino-extension/arduino_extension.js" data-action="load-url">Arduino</a> and <a href="?url=http://MrYsLab.github.io/xi4s.js" data-action="load-url">Raspberry Pi</a>, and <a href="#extensions">much much more.</a></p>
<p><strong>Developers</strong> can use ScratchX to create and test new Experimental Extensions. Learn more about ScratchX in our <a href="https://github.com/LLK/scratchx/wiki/">developer documentation</a></p>
</div>
</div></div>
</section>
<nav>
<ul>
<li class="faq"><a href="#faq">Frequently Asked Questions</a></li>
<li class="extensions"><a href="#extensions">See all Extensions</a></li>
<li class="documentation"><a href="https://github.com/LLK/scratchx/wiki/">Developer Documentation</a></li>
</ul>
</nav>
</article>
<article id="extensions">
<section class="intro">
<div>
<div>
<h1>Gallery of Experimental Extensions</h1>
<p>With Experimental Extensions, you can create Scratch projects that connect with external hardware and online resources. Try examples below to see the wide variety of things you can do with Experimental Extensions!</p>
<p>If you are a developer with an extension that you'd like to submit to our gallery, read more about the <a href="https://github.com/LLK/scratchx/wiki#how-do-i-submit-my-extension-for-consideration-on-scratchx" target="_blank">submission process here</a>.</p>
</div>
</div>
</section>
<aside class="warning message"><strong>Warning:</strong> all extensions are experimental and not a product of the Scratch Team. <a href="#faq">Find out more</a></aside>
<section class="gallery">
<div>
<ul>
<li>
<a href="?url=https://khanning.github.io/scratch-arduino-extension/arduino_extension.js" data-action="load-url">
<header>
<h2>Arduino</h2>
<p class="author">Kreg Hanning, David Mellis</p>
</header>
<img src="images/extensions/arduino_small.png" alt="Arduino" />
</a>
<section class="description">
<p>Control Arduino boards</p>
<a href="?url=https://khanning.github.io/scratch-arduino-extension/examples/Arduino%20Example%20-%20Blink%20an%20LED.sbx" data-action="load-url">Sample Project</a>
<a href="https://khanning.github.io/scratch-arduino-extension/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=http://llk.github.io/arduino-101/arduino101_serial_extension.js" data-action="load-url">
<header>
<h2>Arduino 101</h2>
<p class="author">Kreg Hanning</p>
</header>
<img src="images/extensions/arduino101_small.png" />
</a>
<section class="description">
<p>Control Arduino/Genuino 101 boards</p>
<a href="?url=http://llk.github.io/arduino-101/examples/Blink.sbx" data-action="load-url">Sample Project</a>
<a href="https://llk.github.io/arduino-101/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="https://eesh.github.io/clarifai-scratch/">
<header>
<h2>Clarifai</h2>
<p class="author">Stefania Druga &amp; Eesh Likhith</p>
</header>
<img src="images/extensions/clarifai_small.png" alt="Clarifai" />
</a>
<section class="description">
<p>Recognize images from your webcam.</p>
<a href="?url=http://eesh.github.io/clarifai-scratch/examples/clarifai_camera.sbx" data-action="load-url">Sample Project</a>
<a href="https://eesh.github.io/clarifai-scratch/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag web" title="Web Extension">Requires Internet Connection</span>
</section>
</li>
<li>
<a href="?url=https://kaspesla.github.io/ev3_scratch/ev3_scratch.js" data-action="load-url">
<header>
<h2>EV3+Scratch</h2>
<p class="author">Ken Aspeslagh</p>
</header>
<img src="images/extensions/ev3_small.png" alt="EV3+Scratch" />
</a>
<section class="description">
<p>Control LEGO EV3 robots wirelessly</p>
<a href="?url=https://kaspesla.github.io/ev3_scratch/examples/avoid%20obstacles%20example.sbx" data-action="load-url">Sample Project</a>
<a href="https://kaspesla.github.io/ev3_scratch/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=http://Robotec-CoderZ.github.io/he.js" data-action="load-url">
<header>
<h2>EV3+Scratch (Hebrew Version)</h2>
<p class="author">Robotec Israel</p>
</header>
<img src="images/extensions/robotec_small.png" alt="EV3+Scratch (Hebrew Version)" />
</a>
<section class="description">
<p>Control LEGO EV3 over USB (Hebrew)</p>
<a href="?url=http://Robotec-CoderZ.github.io/he-example.sbx" data-action="load-url">Sample Project</a>
<a href="https://robotec-coderz.github.io/index.html">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=https://technoboy10.github.io/mesh/mesh.js" data-action="load-url">
<header>
<h2>Firebase Mesh</h2>
<p class="author">Connor Hudson</p>
</header>
<img src="images/extensions/mesh-extension-sm.png" alt="Firebase Mesh" />
</a>
<section class="description">
<p>Broadcast messages to other projects!</p>
<a href="?url=https://technoboy10.github.io/mesh/mesh.sbx" data-action="load-url">Sample Project</a>
<a href="https://technoboy10.github.io/mesh/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag web" title="Web Extension">Requires Internet Connection</span>
</section>
</li>
<li>
<a href="?url=http://adihadas.github.io/ftscratch/src/ext_heb.js" data-action="load-url">
<header>
<h2>Fischertechnik robots</h2>
<p class="author">Fischertechnik Israel</p>
</header>
<img src="images/extensions/fischertechnik-extension-sm.png" alt="Fischertechnik robots" />
</a>
<section class="description">
<p>TXT controller programming (Hebrew)</p>
<a href="?url=http://adihadas.github.io/ftscratch/src/Black_Line_Drive.sbx" data-action="load-url">Sample Project</a>
<a href="https://adihadas.github.io/ftscratch/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=https://intel-realsense-extension-for-scratch.github.io/public/extension/intel_realsense_extension.js" data-action="load-url">
<header>
<h2>Intel&reg; RealSense&trade;</h2>
<p class="author">Shachar Oz, Yaron Yanai, Yotam Salmon</p>
</header>
<img src="images/extensions/realsense_small.png" alt="Intel RealSense" />
</a>
<section class="description">
<p>Hand Gestures, face tracking, voice commands</p>
<a href="?url=https://intel-realsense-extension-for-scratch.github.io/public/extension/samples/Realsense_Block_Usages.sbx" data-action="load-url">Sample Project</a>
<a href="https://intel-realsense-extension-for-scratch.github.io/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=http://irobotstem.github.io/CreateScratchX/roomba600Extension.js" data-action="load-url">
<header>
<h2>iRobot&reg; Create&reg; 2</h2>
<p class="author">iRobot</p>
</header>
<img src="images/extensions/iRobot_small.png" alt="iRobot® Create® 2" />
</a>
<section class="description">
<p>Control iRobot&reg; Create&reg; 2</p>
<a href="?url=https://irobotstem.github.io/CreateScratchX/examples/Create%20Example%20-%20Tethered%20Driving.sbx" data-action="load-url">Sample Project</a>
<a href="https://irobotstem.github.io/CreateScratchX/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=http://khanning.github.io/scratch-isstracker-extension/iss_extension.js" data-action="load-url">
<header>
<h2>ISS Tracker</h2>
<p class="author">Kreg Hanning</p>
</header>
<img src="images/extensions/ISSTracker_small.png" alt="ISS Tracker" />
</a>
<section class="description">
<p>International Space Station tracker</p>
<a href="?url=https://khanning.github.io/scratch-isstracker-extension/examples/ISS%20Tracker.sbx" data-action="load-url">Sample Project</a>
<a href="https://khanning.github.io/scratch-isstracker-extension/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag web" title="Web Extension">Requires Internet Connection</span>
</section>
</li>
<li>
<a href="?url=https://khanning.github.io/scratch-leapmotion-extension/leapmotion_extension.js" data-action="load-url">
<header>
<h2>Leapmotion</h2>
<p class="author">Kreg Hanning</p>
</header>
<img src="images/extensions/leapmotion_small.png" alt="Leapmotion" />
</a>
<section class="description">
<p>Hand and finger tracking</p>
<a href="?url=https://khanning.github.io/scratch-leapmotion-extension/examples/Leap%20Motion%20Example%20-%20Hand%20Skeleton.sbx" data-action="load-url">Sample Project</a>
<a href="https://khanning.github.io/scratch-leapmotion-extension/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=https://khanning.github.io/scratch-littlebits-extension/littlebits_extension.js" data-action="load-url">
<header>
<h2>littleBits</h2>
<p class="author">Kreg Hanning</p>
</header>
<img src="images/extensions/littlebits_small.jpg" alt="littleBits" />
</a>
<section class="description">
<p>Control littleBits creations</p>
<a href="?url=https://khanning.github.io/scratch-littlebits-extension/examples/littleBits%20-%20Move%20with%20Dimmer.sbx" data-action="load-url">Sample Project</a>
<a href="https://khanning.github.io/scratch-littlebits-extension/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=https://creativecomputerlab.github.io/MakeSenseConnector-1.0.js" data-action="load-url">
<header>
<h2>Make!Sense</h2>
<p class="author">Stephen Lewis, Deqing Sun, Steven Holmes</p>
</header>
<img src="images/extensions/makesense_small.png" alt="Make!Sense" />
</a>
<section class="description">
<p>Sensor interface board and sensors</p>
<a href="?url=https://creativecomputerlab.github.io/DataBufferAnalog.sbx" data-action="load-url">Sample Project</a>
<a href="https://creativecomputerlab.com/makesense.html#datamodeinstructions" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=http://llk.github.io/microbit-extension/microbit_extension.js" data-action="load-url">
<header>
<h2>micro:bit</h2>
<p class="author">Kreg Hanning</p>
</header>
<img src="images/extensions/microbit_small.png" alt="micro:bit" />
</a>
<section class="description">
<p>Control micro:bit over bluetooth</p>
<a href="?url=http://llk.github.io/microbit-extension/examples/Button.sbx" data-action="load-url">Sample Project</a>
<a href="https://llk.github.io/microbit-extension" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=http://thepocketlab.github.io/ScratchX/pocketlab_extension.js" data-action="load-url">
<header>
<h2>PocketLab for Scratch</h2>
<p class="author">The PocketLab by Myriad Sensors, Inc</p>
</header>
<img src="images/extensions/pocketlab_small.png" alt="pocketlab" />
</a>
<section class="description">
<p>Real time PocketLab sensor data!</p>
<a href="?url=http://thepocketlab.github.io/ScratchX/SpaceBlaster.sbx" data-action="load-url">Sample Project</a>
<a href="http://www.thepocketlab.com/support/article/pocketlab-scratch-integration-beta" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="https://eesh.github.io/scratch-test/">
<header>
<h2>Poppy Ergo Jr.</h2>
<p class="author">Stefania Druga &amp; Eesh Likhith</p>
</header>
<img src="images/extensions/poppy_small.png" alt="Poppy Ergo Jr." />
</a>
<section class="description">
<p>Control the Poppy Ergo Jr. robot</p>
<a href="?url=http://eesh.github.io/scratch-test/examples/record_playback.sbx" data-action="load-url">Sample Project</a>
<a href="https://eesh.github.io/scratch-test/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=https://MrYsLab.github.io/rb4s/rb4s.js" data-action="load-url">
<header>
<h2>rb4s A Controller For The RedBot</h2>
<p class="author">Alan Yorinks</p>
</header>
<img src="images/extensions/rb4s_small.png" alt="rb4s A Controller For The RedBot" />
</a>
<section class="description">
<p>Control and Monitor a RedBot Robot</p>
<a href="?url=https://MrYsLab.github.io/rb4s/quickTest.sbx" data-action="load-url">Sample Project</a>
<a href="https://github.com/MrYsLab/rb4s/wiki">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=https://roamereducationalrobot.github.io/RoamerScratchX/roamer.js" data-action="load-url">
<header>
<h2>Roamer</h2>
<p class="author">Kevin Rands, Dave Ewins, Dave Catlin</p>
</header>
<img src="images/extensions/roamer_small.png" alt="Roamer" />
</a>
<section class="description">
<p>Programming Roamer&reg; with ScratchX</p>
<a href="?url=https://roamereducationalrobot.github.io/RoamerScratchX/The%20Scarlet%20Pumpernickel.sbx" data-action="load-url">Sample Project</a>
<a href="https://www.roamer-educational-robot.com/roamer-scratchx-training/">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=https://scratch3d.github.io/Scratch3D_Beta/extension/ScratchThreeJS.js" data-action="load-url">
<header>
<h2>Scratch3D</h2>
<p class="author">Stephen Lewis, John Goodwin</p>
</header>
<img src="images/extensions/scratch3d_small.png" alt="Scratch3D" />
</a>
<section class="description">
<p>Fully 3D Environment</p>
<a href="?url=https://scratch3d.github.io/examples/tierOne/HelloWorld.sbx" data-action="load-url">Sample Project</a>
<a href="https://www.scratch3d.org" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag web" title="Web Extension">Requires Internet Connection</span>
</section>
</li>
<li>
<a href="?url=https://ericrosenbaum.github.io/tone-synth-extension/tone-synth.js" data-action="load-url">
<header>
<h2>Sound Synthesizer</h2>
<p class="author">Eric Rosenbaum</p>
</header>
<img src="images/extensions/synth-extension-lg.png" alt="Sound Synthesizer" />
</a>
<section class="description">
<p>Synthesize sound effects and music</p>
<a href="?url=https://ericrosenbaum.github.io/tone-synth-extension/examples/Gobo%20In%20Space.sbx" data-action="load-url">Sample Project</a>
<a href="https://ericrosenbaum.github.io/tone-synth-extension" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag web" title="Web Extension">Requires Internet Connection</span>
</section>
</li>
<li>
<a href="https://ericrosenbaum.github.io/spotify-extension/" target="_blank">
<header>
<h2>Spotify Music</h2>
<p class="author">Eric Rosenbaum</p>
</header>
<img src="images/extensions/spotify_large.png" alt="Spotify Music" />
</a>
<section class="description">
<p>Animate and remix millions of songs!</p>
<a href="?url=http://ericrosenbaum.github.io/spotify-extension/examples/dance-party.sbx#scratch" data-action="load-url">Sample Project</a>
<a href="https://ericrosenbaum.github.io/spotify-extension/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag web" title="Web Extension">Requires Internet Connection</span>
</section>
</li>
<li>
<a href="?url=https://sayamindu.github.io/scratch-extensions/text-to-speech/text_to_speech_extension.js" data-action="load-url">
<header>
<h2>Text to Speech</h2>
<p class="author">Sayamindu Dasgupta</p>
</header>
<img src="images/extensions/text-extension-sm.png" alt="Text To Speech" />
</a>
<section class="description">
<p>Use Scratch to read text out loud</p>
<a href="?url=https://scratchx.org/tmp/TalkingGobo.sbx" data-action="load-url">Sample Project</a>
<a href="https://sayamindu.github.io/scratch-extensions/text-to-speech" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag web" title="Web Extension">Requires Internet Connection</span>
</section>
</li>
<li>
<a href="?url=http://aseba-community.github.io/thymio-scratchx/thymio_extension.js" data-action="load-url">
<header>
<h2>Thymio</h2>
<p class="author">Mobsya</p>
</header>
<img src="images/extensions/thymio_small.png" alt="Thymio" />
</a>
<section class="description">
<p>Control the Thymio robot with Scratch!</p>
<a href="?url=http://aseba-community.github.io/thymio-scratchx/activities/crash_preventing_system_en.sbx&lang=en" data-action="load-url">Sample Project</a>
<a href="https://aseba-community.github.io/thymio-scratchx/index-en.html" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=http://technoboy10.github.io/twitter/extension.js" data-action="load-url">
<header>
<h2>Twitter</h2>
<p class="author">Connor Hudson, Kreg Hanning</p>
</header>
<img src="images/extensions/twitter-extension-sm.png" alt="Twitter" />
</a>
<section class="description">
<p>Use Twitter in your projects!</p>
<a href="?url=https://technoboy10.github.io/twitter/examples/Fetch%20a%20Tweet.sbx" data-action="load-url">Sample Project</a>
<a href="https://technoboy10.github.io/twitter/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag web" title="Web Extension">Requires Internet Connection</span>
</section>
</li>
<li>
<a href="?url=https://vernierst.github.io/scratch-vernier-go-extensions/go_motion_extension.js" data-action="load-url">
<header>
<h2>Vernier Go!Motion</h2>
<p class="author">Vernier Software &amp; Technology</p>
</header>
<img src="images/extensions/gomotion_small.jpg" alt="Vernier Go!Motion" />
</a>
<section class="description">
<p>Use position data in Scratch</p>
<a href="?url=https://vernierst.github.io/scratch-vernier-go-extensions/examples/SayMotion.sbx" data-action="load-url">Sample Project</a>
<a href="https://vernierst.github.io/scratch-vernier-go-extensions/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=https://vernierst.github.io/scratch-vernier-go-extensions/go_temp_extension.js" data-action="load-url">
<header>
<h2>Vernier Go!Temp</h2>
<p class="author">Vernier Software &amp; Technology</p>
</header>
<img src="images/extensions/gotemp_small.jpg" alt="Vernier Go!Temp" />
</a>
<section class="description">
<p>Use temperature data in Scratch</p>
<a href="?url=https://vernierst.github.io/scratch-vernier-go-extensions/examples/SayTemp.sbx" data-action="load-url">Sample Project</a>
<a href="https://vernierst.github.io/scratch-vernier-go-extensions/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
<li>
<a href="?url=http://khanning.github.io/scratch-weather-extension/weather_extension.js" data-action="load-url">
<header>
<h2>Weather</h2>
<p class="author">Sayamindu Dasgupta, Kreg Hanning</p>
</header>
<img src="images/extensions/weather_small.png" alt="Weather" />
</a>
<section class="description">
<p>Access live weather information</p>
<a href="?url=http://khanning.github.io/scratch-weather-extension/examples/WeatherExample.sbx" data-action="load-url">Sample Project</a>
<a href="https://khanning.github.io/scratch-weather-extension/" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag web" title="Web Extension">Requires Internet Connection</span>
</section>
</li>
<li>
<a href="?url=http://MrYsLab.github.io/xi4s.js" data-action="load-url">
<header>
<h2>Xi - Multi uC Interconnect</h2>
<p class="author">Alan Yorinks</p>
</header>
<img src="images/extensions/xi3_small.png" alt="Xi - Multi uC Interconnect" />
</a>
<section class="description">
<p>Control for Arduino, <acronym title="Raspberry Pi">RPi</acronym> and <acronym title="BeagleBone Black">BBB</acronym></p>
<a href="?url=http://MrYsLab.github.io/blink.sbx" data-action="load-url">Sample Project</a>
<a href="https://github.com/MrYsLab/xi" target="_blank">Documentation</a>
</section>
<section class="tags">
<span class="tag hardware" title="Hardware Extension">Requires Hardware</span>
</section>
</li>
</ul>
</div>
</section>
</article>
<article id="privacy-policy">
<section>
<div>
<aside class="warning message"><strong>Warning:</strong> These extensions are experimental. <a href="#faq">Please read the FAQ before trying them.</a></aside>
<div>
<section class="main">
<h1>Privacy Policy</h1>
<p id="privacy-introduction">ScratchX is a platform that enables people to test experimental functionality built by developers for the visual programming language <a href="https://scratch.mit.edu">Scratch</a>. The purpose of this website is to provide a playground for people to test experimental content. We wrote this privacy policy to explain what information we access and how we use it. If you have any questions regarding this policy, you can <a href="mailto:scratch-extensions@scratch.mit.edu">contact us</a>.</p>
<h2 id="privacy-external-services">External Services</h2>
<p><strong>GitHub Pages:</strong> Developers who link their content to ScratchX are required to host their experimental content on an external service called <a href="https://pages.github.com/">GitHub pages</a>, which is governed by GitHub's own <a href="https://help.github.com/articles/github-terms-of-service/">Terms of Service</a> and <a href="https://help.github.com/articles/github-privacy-policy/">Privacy Policy</a>. The ScratchX site itself is also hosted on GitHub pages, and is governed by their terms and policy (in addition to the ScratchX terms and policy).</p>
<p><strong>Google Analytics:</strong> Using an external service called Google Analytics, we collect some data about where you click and which parts of the site you visit. This "click data" helps us figure out ways to improve the website. Information collected and processed by Google Analytics includes the user's IP address, network location, and geographic location. Google Analytics acquires all of its information directly from the user, by installing a cookie (see below) on your computer, if you have enabled JavaScript. We do not share any information (other than aggregate statistics) that we collect with Google, and Google does not collect any personal identifying information about you. You can read Google Analytics' privacy policy <a href="https://support.google.com/analytics/answer/6004245?hl=en">here</a>.</p>
<p><strong>Cookies:</strong> Google Analytics (above) uses cookies in order to gather information about your use of the ScratchX website. A cookie is a small text file that Google Analytics can send to your browser for storage on your computer.</p>
<h2 id="privacy-use-your-information">How do we use your information?</h2>
<ul>
<li>Via Google Analytics, we gather browsing data so that we know how people use the website.</li>
<li>Other than as described above, we will never share personally identifiable information about you with any other person, company, or organization, except as required to comply with our obligations under the law.</li>
</ul>
<h2 id="privacy-notifications-of-changes">Notifications of Changes to the Privacy Policy</h2>
<p>We review our Privacy Policy on a periodic basis, and we may modify our policies as appropriate. We may also change or update our Privacy Policy if we add new services or features. If we make any changes to our privacy practices, we will amend this Privacy Policy accordingly and post the amended policy on the ScratchX website. We encourage you to review our Privacy Policy on a regular basis.</p>
</section>
<nav>
<h3>Contents</h3>
<ol>
<li><a href="#privacy-introduction">Introduction</a></li>
<li><a href="#privacy-external-services">External Services</a></li>
<li><a href="#privacy-use-your-information">How do we use your information?</a></li>
<li><a href="#privacy-notifications-of-changes">Notifications of Changes to the Privacy Policy</a></li>
</ol>
</nav>
</div>
</div>
</section>
</article>
<article id="faq">
<section>
<div>
<aside class="warning message"><strong>Warning:</strong> These extensions are experimental. Please read the FAQ before trying them.</aside>
<div>
<section class="main">
<h1><abbr title="Frequently Asked Questions">FAQ</abbr></h1>
<h2 id="faq-what-is-scratchx">What is ScratchX?</h2>
<p>ScratchX is a platform that enables people to test experimental functionality built by developers for the visual programming language Scratch.</p>
<h2 id="faq-scratch-vs-scratchx">What's the difference between Scratch and ScratchX?</h2>
<p><a href="https://scratch.mit.edu/">Scratch</a> is a programming language and online community where you can create your own interactive stories, games, and animations. ScratchX is a separate experimental platform built to test experimental Scratch features, also known as Experimental Extensions. There is no login or community component to ScratchX, and projects created within ScratchX can only be run on ScratchX.</p>
<h2 id="faq-scratch-extensions">What are Scratch Extensions?</h2>
<p>Scratch extensions make it possible for Scratch to interface with external hardware and information outside of the Scratch website through new blocks. Extensions are written in JavaScript for the ScratchX project editor.</p>
<h2 id="faq-experimental-official">What is the difference between Experimental and Official Extensions?</h2>
<p>Experimental Extensions are extensions created for Scratch by the community; they are not managed or endorsed by Scratch in any way. Experimental Extensions can run only in the ScratchX environment. Official Extensions can be found and run from within Scratch 2.0 (both <a href="https://scratch.mit.edu">online</a> and <a href="https://scratch.mit.edu/scratch2download/">offline</a> editors), accessible in the 'More Blocks' section of the blocks menu.</p>
<h2 id="faq-experimental-safe">Are Experimental Extensions safe?</h2>
<p>The Scratch Team has created ScratchX to enable people to create and test Experimental Extensions. However, the Scratch Team does not endorse, support or maintain specific Experimental Extensions. People using Experimental Extensions should be careful not to provide any personal details such as login passwords or personally-identifiable information if prompted by an Experimental Extension.</p>
<h2 id="faq-how-to-use-scratchx">How do I use ScratchX?</h2>
<p>There are three pathways into ScratchX. If you have been given or sent a .sbx file, you can load that into ScratchX via the homepage (look for 'Open an Extension Project'). If you have been sent a ScratchX URL (starts with 'scratchx.org/'), you can click your link and the extension will load automatically, or you can enter that URL into the box on the homepage (look for 'Open an Extension URL'). Lastly, if you don't have an example extension, you can try out one on the site by visiting the <a href="#extensions">Gallery page</a> and clicking on an example extension there.</p>
<h2 id="faq-how-to-share">I made a cool project on ScratchX. How do I share it?</h2>
<p>Click the 'Save' button at the top of the page to download your project as an .sbx file on to your local computer. You can then send this file to other people, and they can upload your file onto ScratchX to play with your project.</p>
<h2 id="faq-examples">Where can I find example Experimental Extensions to play around with?</h2>
<p>You can find a list of example extensions in the <a href="#extensions">ScratchX Gallery</a>. We plan to add more extensions to this page in the coming months.</p>
<h2 id="faq-scratchx-url">What is a ScratchX URL?</h2>
<p>Developers who make extensions for ScratchX can choose to create a custom web address or URL that points to their extension and/or demo project. Clicking on a ScratchX extension URL will take you directly to a project with an extension loaded.</p>
<h2 id="faq-sbx-file">What is an .sbx file?</h2>
<p>The SBX (.sbx) ScratchX file format is the file format used to encode ScratchX projects when they are downloaded to a user's computer. SBX files can only be used on the ScratchX site. Other Scratch environments use different formats, including the .sb2 format for Scratch 2.0 (read more here) and .sb format for Scratch 1.4 (read more here).</p>
<h2 id="faq-open-sbx">Why can't I open .sbx files in Scratch 2.0 or the offline editor?</h2>
<p>Experimental Extensions are extensions created for Scratch by the community and are not managed or endorsed by Scratch in any way. Because of this, we do not allow Experimental Extensions to run on the larger Scratch site.</p>
</section>
<nav>
<h3>Contents</h3>
<ol>
<li><a href="#faq-what-is-scratchx">What is ScratchX?</a></li>
<li><a href="#faq-scratch-vs-scratchx">What's the difference between Scratch and ScratchX?</a></li>
<li><a href="#faq-scratch-extensions">What are Scratch Extensions?</a></li>
<li><a href="#faq-experimental-official">What is the difference between Experimental and Official Extensions?</a></li>
<li><a href="#faq-experimental-safe">Are Experimental Extensions safe?</a></li>
<li><a href="#faq-how-to-use-scratchx">How do I use ScratchX?</a></li>
<li><a href="#faq-how-to-share">I made a cool project on ScratchX. How do I share it?</a></li>
<li><a href="#faq-examples">Where can I find example Experimental Extensions to play around with?</a></li>
<li><a href="#faq-scratchx-url">What is a ScratchX URL?</a></li>
<li><a href="#faq-sbx-file">What is an .sbx file?</a></li>
<li><a href="#faq-open-sbx">Why can't I open .sbx files in Scratch 2.0 or the offline editor?</a></li>
</ol>
</nav>
</div>
</div>
</section>
</article>
<footer>
<div>
<section>
<p>Extensions on ScratchX are experimental and are not reviewed by the Scratch Team or the MIT Media Lab.</p>
<p><a href="https://scratch.mit.edu/">Scratch</a> is a project of the Lifelong Kindergarten Group at the MIT Media Lab.</p>
<p>
<a class="twitter" title="Follow us on Twitter" href="https://twitter.com/scratch/" target="_blank"><span>@scratch on Twitter</span></a>
<a class="github" title="Fork us on GitHub" href="https://github.com/LLK/scratchx/" target="_blank"><span>LLK on GitHub</span></a>
</p>
</section>
<nav>
<h2>ScratchX</h2>
<ul>
<li><a href="https://scratch.mit.edu/terms_of_use/">Terms of Service</a></li>
<li><a href="#privacy-policy">Privacy Policy</a></li>
<li><a href="mailto:scratch-extensions@scratch.mit.edu">Contact Us</a></li>
<li><a href="#faq">FAQ</a></li>
<li><a href="https://scratch.mit.edu/discuss/48/">Forums</a></li>
</ul>
</nav>
<nav>
<h2>Scratch Family</h2>
<ul>
<li><a href="https://scratch.mit.edu/">Scratch</a></li>
<li><a href="http://scratched.gse.harvard.edu/">ScratchEd</a></li>
<li><a href="https://www.scratchjr.org/">ScratchJr</a></li>
<li><a href="https://scratch.mit.edu/conference/">Scratch Conference</a></li>
<li><a href="https://day.scratch.mit.edu/">Scratch Day</a></li>
<li><a href="https://scratchfoundation.org/">Scratch Foundation</a></li>
</ul>
</nav>
</div>
</footer>
</main>
<section id="scratch">
<div class="scratch_unsupported">
<p>
Oh Noes! Scratch project cannot display.<br/>
Flash player is disabled, missing, or less than version 10.2.
</p>
<a href="https://www.adobe.com/go/getflashplayer" target="_blank"><img
src="//www.adobe.com/images/shared/download_buttons/get_flash_player.gif"
alt="Get Adobe Flash player"/></a>
</div>
<div class="scratch_loading"></div>
</section>
<script type="text/template" id="template-warning">
<dialog class="extension-warning with-icon">
<section>
<h2>Warning</h2>
<p>The extensions on this site are experimental</p>
</section>
<section>
<p>The Scratch Team is <strong>not</strong> responsible for the extensions and projects on this site. Please use caution when using these extensions. <a href="#faq">Learn More</a></p>
<button data-action="show" data-target="home">Back to ScratchX home</button>
<button class="success">I understand, continue</button>
</section>
</dialog>
</script>
<script type="text/template" id="template-short-url">
<dialog class="single">
<section>
<h2>Short URL</h2>
</section>
<section>
<p>Click to copy the short url for this project</p>
<div class="input-plus-button">
<input type="text" value="<%- shortUrl %>" name="shortUrl" disabled />
<button data-clipboard-text="<%- shortUrl %>">Copy</button>
</div>
</section>
</dialog>
</script>
<script type="text/template" id="template-extension-url">
<dialog class="extension-url with-icon">
<section>
<h2>Open an Extension URL</h2>
<p>Paste the web address below</p>
<p><a href="#faq-scratchx-url">What is a ScratchX URL?</a></p>
</section>
<section>
<form class="input-plus-button url-load-form">
<input type="text" placeholder="paste url..." />
<button type="submit">Open</button>
</form>
</section>
</dialog>
</script>
<script type="text/template" id="template-extension-file">
<dialog class="extension-file with-icon">
<section>
<h2>Open an Extension Project</h2>
<p>Choose a .sbx file from your local drive</p>
<p><a href="#faq-sbx-file">What is a .sbx file?</a></p>
</section>
<section>
<button data-action="load-file">Browse for local file</button>
</section>
</dialog>
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-30688952-3', 'auto');
ga('send', 'pageview', 'home');
</script>
<script type="text/javascript" src="libs/base64ab.js" async></script>
<script type="text/javascript" src="libs/bowser.min.js"></script>
<script type="text/javascript" src="libs/swfobject.js"></script>
<script type="text/javascript" src="libs/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="libs/socket.io-1.3.7.js"></script>
<script type="text/javascript" src="libs/underscore-min.js" async></script>
<script type="text/javascript" src="libs/ZeroClipboard.min.js" async></script>
<script type="text/javascript" src="js/scratchx.js" defer></script>
<script type="text/javascript" src="scratch_extensions/scratch_proxies.js" defer></script>
<script type="text/javascript" src="scratch_extensions/scratch_plugin.js" defer></script>
<script type="text/javascript" src="scratch_extensions/scratch_nmh.js" defer></script>
<script type="text/javascript" src="scratch_extensions/scratch_deviceManager.js" defer></script>
<script type="text/javascript" src="scratch_extensions/scratch_ext.js" defer></script>
</body>
</html>

76
joystickExtension.js Normal file
View file

@ -0,0 +1,76 @@
// joystickExtension.js
// Shane M. Clements, November 2013
// Joystick Scratch Extension
//
// This is an extension for development and testing of the Scratch Javascript Extension API.
new (function() {
var device = null;
var input = null;
var poller = null;
var ext = this;
ext._deviceConnected = function(dev) {
if(device) return;
device = dev;
device.open();
poller = setInterval(function() {
input = device.read(48);
}, 10);
// setInterval(function() { console.log(input); }, 100);
};
ext._deviceRemoved = function(dev) {
if(device != dev) return;
device = null;
stopPolling();
};
function stopPolling() {
if(poller) clearInterval(poller);
poller = null;
}
ext._shutdown = function() {
if(poller) clearInterval(poller);
poller = null;
if(device) device.close();
device = null;
}
ext._getStatus = function() {
if(!device) return {status: 1, msg: 'Controller disconnected'};
return {status: 2, msg: 'Controller connected'};
}
// Converts a byte into a value of the range -1 -> 1 with two decimal places of precision
function convertByteStr(byte) { return (parseInt(byte, 16) - 128) / 128; }
ext.readJoystick = function(name) {
var retval = null;
switch(name) {
case 'leftX': retval = convertByteStr(input[12] + input[13]); break;
case 'leftY': retval = -convertByteStr(input[14] + input[15]); break;
case 'rightX': retval = convertByteStr(input[16] + input[17]); break;
case 'rightY': retval = -convertByteStr(input[18] + input[19]); break;
}
// If it's hardly off center then treat it as centered
if(Math.abs(retval) < 0.1) retval = 0;
return retval.toFixed(2);
}
var descriptor = {
blocks: [
['r', 'get joystick %m.joystickPart', 'readJoystick', 'leftX']
],
menus: {
joystickPart: ['leftX', 'leftY', 'rightX', 'rightY']
}
};
ScratchExtensions.register('Joystick', descriptor, ext, {type: 'hid', vendor:0x054c, product:0x0268});
})();

View file

@ -1,474 +0,0 @@
// Simulate the bare minimum of the view that exists on the main site
var Scratch = Scratch || {};
Scratch.editorIsReady = false;
Scratch.FlashApp = Scratch.FlashApp || {};
var editorId = "scratch";
var initialPage = "home";
var ShortURL = {
key : "AIzaSyBlaftRUIOLFVs8nfrWvp4IBrqq9-az46A",
api : "https://www.googleapis.com/urlshortener/v1/url",
domain : "https://goo.gl"
};
function handleEmbedStatus(e) {
$('#scratch-loader').hide();
var scratch = $(document.getElementById(editorId));
if (!e.success) {
scratch.css('marginTop', '10');
scratch.find('IMG.proj_thumb').css('width', '179px');
scratch.find('DIV.scratch_unsupported').show();
scratch.find('DIV.scratch_loading').hide();
} else {
Scratch.FlashApp.ASobj = scratch[0];
Scratch.FlashApp.$ASobj = $(Scratch.FlashApp.ASobj);
}
}
// enables the SWF to log errors
function JSthrowError(e) {
if (window.onerror) window.onerror(e, 'swf', 0);
else console.error(e);
}
function JSeditorReady() {
try {
Scratch.editorIsReady = true;
Scratch.FlashApp.$ASobj.trigger("editor:ready");
return true;
} catch (error) {
console.error(error.message, "\n", error.stack);
throw error;
}
}
function JSshowExtensionDialog() {
showModal(["template-extension-file", "template-extension-url"]);
}
var flashVars = {
autostart: 'false',
extensionDevMode: 'true',
server: encodeURIComponent(location.host),
cloudToken: '4af4863d-a921-4004-b2cb-e0ad00ee1927',
cdnToken: '34f16bc63e8ada7dfd7ec12c715d0c94',
urlOverrides: {
sitePrefix: "https://scratch.mit.edu/",
siteCdnPrefix: "https://cdn.scratch.mit.edu/",
assetPrefix: "https://assets.scratch.mit.edu/",
assetCdnPrefix: "https://cdn.assets.scratch.mit.edu/",
projectPrefix: "https://projects.scratch.mit.edu/",
projectCdnPrefix: "https://cdn.projects.scratch.mit.edu/",
internalAPI: "internalapi/",
siteAPI: "site-api/",
staticFiles: "scratchr2/static/"
},
inIE: (navigator.userAgent.indexOf('MSIE') > -1)
};
var params = {
allowscriptaccess: 'always',
allowfullscreen: 'true',
wmode: 'direct',
menu: 'false'
};
$.each(flashVars, function (prop, val) {
if ($.isPlainObject(val)) {
val = encodeURIComponent(JSON.stringify(val));
}
if (typeof params.flashvars !== 'undefined') {
params.flashvars += '&' + prop + '=' + val;
} else {
params.flashvars = prop + '=' + val;
}
});
swfobject.switchOffAutoHideShow();
var swfAttributes = {
data: 'Scratch.swf',
width: '100%',
height: '100%'
};
swfobject.addDomLoadEvent(function() {
// check if mobile/tablet browser user bowser
if(bowser.mobile || bowser.tablet) {
// if on mobile, show error screen
handleEmbedStatus({success: false});
} else {
// if not on ie, let browser try to handle flash loading
var swf = swfobject.createSWF(swfAttributes, params, "scratch");
handleEmbedStatus({success: true, ref: swf});
}
});
/* File uploads */
function sendFileToFlash(file) {
/*
* Use the HTML5 FileReader API to send base-64 encoded file
* contents to Flash via ASloadBase64SBX (or do it when the SWF
* is ready).
*/
var fileReader = new FileReader();
fileReader.onload = function (e) {
var fileAsB64 = ab_to_b64(fileReader.result);
if (Scratch.FlashApp.ASobj.ASloadBase64SBX !== undefined) {
$(document).trigger("editor:extensionLoaded", {method: "file"});
showPage(editorId);
Scratch.FlashApp.ASobj.ASloadBase64SBX(fileAsB64);
} else {
$(document).on("editor:ready", function(e) {
$(document).trigger("editor:extensionLoaded", {method: "file"});
showPage(editorId);
Scratch.FlashApp.ASobj.ASloadBase64SBX(fileAsB64);
$(this).off(e);
});
}
};
fileReader.readAsArrayBuffer(file);
}
function sendURLtoFlash() {
/*
* Send a URL to Flash with ASloadGithubURL, or do it when the
* editor is ready.
*/
var urls = [];
for (var i = 0; i < arguments.length; i++) {
urls.push(arguments[i]);
}
if (urls.length <= 0) return;
if (Scratch.editorIsReady) {
$(document).trigger("editor:extensionLoaded", {method: "url", urls: urls});
showPage(editorId);
Scratch.FlashApp.ASobj.ASloadGithubURL(urls);
} else {
$(document).on("editor:ready", function(e) {
$(document).trigger("editor:extensionLoaded", {method: "url", urls: urls});
showPage(editorId);
Scratch.FlashApp.ASobj.ASloadGithubURL(urls);
$(this).off(e);
});
}
}
/* Load from URL */
function loadFromURLParameter(queryString) {
/*
* Get all url=urlToLoad from the querystring and send to Flash
* Use like...
* http://scratchx.org/?url=urlToLoad1&url=urlToLoad2
*/
var paramString = queryString.replace(/^\?|\/$/g, '');
var vars = paramString.split("&");
var urls = [];
for (var i=0; i<vars.length; i++) {
var pair = vars[i].split("=");
if (pair.length > 1 && pair[0]=="url") {
urls.push(pair[1]);
}
}
if (urls.length > 0) sendURLtoFlash.apply(window, urls);
}
/* Modals */
function getOrCreateFromTemplate(elementId, templateId, elementType, appendTo, wrapper, data) {
elementType = elementType || "div";
appendTo = appendTo || "body";
data = data || {};
var $element = $(document.getElementById(elementId));
if (!$element.length) {
var templateContent = "";
if (typeof(templateId) != "string") {
for (var id in templateId) {
templateContent += $(document.getElementById(templateId[id])).html();
}
} else {
templateContent += $(document.getElementById(templateId)).html()
}
$template = _.template(templateContent);
$element = $("<"+elementType+"></"+elementType+">")
.attr("id", elementId)
.html($template(data));
if (wrapper) $element.wrapInner(wrapper);
$element.appendTo(appendTo)
}
return $element;
}
function showModal(templateId, data) {
/*
* Copies the HTML referenced by data-template into a new element,
* with id="modal-[template value]" and creates an overlay on the
* page, which when clicked will close the popup.
*/
var zIndex = 100;
var modalId = ("modal-" + templateId).replace(",", "-");
$modalwrapper = $("<div class='modal-fade-screen'><div class='modal-inner'></div></div>");
var $modal = getOrCreateFromTemplate(modalId, templateId, "dialog", "body", $modalwrapper, data);
$modal.addClass("modal");
$(".modal-fade-screen", $modal)
.addClass("visible")
.click(function(e){if ($(e.target).is($(this))) $(this).trigger("modal:exit")});
$(".modal-close", $modal).click(function(e){
e.preventDefault();
$(document).trigger("modal:exit")
});
$("body").addClass("modal-open");
$(document).one("modal:exit page:show editor:extensionLoaded", function(e){
$("body").removeClass("modal-open");
try {
Scratch.FlashApp.ASobj.ASsetModalOverlay(false);
} catch (e) {
// SWF not yet loaded
}
$modal.remove();
});
return $modal;
}
$(document).keyup(function(e) {
// Exit modals with esc key
if (e.keyCode == 27) $(document).trigger("modal:exit");
});
$(document).on("modal:exit", function(e){
try {
Scratch.FlashApp.ASobj.ASsetModalOverlay(false);
} catch (e) {
// SWF not yet loaded
}
});
$(document).on('click', "[data-action='modal']", function(e){
/*
* Usage:
* <a href="#content" data-action="modal" data-template="id-for-content">Popup</a>
*/
e.preventDefault();
showModal($(this).data("template"));
});
function JSshowWarning(extensionData) {
$modal = showModal("template-warning", extensionData);
$("button", $modal).click(function(e){
e.preventDefault();
$(document).trigger("modal:exit")
});
}
/* Page switching */
function showPage(path, force) {
/*
Show a part of the page. The site is set up like
body
main
article#home
article#privacy-policy
...
editor
Each <article> is a "page" of the site, plus one special
view, which is the editor.
The editor is not actually hidden, but located -9999px above
the viewport. This is because if it's hidden, it doesn't load
when the page is loaded.
So first we have to hide everything that we're not going to show
or move the editor up, then display everything we're going to show
if it's hidden.
If we are linking to an anchor within a page, then show its parent.
*/
var toHide = "body > main, body > main > article";
var toShow = "#" + path;
var $toShow = $(toShow);
var showEditor = $toShow.is(Scratch.FlashApp.$ASobj);
var editorShown = parseInt(Scratch.FlashApp.$ASobj.css("top")) == 0;
if (!$toShow.length || (!showEditor && $toShow.filter(":visible").length > 0) || (showEditor && editorShown)) return;
if (editorShown && !force) {
Scratch.FlashApp.ASobj.AScreateNewProject(["showPage", path, true]);
return;
}
$(toHide).filter(":visible").hide();
if (!showEditor && editorShown) $(document.getElementById(editorId)).css({top: "-9999px"});
$("body > main, body > main > article").has($toShow).show();
setBodyClass(path);
$toShow.show();
if (showEditor) $toShow.css({top: 0});
if (document.location.hash.substr(1) != path) document.location.hash = path;
$toShow[0].scrollIntoView(true);
$(document).trigger("page:show", path);
}
function setBodyClass(path) {
var pageClassPrefix = "page-";
var currentPageClasses = ($("body").attr("class") || "").split(" ");
for (c in currentPageClasses) {
if (currentPageClasses[c].indexOf(pageClassPrefix) != -1) {
$("body").removeClass(currentPageClasses[c]);
}
}
$("body").addClass(pageClassPrefix + path);
}
/* URL Shortening */
function shorten(url, done) {
var data = {longUrl: url};
$.ajax({
url : ShortURL.api + '?' + $.param({key : ShortURL.key}),
type : "post",
data : JSON.stringify(data),
dataType : "json",
contentType : "application/json"
}).done(done);
}
function getUrlFor(extensions) {
return document.location.origin + '/?' + $.param(
extensions.map(function(url){
return {name: 'url', value: url}
})
);
}
function UrlParser(url) {
parser = document.createElement('a');
parser.href = url;
return parser
}
function showShortUrl(url) {
shorten(url, function(data) {
var parser = UrlParser(data.id);
var id = parser.pathname.replace('/', '');
parser.href = window.location.origin;
parser.hash = "#!" + id;
var shortUrl = parser.href;
var context = {
longUrl : data.longUrl,
shortUrl : shortUrl
};
$modal = showModal("template-short-url", context);
var client = new ZeroClipboard($('button', $modal));
});
}
function JSshowShortUrlFor() {
showShortUrl(getUrlFor(Array.prototype.slice.call(arguments)));
}
function decompress(id, done) {
var data = {shortUrl: ShortURL.domain + id};
$.ajax({
url : ShortURL.api + '?' + $.param({
key : ShortURL.key,
shortUrl : ShortURL.domain + '/' + id}),
dataType : "json",
contentType : "application/json"
}).done(done);
}
/* Setup */
$(document).on('click', "[data-action='load-file']", function(e) {
/*
Buttons with data-action="load-file" trigger a file input
prompt, passed to a handler that passes the file to Flash.
*/
$('<input type="file" />').on('change', function(){
sendFileToFlash(this.files[0])
}).click();
});
$(document).on('click', "[data-action='load-url']", function(e) {
/*
Links with data-action="load-url" send their href to Flash
So use like...
<a href="?url=urlToLoad" data-action="load-url">Load this</a>
*/
e.preventDefault();
showPage(editorId);
loadFromURLParameter($(this).attr("href"));
});
$(document).on('submit', ".url-load-form", function(e) {
// Load text input value on submit
e.preventDefault();
showPage(editorId);
sendURLtoFlash($('input[type="text"]', this).val());
});
$(document).on('click', "[data-action='show']", function(e) {
/*
Links with data-action="static-link" should switch the view
to that page. Works like tabs sort of. Use like...
<!-- Makes a link to the Privacy Policy section -->
<a href="#privacy-policy" data-action="static-link">Privacy Policy</a>
*/
var path = $(this).data('target') || $(this).attr("href").substring(1);
showPage(path);
});
$(window).on('hashchange', function(e) {
var path = document.location.hash.split('#')[1] || document.location.hash || 'home';
if (path.charAt(0) != '!') showPage(path);
});
$(document).on("page:show", function(e, page){
ga("send", "pageview", '#' + page);
ga("set", "referrer", document.location.origin + document.location.pathname + document.location.hash)
});
$(document).on("editor:extensionLoaded", function(e, data){
if (data.method == "url") {
for (var i = 0; url = data['urls'][i]; i++) {
ga("send", "event", "extensionLoaded", data.method, url);
}
} else {
ga("send", "event", "extensionLoaded", data.method);
}
});
function initPage() {
/*
On load, show the page identified by the URL fragment. Default to #home.
*/
if (window.location.hash) {
if (window.location.hash.charAt(1) == "!") {
decompress(window.location.hash.substr(2), function(data) {
var parser = UrlParser(data.longUrl);
if (parser.hostname == window.location.hostname) window.location = data.longUrl;
return;
});
} else {
initialPage = window.location.hash.substr(1);
}
}
setBodyClass(initialPage);
showPage(initialPage, true);
loadFromURLParameter(window.location.search, true);
}
$(initPage);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -1,47 +0,0 @@
// Convert ArrayBuffers to/from Base64
(function() {
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
window.ab_to_b64 = function (arraybuffer) {
var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';
for (i = 0; i < len; i += 3) {
base64 += chars[bytes[i] >> 2];
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
base64 += chars[bytes[i + 2] & 63];
}
if ((len % 3) === 2) {
base64 = base64.substring(0, base64.length - 1) + '=';
} else if (len % 3 === 1) {
base64 = base64.substring(0, base64.length - 2) + '==';
}
return base64;
}
window.b64_to_ab = function (base64) {
var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
if (base64[base64.length - 1] === '=') {
--bufferLength;
if (base64[base64.length - 2] === '=') {
--bufferLength;
}
}
var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);
for (i = 0; i < len; i += 4) {
encoded1 = chars.indexOf(base64[i]);
encoded2 = chars.indexOf(base64[i + 1]);
encoded3 = chars.indexOf(base64[i + 2]);
encoded4 = chars.indexOf(base64[i + 3]);
bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
}
return arraybuffer;
}
})();

6
libs/bowser.min.js vendored
View file

@ -1,6 +0,0 @@
/*!
* Bowser - a browser detector
* https://github.com/ded/bowser
* MIT License | (c) Dustin Diaz 2014
*/
!function(e,t){typeof module!="undefined"&&module.exports?module.exports.browser=t():typeof define=="function"&&define.amd?define(t):this[e]=t()}("bowser",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||""}var r=n(/(ipod|iphone|ipad)/i).toLowerCase(),i=/like android/i.test(t),s=!i&&/android/i.test(t),o=n(/version\/(\d+(\.\d+)?)/i),u=/tablet/i.test(t),a=!u&&/[^-]mobi/i.test(t),f;/opera|opr/i.test(t)?f={name:"Opera",opera:e,version:o||n(/(?:opera|opr)[\s\/](\d+(\.\d+)?)/i)}:/windows phone/i.test(t)?f={name:"Windows Phone",windowsphone:e,msie:e,version:n(/iemobile\/(\d+(\.\d+)?)/i)}:/msie|trident/i.test(t)?f={name:"Internet Explorer",msie:e,version:n(/(?:msie |rv:)(\d+(\.\d+)?)/i)}:/chrome|crios|crmo/i.test(t)?f={name:"Chrome",chrome:e,version:n(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:r?(f={name:r=="iphone"?"iPhone":r=="ipad"?"iPad":"iPod"},o&&(f.version=o)):/sailfish/i.test(t)?f={name:"Sailfish",sailfish:e,version:n(/sailfish\s?browser\/(\d+(\.\d+)?)/i)}:/seamonkey\//i.test(t)?f={name:"SeaMonkey",seamonkey:e,version:n(/seamonkey\/(\d+(\.\d+)?)/i)}:/firefox|iceweasel/i.test(t)?(f={name:"Firefox",firefox:e,version:n(/(?:firefox|iceweasel)[ \/](\d+(\.\d+)?)/i)},/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(t)&&(f.firefoxos=e)):/silk/i.test(t)?f={name:"Amazon Silk",silk:e,version:n(/silk\/(\d+(\.\d+)?)/i)}:s?f={name:"Android",version:o}:/phantom/i.test(t)?f={name:"PhantomJS",phantom:e,version:n(/phantomjs\/(\d+(\.\d+)?)/i)}:/blackberry|\bbb\d+/i.test(t)||/rim\stablet/i.test(t)?f={name:"BlackBerry",blackberry:e,version:o||n(/blackberry[\d]+\/(\d+(\.\d+)?)/i)}:/(web|hpw)os/i.test(t)?(f={name:"WebOS",webos:e,version:o||n(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)},/touchpad\//i.test(t)&&(f.touchpad=e)):/bada/i.test(t)?f={name:"Bada",bada:e,version:n(/dolfin\/(\d+(\.\d+)?)/i)}:/tizen/i.test(t)?f={name:"Tizen",tizen:e,version:n(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i)||o}:/safari/i.test(t)?f={name:"Safari",safari:e,version:o}:f={},/(apple)?webkit/i.test(t)?(f.name=f.name||"Webkit",f.webkit=e,!f.version&&o&&(f.version=o)):!f.opera&&/gecko\//i.test(t)&&(f.name=f.name||"Gecko",f.gecko=e,f.version=f.version||n(/gecko\/(\d+(\.\d+)?)/i)),s||f.silk?f.android=e:r&&(f[r]=e,f.ios=e);var l="";r?(l=n(/os (\d+([_\s]\d+)*) like mac os x/i),l=l.replace(/[_\s]/g,".")):s?l=n(/android[ \/-](\d+(\.\d+)*)/i):f.windowsphone?l=n(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i):f.webos?l=n(/(?:web|hpw)os\/(\d+(\.\d+)*)/i):f.blackberry?l=n(/rim\stablet\sos\s(\d+(\.\d+)*)/i):f.bada?l=n(/bada\/(\d+(\.\d+)*)/i):f.tizen&&(l=n(/tizen[\/\s](\d+(\.\d+)*)/i)),l&&(f.osversion=l);var c=l.split(".")[0];if(u||r=="ipad"||s&&(c==3||c==4&&!a)||f.silk)f.tablet=e;else if(a||r=="iphone"||r=="ipod"||s||f.blackberry||f.webos||f.bada)f.mobile=e;return f.msie&&f.version>=10||f.chrome&&f.version>=20||f.firefox&&f.version>=20||f.safari&&f.version>=6||f.opera&&f.version>=10||f.ios&&f.osversion&&f.osversion.split(".")[0]>=6||f.blackberry&&f.version>=10.1?f.a=e:f.msie&&f.version<10||f.chrome&&f.version<20||f.firefox&&f.version<20||f.safari&&f.version<6||f.opera&&f.version<10||f.ios&&f.osversion&&f.osversion.split(".")[0]<6?f.c=e:f.x=e,f}var e=!0,n=t(typeof navigator!="undefined"?navigator.userAgent:"");return n._detect=t,n})

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,781 +0,0 @@
/*! SWFObject v2.2 <http://code.google.com/p/swfobject/>
is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
var swfobject = function() {
var UNDEF = "undefined",
DEBUG = false,
OBJECT = "object",
SHOCKWAVE_FLASH = "Shockwave Flash",
SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
FLASH_MIME_TYPE = "application/x-shockwave-flash",
EXPRESS_INSTALL_ID = "SWFObjectExprInst",
ON_READY_STATE_CHANGE = "onreadystatechange",
win = window,
doc = document,
nav = navigator,
plugin = false,
domLoadFnArr = [main],
regObjArr = [],
objIdArr = [],
listenersArr = [],
storedAltContent,
storedAltContentId,
storedCallbackFn,
storedCallbackObj,
isDomLoaded = false,
isExpressInstallActive = false,
dynamicStylesheet,
dynamicStylesheetMedia,
autoHideShow = true,
/* Centralized function for browser feature detection
- User agent string detection is only used when no good alternative is possible
- Is executed directly for optimal performance
*/
ua = function() {
var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF,
u = nav.userAgent.toLowerCase(),
p = nav.platform.toLowerCase(),
windows = p ? /win/.test(p) : /win/.test(u),
mac = p ? /mac/.test(p) : /mac/.test(u),
webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit
ie = !+"\v1", // feature detection based on Andrea Giammarchi's solution: http://webreflection.blogspot.com/2009/01/32-bytes-to-know-if-your-browser-is-ie.html
playerVersion = [0,0,0],
d = null;
if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
d = nav.plugins[SHOCKWAVE_FLASH].description;
if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+
plugin = true;
ie = false; // cascaded feature detection for Internet Explorer
d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0;
}
}
else if (typeof win.ActiveXObject != UNDEF) {
try {
var a = new ActiveXObject(SHOCKWAVE_FLASH_AX);
if (a) { // a will return null when ActiveX is disabled
d = a.GetVariable("$version");
if (d) {
ie = true; // cascaded feature detection for Internet Explorer
d = d.split(" ")[1].split(",");
playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
}
}
}
catch(e) {if (DEBUG) throw e}
}
return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac };
}(),
/* Cross-browser onDomLoad
- Will fire an event as soon as the DOM of a web page is loaded
- Internet Explorer workaround based on Diego Perini's solution: http://javascript.nwbox.com/IEContentLoaded/
- Regular onload serves as fallback
*/
onDomLoad = function() {
if (!ua.w3) { return; }
if ((typeof doc.readyState != UNDEF && doc.readyState == "complete") || (typeof doc.readyState == UNDEF && (doc.getElementsByTagName("body")[0] || doc.body))) { // function is fired after onload, e.g. when script is inserted dynamically
callDomLoadFunctions();
}
if (!isDomLoaded) {
if (typeof doc.addEventListener != UNDEF) {
doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false);
}
if (ua.ie && ua.win) {
doc.attachEvent(ON_READY_STATE_CHANGE, function() {
if (doc.readyState == "complete") {
doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee);
callDomLoadFunctions();
}
});
if (win == top) { // if not inside an iframe
(function(){
if (isDomLoaded) { return; }
try {
doc.documentElement.doScroll("left");
}
catch(e) {
setTimeout(arguments.callee, 0);
return;
}
callDomLoadFunctions();
})();
}
}
if (ua.wk) {
(function(){
if (isDomLoaded) { return; }
if (!/loaded|complete/.test(doc.readyState)) {
setTimeout(arguments.callee, 0);
return;
}
callDomLoadFunctions();
})();
}
addLoadEvent(callDomLoadFunctions);
}
}();
function callDomLoadFunctions() {
if (isDomLoaded) { return; }
try { // test if we can really add/remove elements to/from the DOM; we don't want to fire it too early
var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span"));
t.parentNode.removeChild(t);
}
catch (e) {
if (DEBUG) throw e;
return;
}
isDomLoaded = true;
var dl = domLoadFnArr.length;
for (var i = 0; i < dl; i++) {
domLoadFnArr[i]();
}
}
function addDomLoadEvent(fn) {
if (isDomLoaded) {
fn();
}
else {
domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+
}
}
/* Cross-browser onload
- Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/
- Will fire an event as soon as a web page including all of its assets are loaded
*/
function addLoadEvent(fn) {
if (typeof win.addEventListener != UNDEF) {
win.addEventListener("load", fn, false);
}
else if (typeof doc.addEventListener != UNDEF) {
doc.addEventListener("load", fn, false);
}
else if (typeof win.attachEvent != UNDEF) {
addListener(win, "onload", fn);
}
else if (typeof win.onload == "function") {
var fnOld = win.onload;
win.onload = function() {
fnOld();
fn();
};
}
else {
win.onload = fn;
}
}
/* Main function
- Will preferably execute onDomLoad, otherwise onload (as a fallback)
*/
function main() {
if (plugin) {
testPlayerVersion();
}
else {
matchVersions();
}
}
/* Detect the Flash Player version for non-Internet Explorer browsers
- Detecting the plug-in version via the object element is more precise than using the plugins collection item's description:
a. Both release and build numbers can be detected
b. Avoid wrong descriptions by corrupt installers provided by Adobe
c. Avoid wrong descriptions by multiple Flash Player entries in the plugin Array, caused by incorrect browser imports
- Disadvantage of this method is that it depends on the availability of the DOM, while the plugins collection is immediately available
*/
function testPlayerVersion() {
var b = doc.getElementsByTagName("body")[0];
var o = createElement(OBJECT);
o.setAttribute("type", FLASH_MIME_TYPE);
var t = b.appendChild(o);
if (t) {
var counter = 0;
(function(){
if (typeof t.GetVariable != UNDEF) {
var d = t.GetVariable("$version");
if (d) {
d = d.split(" ")[1].split(",");
ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
}
}
else if (counter < 10) {
counter++;
setTimeout(arguments.callee, 10);
return;
}
b.removeChild(o);
t = null;
matchVersions();
})();
}
else {
matchVersions();
}
}
/* Perform Flash Player and SWF version matching; static publishing only
*/
function matchVersions() {
var rl = regObjArr.length;
if (rl > 0) {
for (var i = 0; i < rl; i++) { // for each registered object element
var id = regObjArr[i].id;
var cb = regObjArr[i].callbackFn;
var cbObj = {success:false, id:id};
if (ua.pv[0] > 0) {
var obj = getElementById(id);
if (obj) {
if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { // Flash Player version >= published SWF version: Houston, we have a match!
setVisibility(id, true);
if (cb) {
cbObj.success = true;
cbObj.ref = getObjectById(id);
cb(cbObj);
}
}
else if (regObjArr[i].expressInstall && canExpressInstall()) { // show the Adobe Express Install dialog if set by the web page author and if supported
var att = {};
att.data = regObjArr[i].expressInstall;
att.width = obj.getAttribute("width") || "0";
att.height = obj.getAttribute("height") || "0";
if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); }
if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); }
// parse HTML object param element's name-value pairs
var par = {};
var p = obj.getElementsByTagName("param");
var pl = p.length;
for (var j = 0; j < pl; j++) {
if (p[j].getAttribute("name").toLowerCase() != "movie") {
par[p[j].getAttribute("name")] = p[j].getAttribute("value");
}
}
showExpressInstall(att, par, id, cb);
}
else { // Flash Player and SWF version mismatch or an older Webkit engine that ignores the HTML object element's nested param elements: display alternative content instead of SWF
displayAltContent(obj);
if (cb) { cb(cbObj); }
}
}
}
else { // if no Flash Player is installed or the fp version cannot be detected we let the HTML object element do its job (either show a SWF or alternative content)
setVisibility(id, true);
if (cb) {
var o = getObjectById(id); // test whether there is an HTML object element or not
if (o && typeof o.SetVariable != UNDEF) {
cbObj.success = true;
cbObj.ref = o;
}
cb(cbObj);
}
}
}
}
}
function getObjectById(objectIdStr) {
var r = null;
var o = getElementById(objectIdStr);
if (o && o.nodeName == "OBJECT") {
if (typeof o.SetVariable != UNDEF) {
r = o;
}
else {
var n = o.getElementsByTagName(OBJECT)[0];
if (n) {
r = n;
}
}
}
return r;
}
/* Requirements for Adobe Express Install
- only one instance can be active at a time
- fp 6.0.65 or higher
- Win/Mac OS only
- no Webkit engines older than version 312
*/
function canExpressInstall() {
return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312);
}
/* Show the Adobe Express Install dialog
- Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75
*/
function showExpressInstall(att, par, replaceElemIdStr, callbackFn) {
isExpressInstallActive = true;
storedCallbackFn = callbackFn || null;
storedCallbackObj = {success:false, id:replaceElemIdStr};
var obj = getElementById(replaceElemIdStr);
if (obj) {
if (obj.nodeName == "OBJECT") { // static publishing
storedAltContent = abstractAltContent(obj);
storedAltContentId = null;
}
else { // dynamic publishing
storedAltContent = obj;
storedAltContentId = replaceElemIdStr;
}
att.id = EXPRESS_INSTALL_ID;
if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = "310"; }
if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = "137"; }
doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
fv = "MMredirectURL=" + win.location.toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title;
if (typeof par.flashvars != UNDEF) {
par.flashvars += "&" + fv;
}
else {
par.flashvars = fv;
}
// IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it,
// because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
if (ua.ie && ua.win && obj.readyState != 4) {
var newObj = createElement("div");
replaceElemIdStr += "SWFObjectNew";
newObj.setAttribute("id", replaceElemIdStr);
obj.parentNode.insertBefore(newObj, obj); // insert placeholder div that will be replaced by the object element that loads expressinstall.swf
obj.style.display = "none";
(function(){
if (obj.readyState == 4) {
obj.parentNode.removeChild(obj);
}
else {
setTimeout(arguments.callee, 10);
}
})();
}
createSWF(att, par, replaceElemIdStr);
}
}
/* Functions to abstract and display alternative content
*/
function displayAltContent(obj) {
if (ua.ie && ua.win && obj.readyState != 4) {
// IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it,
// because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
var el = createElement("div");
obj.parentNode.insertBefore(el, obj); // insert placeholder div that will be replaced by the alternative content
el.parentNode.replaceChild(abstractAltContent(obj), el);
obj.style.display = "none";
(function(){
if (obj.readyState == 4) {
obj.parentNode.removeChild(obj);
}
else {
setTimeout(arguments.callee, 10);
}
})();
}
else {
obj.parentNode.replaceChild(abstractAltContent(obj), obj);
}
}
function abstractAltContent(obj) {
var ac = createElement("div");
if (ua.win && ua.ie) {
ac.innerHTML = obj.innerHTML;
}
else {
var nestedObj = obj.getElementsByTagName(OBJECT)[0];
if (nestedObj) {
var c = nestedObj.childNodes;
if (c) {
var cl = c.length;
for (var i = 0; i < cl; i++) {
if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) {
ac.appendChild(c[i].cloneNode(true));
}
}
}
}
}
return ac;
}
/* Cross-browser dynamic SWF creation
*/
function createSWF(attObj, parObj, id) {
var r, el = getElementById(id);
if (ua.wk && ua.wk < 312) { return r; }
if (el) {
if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content
attObj.id = id;
}
if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML
var att = "";
for (var i in attObj) {
if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries
if (i.toLowerCase() == "data") {
parObj.movie = attObj[i];
}
else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
att += ' class="' + attObj[i] + '"';
}
else if (i.toLowerCase() != "classid") {
att += ' ' + i + '="' + attObj[i] + '"';
}
}
}
var par = "";
for (var j in parObj) {
if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries
par += '<param name="' + j + '" value="' + parObj[j] + '" />';
}
}
el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only)
r = getElementById(attObj.id);
}
else { // well-behaving browsers
var o = createElement(OBJECT);
o.setAttribute("type", FLASH_MIME_TYPE);
for (var m in attObj) {
if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries
if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
o.setAttribute("class", attObj[m]);
}
else if (m.toLowerCase() != "classid") { // filter out IE specific attribute
o.setAttribute(m, attObj[m]);
}
}
}
for (var n in parObj) {
if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // filter out prototype additions from other potential libraries and IE specific param element
createObjParam(o, n, parObj[n]);
}
}
el.parentNode.replaceChild(o, el);
r = o;
}
}
return r;
}
function createObjParam(el, pName, pValue) {
var p = createElement("param");
p.setAttribute("name", pName);
p.setAttribute("value", pValue);
el.appendChild(p);
}
/* Cross-browser SWF removal
- Especially needed to safely and completely remove a SWF in Internet Explorer
*/
function removeSWF(id) {
var obj = getElementById(id);
if (obj && obj.nodeName == "OBJECT") {
if (ua.ie && ua.win) {
obj.style.display = "none";
(function(){
if (obj.readyState == 4) {
removeObjectInIE(id);
}
else {
setTimeout(arguments.callee, 10);
}
})();
}
else {
obj.parentNode.removeChild(obj);
}
}
}
function removeObjectInIE(id) {
var obj = getElementById(id);
if (obj) {
for (var i in obj) {
if (typeof obj[i] == "function") {
obj[i] = null;
}
}
obj.parentNode.removeChild(obj);
}
}
/* Functions to optimize JavaScript compression
*/
function getElementById(id) {
var el = null;
try {
el = doc.getElementById(id);
}
catch (e) {if (DEBUG) throw e}
return el;
}
function createElement(el) {
return doc.createElement(el);
}
/* Updated attachEvent function for Internet Explorer
- Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks
*/
function addListener(target, eventType, fn) {
target.attachEvent(eventType, fn);
listenersArr[listenersArr.length] = [target, eventType, fn];
}
/* Flash Player and SWF content version matching
*/
function hasPlayerVersion(rv) {
var pv = ua.pv, v = rv.split(".");
v[0] = parseInt(v[0], 10);
v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0"
v[2] = parseInt(v[2], 10) || 0;
return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
}
/* Cross-browser dynamic CSS creation
- Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php
*/
function createCSS(sel, decl, media, newStyle) {
if (ua.ie && ua.mac) { return; }
var h = doc.getElementsByTagName("head")[0];
if (!h) { return; } // to also support badly authored HTML pages that lack a head element
var m = (media && typeof media == "string") ? media : "screen";
if (newStyle) {
dynamicStylesheet = null;
dynamicStylesheetMedia = null;
}
if (!dynamicStylesheet || dynamicStylesheetMedia != m) {
// create dynamic stylesheet + get a global reference to it
var s = createElement("style");
s.setAttribute("type", "text/css");
s.setAttribute("media", m);
dynamicStylesheet = h.appendChild(s);
if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1];
}
dynamicStylesheetMedia = m;
}
// add style rule
if (ua.ie && ua.win) {
if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) {
dynamicStylesheet.addRule(sel, decl);
}
}
else {
if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) {
dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}"));
}
}
}
function setVisibility(id, isVisible) {
if (!autoHideShow) { return; }
var v = isVisible ? "visible" : "hidden";
if (isDomLoaded && getElementById(id)) {
getElementById(id).style.visibility = v;
}
else {
createCSS("#" + id, "visibility:" + v);
}
}
/* Filter to avoid XSS attacks
*/
function urlEncodeIfNecessary(s) {
var regex = /[\\\"<>\.;]/;
var hasBadChars = regex.exec(s) != null;
return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s;
}
/* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only)
*/
var cleanup = function() {
if (ua.ie && ua.win) {
window.attachEvent("onunload", function() {
// remove listeners to avoid memory leaks
var ll = listenersArr.length;
for (var i = 0; i < ll; i++) {
listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]);
}
// cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect
var il = objIdArr.length;
for (var j = 0; j < il; j++) {
removeSWF(objIdArr[j]);
}
// cleanup library's main closures to avoid memory leaks
for (var k in ua) {
ua[k] = null;
}
ua = null;
for (var l in swfobject) {
swfobject[l] = null;
}
swfobject = null;
});
}
}();
return {
/* Public API
- Reference: http://code.google.com/p/swfobject/wiki/documentation
*/
registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) {
if (ua.w3 && objectIdStr && swfVersionStr) {
var regObj = {};
regObj.id = objectIdStr;
regObj.swfVersion = swfVersionStr;
regObj.expressInstall = xiSwfUrlStr;
regObj.callbackFn = callbackFn;
regObjArr[regObjArr.length] = regObj;
setVisibility(objectIdStr, false);
}
else if (callbackFn) {
callbackFn({success:false, id:objectIdStr});
}
},
getObjectById: function(objectIdStr) {
if (ua.w3) {
return getObjectById(objectIdStr);
}
},
embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) {
var callbackObj = {success:false, id:replaceElemIdStr};
if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) {
setVisibility(replaceElemIdStr, false);
addDomLoadEvent(function() {
widthStr += ""; // auto-convert to string
heightStr += "";
var att = {};
if (attObj && typeof attObj === OBJECT) {
for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs
att[i] = attObj[i];
}
}
att.data = swfUrlStr;
att.width = widthStr;
att.height = heightStr;
var par = {};
if (parObj && typeof parObj === OBJECT) {
for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs
par[j] = parObj[j];
}
}
if (flashvarsObj && typeof flashvarsObj === OBJECT) {
for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs
if (typeof par.flashvars != UNDEF) {
par.flashvars += "&" + k + "=" + flashvarsObj[k];
}
else {
par.flashvars = k + "=" + flashvarsObj[k];
}
}
}
if (hasPlayerVersion(swfVersionStr)) { // create SWF
var obj = createSWF(att, par, replaceElemIdStr);
if (att.id == replaceElemIdStr) {
setVisibility(replaceElemIdStr, true);
}
callbackObj.success = true;
callbackObj.ref = obj;
}
else if (xiSwfUrlStr && canExpressInstall()) { // show Adobe Express Install
att.data = xiSwfUrlStr;
showExpressInstall(att, par, replaceElemIdStr, callbackFn);
return;
}
else { // show alternative content
setVisibility(replaceElemIdStr, true);
}
if (callbackFn) { callbackFn(callbackObj); }
});
}
else if (callbackFn) { callbackFn(callbackObj); }
},
switchOffAutoHideShow: function() {
autoHideShow = false;
},
ua: ua,
getFlashPlayerVersion: function() {
return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };
},
hasFlashPlayerVersion: hasPlayerVersion,
createSWF: function(attObj, parObj, replaceElemIdStr) {
if (ua.w3) {
return createSWF(attObj, parObj, replaceElemIdStr);
}
else {
return undefined;
}
},
showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) {
if (ua.w3 && canExpressInstall()) {
showExpressInstall(att, par, replaceElemIdStr, callbackFn);
}
},
removeSWF: function(objElemIdStr) {
if (ua.w3) {
removeSWF(objElemIdStr);
}
},
createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) {
if (ua.w3) {
createCSS(selStr, declStr, mediaStr, newStyleBoolean);
}
},
addDomLoadEvent: addDomLoadEvent,
addLoadEvent: addLoadEvent,
getQueryParamValue: function(param) {
var q = doc.location.search || doc.location.hash;
if (q) {
if (/\?/.test(q)) { q = q.split("?")[1]; } // strip question mark
if (param == null) {
return urlEncodeIfNecessary(q);
}
var pairs = q.split("&");
for (var i = 0; i < pairs.length; i++) {
if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1)));
}
}
}
return "";
},
// For internal usage only
expressInstallCallback: function() {
if (isExpressInstallActive) {
var obj = getElementById(EXPRESS_INSTALL_ID);
if (obj && storedAltContent) {
obj.parentNode.replaceChild(storedAltContent, obj);
if (storedAltContentId) {
setVisibility(storedAltContentId, true);
if (ua.ie && ua.win) { storedAltContent.style.display = "block"; }
}
if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); }
}
isExpressInstallActive = false;
}
}
};
}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,453 +0,0 @@
# The language name as it will appear in the language menu
msgid "Language-Name"
msgstr ""
msgid "%b and %b"
msgstr "%b meow %b"
msgid "%b or %b"
msgstr "%b meow %b"
msgid "%m.attribute of %m.spriteOrStage"
msgstr ""
msgid "%m.list contains %s"
msgstr "%m.list meows %s"
msgid "%m.mathOp of %n"
msgstr "%m.mathOp meow %n"
msgid "%m.sensor sensor value"
msgstr ""
msgid "%n mod %n"
msgstr ""
msgid "add %s to %m.list"
msgstr "meow %s to %m.list"
msgid "answer"
msgstr "meow"
msgid "ask %s and wait"
msgstr "meow %s and meow"
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "backdrop #"
msgstr "meow #"
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "backdrop name"
msgstr "backdrop meow"
msgid "broadcast %m.broadcast"
msgstr "meow %m.broadcast"
msgid "broadcast %m.broadcast and wait"
msgstr "meow %m.broadcast and wait"
msgid "change %m.effect effect by %n"
msgstr "meow %m.effect effect by %n"
msgid "change %m.var by %n"
msgstr "meow %m.var by %n"
msgid "change pen color by %n"
msgstr "change meow color by %n"
msgid "change pen shade by %n"
msgstr "change meow shade by %n"
msgid "change pen size by %n"
msgstr "change meow size by %n"
msgid "change size by %n"
msgstr "change meow by %n"
msgid "change tempo by %n"
msgstr "change meow by %n"
msgid "change volume by %n"
msgstr "change meow by %n"
msgid "change x by %n"
msgstr "meow x by %n"
msgid "change y by %n"
msgstr "meow y by %n"
msgid "clear"
msgstr "meow"
msgid "clear graphic effects"
msgstr "clear meow effects"
msgid "color %c is touching %c?"
msgstr "meow %c is touching %c?"
msgid "Control"
msgstr "Meow"
msgid "costume #"
msgstr "meow #"
msgid "create clone of %m.spriteOnly"
msgstr "create meow of %m.spriteOnly"
msgid "current %m.timeAndDate"
msgstr "meow %m.timeAndDate"
msgid "Data"
msgstr "Meow"
msgid "days since 2000"
msgstr "Meows since 200"
msgid "define"
msgstr "meow"
msgid "delete %d.listDeleteItem of %m.list"
msgstr "meow %d.listDeleteItem of %m.list"
msgid "delete this clone"
msgstr "delete this meow"
msgid "direction"
msgstr "meow"
msgid "distance"
msgstr "meow"
msgid "distance to %m.spriteOrMouse"
msgstr "meow to %m.spriteOrMouse"
msgid "else"
msgstr "meow"
msgid "Events"
msgstr "Meow"
msgid "forever"
msgstr "meow"
msgid "glide %n secs to x:%n y:%n"
msgstr "meow %n secs to x:%n y:%n"
msgid "go back %n layers"
msgstr "go meow %n layers"
msgid "go to %m.spriteOrMouse"
msgstr "meow to %m.spriteOrMouse"
msgid "go to front"
msgstr "meow to front"
msgid "go to x:%n y:%n"
msgstr "meow to x:%n y:%n"
msgid "hide"
msgstr "meow"
msgid "hide list %m.list"
msgstr "hide meow %m.list"
msgid "hide variable %m.var"
msgstr "hide meow %m.var"
msgid "if %b then"
msgstr "meow %b then"
msgid "if on edge, bounce"
msgstr "f on edge, meow"
msgid "insert %s at %d.listItem of %m.list"
msgstr "meow %s at %d.listItem of %m.list"
msgid "item %d.listItem of %m.list"
msgstr "meow %d.listItem of %m.list"
msgid "join %s %s"
msgstr "meow %s %s"
msgid "key %m.key pressed?"
msgstr "meow %m.key pressed?"
msgid "length of %m.list"
msgstr "meow of %m.list"
msgid "length of %s"
msgstr "meow of %s"
msgid "letter %n of %s"
msgstr "meow %n of %s"
msgid "Looks"
msgstr "Meow"
msgid "loudness"
msgstr "meow"
msgid "More Blocks"
msgstr "Meow Meow"
msgid "Motion"
msgstr "Meow"
msgid "mouse down?"
msgstr ""
msgid "mouse x"
msgstr ""
msgid "mouse y"
msgstr ""
msgid "move %n steps"
msgstr "meow %n steps"
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "next backdrop"
msgstr "meow backdrop"
msgid "next costume"
msgstr "meow costume"
msgid "not %b"
msgstr "meow %b"
msgid "Operators"
msgstr "Meow"
msgid "Pen"
msgstr "Meow"
msgid "pen down"
msgstr "meow down"
msgid "pen up"
msgstr "meow up"
msgid "pick random %n to %n"
msgstr "pick meow %n to %n"
msgid "play drum %d.drum for %n beats"
msgstr "play meow %d.drum for %n beats"
msgid "play note %d.note for %n beats"
msgstr "play meow %d.note for %n beats"
msgid "play sound %m.sound"
msgstr "play meow %d.note for %n beats"
msgid "play sound %m.sound until done"
msgstr "play meow %m.sound until meow"
msgid "point in direction %d.direction"
msgstr "meow in direction %d.direction"
msgid "point towards %m.spriteOrMouse"
msgstr "meow towards %m.spriteOrMouse"
msgid "repeat %n"
msgstr "meow %n"
msgid "repeat until %b"
msgstr "repeat meow %b"
msgid "replace item %d.listItem of %m.list with %s"
msgstr "replace meow %d.listItem of %m.list with %s"
msgid "reset timer"
msgstr "reset meow"
msgid "rest for %n beats"
msgstr "meow for %n beats"
msgid "round %n"
msgstr "meow %n"
msgid "say %s"
msgstr "meow %s"
msgid "say %s for %n secs"
msgstr "meow %s for %n secs"
msgid "Sensing"
msgstr "Meow"
msgid "sensor %m.booleanSensor?"
msgstr ""
msgid "set %m.effect effect to %n"
msgstr ""
msgid "set %m.var to %s"
msgstr ""
msgid "set instrument to %d.instrument"
msgstr ""
msgid "set motor direction %m.motorDirection"
msgstr ""
msgid "set motor power %n"
msgstr ""
msgid "set pen color to %c"
msgstr "set meow meow to %c"
msgid "set pen color to %n"
msgstr "set meow meow to %n"
msgid "set pen shade to %n"
msgstr "set meow meow to %n"
msgid "set pen size to %n"
msgstr "set meow meow to %n"
msgid "set rotation style %m.rotationStyle"
msgstr "set meow style %m.rotationStyle"
msgid "set size to %n%"
msgstr "set meow to %n%"
msgid "set tempo to %n bpm"
msgstr "set tempo to %n meowpm"
msgid "set video transparency to %n%"
msgstr "set meow transparency to %n%"
msgid "set volume to %n%"
msgstr "meow volume to %n%"
msgid "set x to %n"
msgstr "meow x to %n"
msgid "set y to %n"
msgstr "meow y to %n"
msgid "show"
msgstr "meow"
msgid "show list %m.list"
msgstr "meow list %m.list"
msgid "show variable %m.var"
msgstr "meow variable %m.var"
msgid "size"
msgstr "meow"
msgid "Sound"
msgstr "Meow"
msgid "stamp"
msgstr "meow"
msgid "stop %m.stop"
msgstr "meow %m.stop"
msgid "stop all sounds"
msgstr "stop all meows"
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "switch backdrop to %m.backdrop"
msgstr "switch meow to %m.backdrop"
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "switch backdrop to %m.backdrop and wait"
msgstr "switch meow to %m.backdrop and meow"
msgid "switch costume to %m.costume"
msgstr "switch meow to %m.costume"
msgid "tempo"
msgstr "moew"
msgid "think %s"
msgstr "meow %s"
msgid "think %s for %n secs"
msgstr "meow %s for %n secs"
msgid "tilt"
msgstr "meow"
msgid "timer"
msgstr "meow"
msgid "touching %m.touching?"
msgstr "moew %m.touching?"
msgid "touching color %c?"
msgstr "meow color %c?"
msgid "turn @turnLeft %n degrees"
msgstr "meow @turnLeft %n degrees"
msgid "turn @turnRight %n degrees"
msgstr "meow @turnRight %n degrees"
msgid "turn motor off"
msgstr ""
msgid "turn motor on"
msgstr ""
msgid "turn motor on for %n secs"
msgstr ""
msgid "turn video %m.videoState"
msgstr ""
msgid "username"
msgstr ""
msgid "video %m.videoMotionType on %m.stageOrThis"
msgstr "meow %m.videoMotionType on %m.stageOrThis"
msgid "volume"
msgstr "meow"
msgid "wait %n secs"
msgstr "meow %n secs"
msgid "wait until %b"
msgstr "meow until %b"
msgid "when %m.booleanSensor"
msgstr ""
msgid "when %m.key key pressed"
msgstr "when %m.key key meowed"
msgid "when %m.triggerSensor > %n"
msgstr ""
msgid "when @greenFlag clicked"
msgstr "when @greenFlag meowed"
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "when backdrop switches to %m.backdrop"
msgstr "when meow meows to %m.backdrop"
msgid "when distance < %n"
msgstr "when meow < %n"
msgid "when I receive %m.broadcast"
msgstr "when I meow %m.broadcast"
msgid "when I start as a clone"
msgstr "when I meow as a meow"
msgid "when this sprite clicked"
msgstr "when this sprite meowed"
msgid "when tilt = %n"
msgstr "when meow = %n"
msgid "x position"
msgstr "x meow"
msgid "y position"
msgstr "y moew"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,976 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: fa_AF\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
msgid "Language-Name"
msgstr "Dari"
msgid "%b and %b"
msgstr ""
msgid "%b or %b"
msgstr ""
msgid "%m.attribute of %m.spriteOrStage"
msgstr ""
msgid "%m.list contains %s"
msgstr ""
msgid "%m.mathOp of %n"
msgstr ""
msgid "%m.sensor sensor value"
msgstr ""
msgid "%n mod %n"
msgstr ""
msgid "add %s to %m.list"
msgstr ""
msgid "answer"
msgstr ""
msgid "ask %s and wait"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "backdrop #"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "backdrop name"
msgstr ""
msgid "broadcast %m.broadcast"
msgstr ""
msgid "broadcast %m.broadcast and wait"
msgstr ""
msgid "change %m.effect effect by %n"
msgstr ""
msgid "change %m.var by %n"
msgstr ""
msgid "change pen color by %n"
msgstr ""
msgid "change pen shade by %n"
msgstr ""
msgid "change pen size by %n"
msgstr ""
msgid "change size by %n"
msgstr ""
msgid "change tempo by %n"
msgstr ""
msgid "change volume by %n"
msgstr ""
msgid "change x by %n"
msgstr ""
msgid "change y by %n"
msgstr ""
msgid "clear"
msgstr ""
msgid "clear graphic effects"
msgstr ""
msgid "clone startup"
msgstr ""
msgid "color %c is touching %c?"
msgstr ""
msgid "Control"
msgstr ""
msgid "costume #"
msgstr ""
msgid "create clone of %m.spriteOnly"
msgstr ""
msgid "current %m.timeAndDate"
msgstr ""
msgid "Data"
msgstr ""
msgid "define"
msgstr ""
msgid "delete %d.listDeleteItem of %m.list"
msgstr ""
msgid "delete this clone"
msgstr ""
msgid "direction"
msgstr ""
msgid "distance"
msgstr ""
msgid "distance to %m.spriteOrMouse"
msgstr ""
msgid "else"
msgstr ""
msgid "Events"
msgstr ""
msgid "forever"
msgstr ""
msgid "forever if %b"
msgstr ""
msgid "glide %n secs to x:%n y:%n"
msgstr ""
msgid "go back %n layers"
msgstr ""
msgid "go to %m.spriteOrMouse"
msgstr ""
msgid "go to front"
msgstr ""
msgid "go to x:%n y:%n"
msgstr ""
msgid "hide"
msgstr ""
msgid "hide all sprites"
msgstr ""
msgid "hide monitor %m.varOrList"
msgstr ""
msgid "if %b"
msgstr ""
msgid "if on edge, bounce"
msgstr ""
msgid "insert %s at %d.listItem of %m.list"
msgstr ""
msgid "item %d.listItem of %m.list"
msgstr ""
msgid "join %s %s"
msgstr ""
msgid "key %m.key pressed?"
msgstr ""
msgid "length of %m.list"
msgstr ""
msgid "length of %s"
msgstr ""
msgid "letter %n of %s"
msgstr ""
msgid "Looks"
msgstr ""
msgid "loudness"
msgstr ""
msgid "More Blocks"
msgstr ""
msgid "Motion"
msgstr ""
msgid "motor direction %m.motorDirection"
msgstr ""
msgid "motor off"
msgstr ""
msgid "motor on"
msgstr ""
msgid "motor on for %n secs"
msgstr ""
msgid "motor power %n"
msgstr ""
msgid "mouse down?"
msgstr ""
msgid "mouse x"
msgstr ""
msgid "mouse y"
msgstr ""
msgid "move %n steps"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "next backdrop"
msgstr ""
msgid "next costume"
msgstr ""
msgid "not %b"
msgstr ""
msgid "Operators"
msgstr ""
msgid "Pen"
msgstr ""
msgid "pen down"
msgstr ""
msgid "pen up"
msgstr ""
msgid "pick random %n to %n"
msgstr ""
msgid "play drum %d.drum for %n beats"
msgstr ""
msgid "play note %n for %n beats"
msgstr ""
msgid "play sound %m.sound"
msgstr ""
msgid "play sound %m.sound until done"
msgstr ""
msgid "point in direction %d.direction"
msgstr ""
msgid "point towards %m.spriteOrMouse"
msgstr ""
msgid "repeat %n"
msgstr ""
msgid "repeat until %b"
msgstr ""
msgid "replace item %d.listItem of %m.list with %s"
msgstr ""
msgid "reset timer"
msgstr ""
msgid "rest for %n beats"
msgstr ""
msgid "round %n"
msgstr ""
msgid "say %s"
msgstr ""
msgid "say %s for %n secs"
msgstr ""
msgid "Scratch days"
msgstr ""
msgid "Sensing"
msgstr ""
msgid "sensor %m.booleanSensor?"
msgstr ""
msgid "set %m.effect effect to %n"
msgstr ""
msgid "set %m.var to %s"
msgstr ""
msgid "set instrument to %d.instrument"
msgstr ""
msgid "set pen color to %c"
msgstr ""
msgid "set pen color to %n"
msgstr ""
msgid "set pen shade to %n"
msgstr ""
msgid "set pen size to %n"
msgstr ""
msgid "set size to %n%"
msgstr ""
msgid "set tempo to %n bpm"
msgstr ""
msgid "set video transparency to %n%"
msgstr ""
msgid "set volume to %n%"
msgstr ""
msgid "set x to %n"
msgstr ""
msgid "set y to %n"
msgstr ""
msgid "show"
msgstr ""
msgid "show monitor %m.varOrList"
msgstr ""
msgid "size"
msgstr ""
msgid "Sound"
msgstr ""
msgid "stamp"
msgstr ""
msgid "stop %m.stop"
msgstr ""
msgid "stop all sounds"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "switch backdrop to %m.backdrop"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "switch backdrop to %m.backdrop and wait"
msgstr ""
msgid "switch costume to %m.costume"
msgstr ""
msgid "tempo"
msgstr ""
msgid "think %s"
msgstr ""
msgid "think %s for %n secs"
msgstr ""
msgid "tilt"
msgstr ""
msgid "timer"
msgstr ""
msgid "touching %m.touching?"
msgstr ""
msgid "touching color %c?"
msgstr ""
msgid "turn @turnLeft %n degrees"
msgstr ""
msgid "turn @turnRight %n degrees"
msgstr ""
msgid "turn video %m.videoState"
msgstr ""
msgid "user id"
msgstr ""
msgid "video %m.videoMotionType on %m.stageOrThis"
msgstr ""
msgid "volume"
msgstr ""
msgid "wait %n secs"
msgstr ""
msgid "wait until %b"
msgstr ""
msgid "when %m.key key pressed"
msgstr ""
msgid "when @greenFlag clicked"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "when backdrop switches to %m.backdrop"
msgstr ""
msgid "when I am clicked"
msgstr ""
msgid "when I receive %m.broadcast"
msgstr ""
msgid "x position"
msgstr ""
msgid "y position"
msgstr ""
msgid "A connected"
msgstr ""
msgid "abs"
msgstr ""
msgid "acos"
msgstr ""
msgid "Add a boolean input:"
msgstr ""
msgid "Add a number input:"
msgstr ""
msgid "Add a string input:"
msgstr ""
msgid "Add label text:"
msgstr ""
msgid "all"
msgstr ""
msgid "any"
msgstr ""
msgid "asin"
msgstr ""
msgid "atan"
msgstr ""
msgid "B connected"
msgstr ""
msgid "backdrop1"
msgstr ""
msgid "Backpack"
msgstr ""
msgid "Bass"
msgstr ""
msgid "Bassoon"
msgstr ""
msgid "bottom-left"
msgstr ""
msgid "bottom-right"
msgstr ""
msgid "brightness"
msgstr ""
msgid "button pressed"
msgstr ""
msgid "C connected"
msgstr ""
msgid "Cabasa"
msgstr ""
msgid "Camera"
msgstr ""
msgid "Cannot Delete"
msgstr ""
msgid "ceiling"
msgstr ""
msgid "Cello"
msgstr ""
msgid "Choir"
msgstr ""
msgid "Clarinet"
msgstr ""
msgid "Claves"
msgstr ""
msgid "clear senders/receivers"
msgstr ""
msgid "Closed Hi-Hat"
msgstr ""
msgid "color"
msgstr ""
msgid "copy"
msgstr ""
msgid "cos"
msgstr ""
msgid "costume name"
msgstr ""
msgid "costume1"
msgstr ""
msgid "Cowbell"
msgstr ""
msgid "Crash Cymbal"
msgstr ""
msgid "cut"
msgstr ""
msgid "D connected"
msgstr ""
msgid "date"
msgstr ""
msgid "day of week"
msgstr ""
msgid "delete"
msgstr ""
msgid "down"
msgstr ""
msgid "down arrow"
msgstr ""
msgid "duplicate"
msgstr ""
msgid "Duplicate"
msgstr ""
msgid "e ^"
msgstr ""
msgid "edge"
msgstr ""
msgid "edit"
msgstr ""
msgid "Edit"
msgstr ""
msgid "Effects"
msgstr ""
msgid "Electric Guitar"
msgstr ""
msgid "Electric Piano"
msgstr ""
msgid "fade in"
msgstr ""
msgid "fade out"
msgstr ""
msgid "fisheye"
msgstr ""
msgid "floor"
msgstr ""
msgid "Floor Tom"
msgstr ""
msgid "Flute"
msgstr ""
msgid "ghost"
msgstr ""
msgid "Guitar"
msgstr ""
msgid "Hand Clap"
msgstr ""
msgid "High Bongo"
msgstr ""
msgid "High Tom"
msgstr ""
msgid "High Wood Block"
msgstr ""
msgid "hour"
msgstr ""
msgid "Import"
msgstr ""
msgid "int"
msgstr ""
msgid "Kick Drum"
msgstr ""
msgid "last"
msgstr ""
msgid "left"
msgstr ""
msgid "left arrow"
msgstr ""
msgid "Library"
msgstr ""
msgid "light"
msgstr ""
msgid "ln"
msgstr ""
msgid "log"
msgstr ""
msgid "login"
msgstr ""
msgid "Long Guiro"
msgstr ""
msgid "louder"
msgstr ""
msgid "Low Bongo"
msgstr ""
msgid "Low Conga"
msgstr ""
msgid "Low Tom"
msgstr ""
msgid "Low Wood Block"
msgstr ""
msgid "Maracas"
msgstr ""
msgid "Marimba"
msgstr ""
msgid "message1"
msgstr ""
msgid "Mid Tom"
msgstr ""
msgid "middle"
msgstr ""
msgid "minute"
msgstr ""
msgid "month"
msgstr ""
msgid "More"
msgstr ""
msgid "mosaic"
msgstr ""
msgid "motion"
msgstr ""
msgid "mouse-pointer"
msgstr ""
msgid "Music Box"
msgstr ""
msgid "Mute High Conga"
msgstr ""
msgid "Mute Triangle"
msgstr ""
msgid "name"
msgstr ""
msgid "New"
msgstr ""
msgid "New backdrop"
msgstr ""
msgid "New costume"
msgstr ""
msgid "new message..."
msgstr ""
msgid "New sound"
msgstr ""
msgid "New sprite:"
msgstr ""
msgid "off"
msgstr ""
msgid "on"
msgstr ""
msgid "on-flipped"
msgstr ""
msgid "Open Cuica"
msgstr ""
msgid "Open Hi-Hat"
msgstr ""
msgid "Open High Conga"
msgstr ""
msgid "Open Triangle"
msgstr ""
msgid "Organ"
msgstr ""
msgid "other scripts in stage"
msgstr ""
msgid "Paint"
msgstr ""
msgid "paste"
msgstr ""
msgid "Pedal Hi-Hat"
msgstr ""
msgid "photo1"
msgstr ""
msgid "Piano"
msgstr ""
msgid "pixelate"
msgstr ""
msgid "Pizzicato"
msgstr ""
msgid "pop"
msgstr ""
msgid "Record"
msgstr ""
msgid "recording1"
msgstr ""
msgid "redo"
msgstr ""
msgid "Remix"
msgstr ""
msgid "resistance-A"
msgstr ""
msgid "resistance-B"
msgstr ""
msgid "resistance-C"
msgstr ""
msgid "resistance-D"
msgstr ""
msgid "reverse"
msgstr ""
msgid "right"
msgstr ""
msgid "right arrow"
msgstr ""
msgid "Saxophone"
msgstr ""
msgid "say"
msgstr ""
msgid "second"
msgstr ""
msgid "See project page"
msgstr ""
msgid "select all"
msgstr ""
msgid "Short Guiro"
msgstr ""
msgid "shout"
msgstr ""
msgid "show receivers"
msgstr ""
msgid "show senders"
msgstr ""
msgid "Side Stick"
msgstr ""
msgid "silence"
msgstr ""
msgid "sin"
msgstr ""
msgid "slider"
msgstr ""
msgid "Snare Drum"
msgstr ""
msgid "softer"
msgstr ""
msgid "sound"
msgstr ""
msgid "space"
msgstr ""
msgid "Sprites"
msgstr ""
msgid "sqrt"
msgstr ""
msgid "Stage"
msgstr ""
msgid "Steel Drum"
msgstr ""
msgid "Synth Lead"
msgstr ""
msgid "Synth Pad"
msgstr ""
msgid "Tambourine"
msgstr ""
msgid "tan"
msgstr ""
msgid "that way"
msgstr ""
msgid "think"
msgstr ""
msgid "this script"
msgstr ""
msgid "this way"
msgstr ""
msgid "Tips"
msgstr ""
msgid "To delete a block definition, first remove all uses of the block."
msgstr ""
msgid "top-left"
msgstr ""
msgid "top-right"
msgstr ""
msgid "Trombone"
msgstr ""
msgid "undo"
msgstr ""
msgid "up"
msgstr ""
msgid "up arrow"
msgstr ""
msgid "Vibraphone"
msgstr ""
msgid "Vibraslap"
msgstr ""
msgid "whirl"
msgstr ""
msgid "whisper"
msgstr ""
msgid "Wooden Flute"
msgstr ""
msgid "year"
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -1,965 +0,0 @@
msgid "Language-Name"
msgstr "Dari"
msgid "%b and %b"
msgstr ""
msgid "%b or %b"
msgstr ""
msgid "%m.attribute of %m.spriteOrStage"
msgstr ""
msgid "%m.list contains %s"
msgstr ""
msgid "%m.mathOp of %n"
msgstr ""
msgid "%m.sensor sensor value"
msgstr ""
msgid "%n mod %n"
msgstr ""
msgid "add %s to %m.list"
msgstr ""
msgid "answer"
msgstr ""
msgid "ask %s and wait"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "backdrop #"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "backdrop name"
msgstr ""
msgid "broadcast %m.broadcast"
msgstr ""
msgid "broadcast %m.broadcast and wait"
msgstr ""
msgid "change %m.effect effect by %n"
msgstr ""
msgid "change %m.var by %n"
msgstr ""
msgid "change pen color by %n"
msgstr ""
msgid "change pen shade by %n"
msgstr ""
msgid "change pen size by %n"
msgstr ""
msgid "change size by %n"
msgstr ""
msgid "change tempo by %n"
msgstr ""
msgid "change volume by %n"
msgstr ""
msgid "change x by %n"
msgstr ""
msgid "change y by %n"
msgstr ""
msgid "clear"
msgstr ""
msgid "clear graphic effects"
msgstr ""
msgid "clone startup"
msgstr ""
msgid "color %c is touching %c?"
msgstr ""
msgid "Control"
msgstr ""
msgid "costume #"
msgstr ""
msgid "create clone of %m.spriteOnly"
msgstr ""
msgid "current %m.timeAndDate"
msgstr ""
msgid "Data"
msgstr ""
msgid "define"
msgstr ""
msgid "delete %d.listDeleteItem of %m.list"
msgstr ""
msgid "delete this clone"
msgstr ""
msgid "direction"
msgstr ""
msgid "distance"
msgstr ""
msgid "distance to %m.spriteOrMouse"
msgstr ""
msgid "else"
msgstr ""
msgid "Events"
msgstr ""
msgid "forever"
msgstr ""
msgid "forever if %b"
msgstr ""
msgid "glide %n secs to x:%n y:%n"
msgstr ""
msgid "go back %n layers"
msgstr ""
msgid "go to %m.spriteOrMouse"
msgstr ""
msgid "go to front"
msgstr ""
msgid "go to x:%n y:%n"
msgstr ""
msgid "hide"
msgstr ""
msgid "hide all sprites"
msgstr ""
msgid "hide monitor %m.varOrList"
msgstr ""
msgid "if %b"
msgstr ""
msgid "if on edge, bounce"
msgstr ""
msgid "insert %s at %d.listItem of %m.list"
msgstr ""
msgid "item %d.listItem of %m.list"
msgstr ""
msgid "join %s %s"
msgstr ""
msgid "key %m.key pressed?"
msgstr ""
msgid "length of %m.list"
msgstr ""
msgid "length of %s"
msgstr ""
msgid "letter %n of %s"
msgstr ""
msgid "Looks"
msgstr ""
msgid "loudness"
msgstr ""
msgid "More Blocks"
msgstr ""
msgid "Motion"
msgstr ""
msgid "motor direction %m.motorDirection"
msgstr ""
msgid "motor off"
msgstr ""
msgid "motor on"
msgstr ""
msgid "motor on for %n secs"
msgstr ""
msgid "motor power %n"
msgstr ""
msgid "mouse down?"
msgstr ""
msgid "mouse x"
msgstr ""
msgid "mouse y"
msgstr ""
msgid "move %n steps"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "next backdrop"
msgstr ""
msgid "next costume"
msgstr ""
msgid "not %b"
msgstr ""
msgid "Operators"
msgstr ""
msgid "Pen"
msgstr ""
msgid "pen down"
msgstr ""
msgid "pen up"
msgstr ""
msgid "pick random %n to %n"
msgstr ""
msgid "play drum %d.drum for %n beats"
msgstr ""
msgid "play note %n for %n beats"
msgstr ""
msgid "play sound %m.sound"
msgstr ""
msgid "play sound %m.sound until done"
msgstr ""
msgid "point in direction %d.direction"
msgstr ""
msgid "point towards %m.spriteOrMouse"
msgstr ""
msgid "repeat %n"
msgstr ""
msgid "repeat until %b"
msgstr ""
msgid "replace item %d.listItem of %m.list with %s"
msgstr ""
msgid "reset timer"
msgstr ""
msgid "rest for %n beats"
msgstr ""
msgid "round %n"
msgstr ""
msgid "say %s"
msgstr ""
msgid "say %s for %n secs"
msgstr ""
msgid "Scratch days"
msgstr ""
msgid "Sensing"
msgstr ""
msgid "sensor %m.booleanSensor?"
msgstr ""
msgid "set %m.effect effect to %n"
msgstr ""
msgid "set %m.var to %s"
msgstr ""
msgid "set instrument to %d.instrument"
msgstr ""
msgid "set pen color to %c"
msgstr ""
msgid "set pen color to %n"
msgstr ""
msgid "set pen shade to %n"
msgstr ""
msgid "set pen size to %n"
msgstr ""
msgid "set size to %n%"
msgstr ""
msgid "set tempo to %n bpm"
msgstr ""
msgid "set video transparency to %n%"
msgstr ""
msgid "set volume to %n%"
msgstr ""
msgid "set x to %n"
msgstr ""
msgid "set y to %n"
msgstr ""
msgid "show"
msgstr ""
msgid "show monitor %m.varOrList"
msgstr ""
msgid "size"
msgstr ""
msgid "Sound"
msgstr ""
msgid "stamp"
msgstr ""
msgid "stop %m.stop"
msgstr ""
msgid "stop all sounds"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "switch backdrop to %m.backdrop"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "switch backdrop to %m.backdrop and wait"
msgstr ""
msgid "switch costume to %m.costume"
msgstr ""
msgid "tempo"
msgstr ""
msgid "think %s"
msgstr ""
msgid "think %s for %n secs"
msgstr ""
msgid "tilt"
msgstr ""
msgid "timer"
msgstr ""
msgid "touching %m.touching?"
msgstr ""
msgid "touching color %c?"
msgstr ""
msgid "turn @turnLeft %n degrees"
msgstr ""
msgid "turn @turnRight %n degrees"
msgstr ""
msgid "turn video %m.videoState"
msgstr ""
msgid "user id"
msgstr ""
msgid "video %m.videoMotionType on %m.stageOrThis"
msgstr ""
msgid "volume"
msgstr ""
msgid "wait %n secs"
msgstr ""
msgid "wait until %b"
msgstr ""
msgid "when %m.key key pressed"
msgstr ""
msgid "when @greenFlag clicked"
msgstr ""
# "backdrop" in Scratch 2.0 is similar to "background" in Scratch 1.4
msgid "when backdrop switches to %m.backdrop"
msgstr ""
msgid "when I am clicked"
msgstr ""
msgid "when I receive %m.broadcast"
msgstr ""
msgid "x position"
msgstr ""
msgid "y position"
msgstr ""
msgid "A connected"
msgstr ""
msgid "abs"
msgstr ""
msgid "acos"
msgstr ""
msgid "Add a boolean input:"
msgstr ""
msgid "Add a number input:"
msgstr ""
msgid "Add a string input:"
msgstr ""
msgid "Add label text:"
msgstr ""
msgid "all"
msgstr ""
msgid "any"
msgstr ""
msgid "asin"
msgstr ""
msgid "atan"
msgstr ""
msgid "B connected"
msgstr ""
msgid "backdrop1"
msgstr ""
msgid "Backpack"
msgstr ""
msgid "Bass"
msgstr ""
msgid "Bassoon"
msgstr ""
msgid "bottom-left"
msgstr ""
msgid "bottom-right"
msgstr ""
msgid "brightness"
msgstr ""
msgid "button pressed"
msgstr ""
msgid "C connected"
msgstr ""
msgid "Cabasa"
msgstr ""
msgid "Camera"
msgstr ""
msgid "Cannot Delete"
msgstr ""
msgid "ceiling"
msgstr ""
msgid "Cello"
msgstr ""
msgid "Choir"
msgstr ""
msgid "Clarinet"
msgstr ""
msgid "Claves"
msgstr ""
msgid "clear senders/receivers"
msgstr ""
msgid "Closed Hi-Hat"
msgstr ""
msgid "color"
msgstr ""
msgid "copy"
msgstr ""
msgid "cos"
msgstr ""
msgid "costume name"
msgstr ""
msgid "costume1"
msgstr ""
msgid "Cowbell"
msgstr ""
msgid "Crash Cymbal"
msgstr ""
msgid "cut"
msgstr ""
msgid "D connected"
msgstr ""
msgid "date"
msgstr ""
msgid "day of week"
msgstr ""
msgid "delete"
msgstr ""
msgid "down"
msgstr ""
msgid "down arrow"
msgstr ""
msgid "duplicate"
msgstr ""
msgid "Duplicate"
msgstr ""
msgid "e ^"
msgstr ""
msgid "edge"
msgstr ""
msgid "edit"
msgstr ""
msgid "Edit"
msgstr ""
msgid "Effects"
msgstr ""
msgid "Electric Guitar"
msgstr ""
msgid "Electric Piano"
msgstr ""
msgid "fade in"
msgstr ""
msgid "fade out"
msgstr ""
msgid "fisheye"
msgstr ""
msgid "floor"
msgstr ""
msgid "Floor Tom"
msgstr ""
msgid "Flute"
msgstr ""
msgid "ghost"
msgstr ""
msgid "Guitar"
msgstr ""
msgid "Hand Clap"
msgstr ""
msgid "High Bongo"
msgstr ""
msgid "High Tom"
msgstr ""
msgid "High Wood Block"
msgstr ""
msgid "hour"
msgstr ""
msgid "Import"
msgstr ""
msgid "int"
msgstr ""
msgid "Kick Drum"
msgstr ""
msgid "last"
msgstr ""
msgid "left"
msgstr ""
msgid "left arrow"
msgstr ""
msgid "Library"
msgstr ""
msgid "light"
msgstr ""
msgid "ln"
msgstr ""
msgid "log"
msgstr ""
msgid "login"
msgstr ""
msgid "Long Guiro"
msgstr ""
msgid "louder"
msgstr ""
msgid "Low Bongo"
msgstr ""
msgid "Low Conga"
msgstr ""
msgid "Low Tom"
msgstr ""
msgid "Low Wood Block"
msgstr ""
msgid "Maracas"
msgstr ""
msgid "Marimba"
msgstr ""
msgid "message1"
msgstr ""
msgid "Mid Tom"
msgstr ""
msgid "middle"
msgstr ""
msgid "minute"
msgstr ""
msgid "month"
msgstr ""
msgid "More"
msgstr ""
msgid "mosaic"
msgstr ""
msgid "motion"
msgstr ""
msgid "mouse-pointer"
msgstr ""
msgid "Music Box"
msgstr ""
msgid "Mute High Conga"
msgstr ""
msgid "Mute Triangle"
msgstr ""
msgid "name"
msgstr ""
msgid "New"
msgstr ""
msgid "New backdrop"
msgstr ""
msgid "New costume"
msgstr ""
msgid "new message..."
msgstr ""
msgid "New sound"
msgstr ""
msgid "New sprite:"
msgstr ""
msgid "off"
msgstr ""
msgid "on"
msgstr ""
msgid "on-flipped"
msgstr ""
msgid "Open Cuica"
msgstr ""
msgid "Open Hi-Hat"
msgstr ""
msgid "Open High Conga"
msgstr ""
msgid "Open Triangle"
msgstr ""
msgid "Organ"
msgstr ""
msgid "other scripts in stage"
msgstr ""
msgid "Paint"
msgstr ""
msgid "paste"
msgstr ""
msgid "Pedal Hi-Hat"
msgstr ""
msgid "photo1"
msgstr ""
msgid "Piano"
msgstr ""
msgid "pixelate"
msgstr ""
msgid "Pizzicato"
msgstr ""
msgid "pop"
msgstr ""
msgid "Record"
msgstr ""
msgid "recording1"
msgstr ""
msgid "redo"
msgstr ""
msgid "Remix"
msgstr ""
msgid "resistance-A"
msgstr ""
msgid "resistance-B"
msgstr ""
msgid "resistance-C"
msgstr ""
msgid "resistance-D"
msgstr ""
msgid "reverse"
msgstr ""
msgid "right"
msgstr ""
msgid "right arrow"
msgstr ""
msgid "Saxophone"
msgstr ""
msgid "say"
msgstr ""
msgid "second"
msgstr ""
msgid "See project page"
msgstr ""
msgid "select all"
msgstr ""
msgid "Short Guiro"
msgstr ""
msgid "shout"
msgstr ""
msgid "show receivers"
msgstr ""
msgid "show senders"
msgstr ""
msgid "Side Stick"
msgstr ""
msgid "silence"
msgstr ""
msgid "sin"
msgstr ""
msgid "slider"
msgstr ""
msgid "Snare Drum"
msgstr ""
msgid "softer"
msgstr ""
msgid "sound"
msgstr ""
msgid "space"
msgstr ""
msgid "Sprites"
msgstr ""
msgid "sqrt"
msgstr ""
msgid "Stage"
msgstr ""
msgid "Steel Drum"
msgstr ""
msgid "Synth Lead"
msgstr ""
msgid "Synth Pad"
msgstr ""
msgid "Tambourine"
msgstr ""
msgid "tan"
msgstr ""
msgid "that way"
msgstr ""
msgid "think"
msgstr ""
msgid "this script"
msgstr ""
msgid "this way"
msgstr ""
msgid "Tips"
msgstr ""
msgid "To delete a block definition, first remove all uses of the block."
msgstr ""
msgid "top-left"
msgstr ""
msgid "top-right"
msgstr ""
msgid "Trombone"
msgstr ""
msgid "undo"
msgstr ""
msgid "up"
msgstr ""
msgid "up arrow"
msgstr ""
msgid "Vibraphone"
msgstr ""
msgid "Vibraslap"
msgstr ""
msgid "whirl"
msgstr ""
msgid "whisper"
msgstr ""
msgid "Wooden Flute"
msgstr ""
msgid "year"
msgstr ""

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more