mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-17 22:23:10 +03:00
Merge branch 'ide-1.5.x' into lib-1.5
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -13,7 +13,6 @@ hardware/arduino/bootloaders/caterina_LUFA/Caterina.lss
|
|||||||
hardware/arduino/bootloaders/caterina_LUFA/Caterina.elf
|
hardware/arduino/bootloaders/caterina_LUFA/Caterina.elf
|
||||||
hardware/arduino/bootloaders/caterina_LUFA/Caterina.eep
|
hardware/arduino/bootloaders/caterina_LUFA/Caterina.eep
|
||||||
hardware/arduino/bootloaders/caterina_LUFA/.dep/
|
hardware/arduino/bootloaders/caterina_LUFA/.dep/
|
||||||
.gitignore
|
|
||||||
build/windows/work/
|
build/windows/work/
|
||||||
build/linux/work/
|
build/linux/work/
|
||||||
build/linux/dist/*.tar.gz
|
build/linux/dist/*.tar.gz
|
||||||
|
@ -76,7 +76,7 @@
|
|||||||
<fileset dir="test" includes="**/*.txt" />
|
<fileset dir="test" includes="**/*.txt" />
|
||||||
</copy>
|
</copy>
|
||||||
|
|
||||||
<junit printsummary="yes" haltonfailure="yes">
|
<junit printsummary="yes">
|
||||||
<classpath>
|
<classpath>
|
||||||
<pathelement location="bin"/>
|
<pathelement location="bin"/>
|
||||||
<pathelement location="test-bin"/>
|
<pathelement location="test-bin"/>
|
||||||
|
@ -50,9 +50,9 @@ import static processing.app.I18n._;
|
|||||||
* files and images, etc) that comes from that.
|
* files and images, etc) that comes from that.
|
||||||
*/
|
*/
|
||||||
public class Base {
|
public class Base {
|
||||||
public static final int REVISION = 151;
|
public static final int REVISION = 152;
|
||||||
/** This might be replaced by main() if there's a lib/version.txt file. */
|
/** This might be replaced by main() if there's a lib/version.txt file. */
|
||||||
static String VERSION_NAME = "0151";
|
static String VERSION_NAME = "0152";
|
||||||
/** Set true if this a proper release rather than a numbered revision. */
|
/** Set true if this a proper release rather than a numbered revision. */
|
||||||
static public boolean RELEASE = false;
|
static public boolean RELEASE = false;
|
||||||
|
|
||||||
@ -111,8 +111,21 @@ public class Base {
|
|||||||
List<Editor> editors = Collections.synchronizedList(new ArrayList<Editor>());
|
List<Editor> editors = Collections.synchronizedList(new ArrayList<Editor>());
|
||||||
Editor activeEditor;
|
Editor activeEditor;
|
||||||
|
|
||||||
|
static File portableFolder = null;
|
||||||
|
static final String portableSketchbookFolder = "sketchbook";
|
||||||
|
|
||||||
|
|
||||||
static public void main(String args[]) throws Exception {
|
static public void main(String args[]) throws Exception {
|
||||||
|
initPlatform();
|
||||||
|
|
||||||
|
// Portable folder
|
||||||
|
portableFolder = getContentFile("portable");
|
||||||
|
if (!portableFolder.exists())
|
||||||
|
portableFolder = null;
|
||||||
|
|
||||||
|
// run static initialization that grabs all the prefs
|
||||||
|
Preferences.init(null);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
File versionFile = getContentFile("lib/version.txt");
|
File versionFile = getContentFile("lib/version.txt");
|
||||||
if (versionFile.exists()) {
|
if (versionFile.exists()) {
|
||||||
@ -151,8 +164,6 @@ public class Base {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
initPlatform();
|
|
||||||
|
|
||||||
// // Set the look and feel before opening the window
|
// // Set the look and feel before opening the window
|
||||||
// try {
|
// try {
|
||||||
// platform.setLookAndFeel();
|
// platform.setLookAndFeel();
|
||||||
@ -172,12 +183,6 @@ public class Base {
|
|||||||
// Make sure a full JDK is installed
|
// Make sure a full JDK is installed
|
||||||
//initRequirements();
|
//initRequirements();
|
||||||
|
|
||||||
// run static initialization that grabs all the prefs
|
|
||||||
Preferences.init(null);
|
|
||||||
|
|
||||||
// load the I18n module for internationalization
|
|
||||||
I18n.init(Preferences.get("editor.languages.current"));
|
|
||||||
|
|
||||||
// setup the theme coloring fun
|
// setup the theme coloring fun
|
||||||
Theme.init();
|
Theme.init();
|
||||||
|
|
||||||
@ -252,14 +257,18 @@ public class Base {
|
|||||||
// If a value is at least set, first check to see if the folder exists.
|
// If a value is at least set, first check to see if the folder exists.
|
||||||
// If it doesn't, warn the user that the sketchbook folder is being reset.
|
// If it doesn't, warn the user that the sketchbook folder is being reset.
|
||||||
if (sketchbookPath != null) {
|
if (sketchbookPath != null) {
|
||||||
File skechbookFolder = new File(sketchbookPath);
|
File sketchbookFolder;
|
||||||
if (!skechbookFolder.exists()) {
|
if (portableFolder != null)
|
||||||
|
sketchbookFolder = new File(portableFolder, sketchbookPath);
|
||||||
|
else
|
||||||
|
sketchbookFolder = new File(sketchbookPath);
|
||||||
|
if (!sketchbookFolder.exists()) {
|
||||||
Base.showWarning(_("Sketchbook folder disappeared"),
|
Base.showWarning(_("Sketchbook folder disappeared"),
|
||||||
_("The sketchbook folder no longer exists.\n" +
|
_("The sketchbook folder no longer exists.\n" +
|
||||||
"Arduino will switch to the default sketchbook\n" +
|
"Arduino will switch to the default sketchbook\n" +
|
||||||
"location, and create a new sketchbook folder if\n" +
|
"location, and create a new sketchbook folder if\n" +
|
||||||
"necessary. Arduino will then stop talking about\n" +
|
"necessary. Arduino will then stop talking about\n" +
|
||||||
"himself in the third person."), null);
|
"himself in the third person."), null);
|
||||||
sketchbookPath = null;
|
sketchbookPath = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -267,7 +276,10 @@ public class Base {
|
|||||||
// If no path is set, get the default sketchbook folder for this platform
|
// If no path is set, get the default sketchbook folder for this platform
|
||||||
if (sketchbookPath == null) {
|
if (sketchbookPath == null) {
|
||||||
File defaultFolder = getDefaultSketchbookFolder();
|
File defaultFolder = getDefaultSketchbookFolder();
|
||||||
Preferences.set("sketchbook.path", defaultFolder.getAbsolutePath());
|
if (portableFolder != null)
|
||||||
|
Preferences.set("sketchbook.path", portableSketchbookFolder);
|
||||||
|
else
|
||||||
|
Preferences.set("sketchbook.path", defaultFolder.getAbsolutePath());
|
||||||
if (!defaultFolder.exists()) {
|
if (!defaultFolder.exists()) {
|
||||||
defaultFolder.mkdirs();
|
defaultFolder.mkdirs();
|
||||||
}
|
}
|
||||||
@ -281,6 +293,8 @@ public class Base {
|
|||||||
|
|
||||||
boolean opened = false;
|
boolean opened = false;
|
||||||
boolean doUpload = false;
|
boolean doUpload = false;
|
||||||
|
boolean doVerify = false;
|
||||||
|
boolean doVerbose = false;
|
||||||
String selectBoard = null;
|
String selectBoard = null;
|
||||||
String selectPort = null;
|
String selectPort = null;
|
||||||
// Check if any files were passed in on the command line
|
// Check if any files were passed in on the command line
|
||||||
@ -289,6 +303,14 @@ public class Base {
|
|||||||
doUpload = true;
|
doUpload = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (args[i].equals("--verify")) {
|
||||||
|
doVerify = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (args[i].equals("--verbose") || args[i].equals("-v")) {
|
||||||
|
doVerbose = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (args[i].equals("--board")) {
|
if (args[i].equals("--board")) {
|
||||||
i++;
|
i++;
|
||||||
if (i < args.length)
|
if (i < args.length)
|
||||||
@ -319,16 +341,42 @@ public class Base {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doUpload) {
|
if (doUpload || doVerify) {
|
||||||
if (!opened)
|
if (!opened) {
|
||||||
throw new Exception(_("Can't open source sketch!"));
|
System.out.println(_("Can't open source sketch!"));
|
||||||
Thread.sleep(2000);
|
System.exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set verbosity for command line build
|
||||||
|
Preferences.set("build.verbose", "" + doVerbose);
|
||||||
|
Preferences.set("upload.verbose", "" + doVerbose);
|
||||||
|
|
||||||
Editor editor = editors.get(0);
|
Editor editor = editors.get(0);
|
||||||
if (selectPort != null)
|
|
||||||
editor.selectSerialPort(selectPort);
|
// Wait until editor is initialized
|
||||||
|
while (!editor.status.isInitialized())
|
||||||
|
Thread.sleep(10);
|
||||||
|
|
||||||
|
// Do board selection if requested
|
||||||
if (selectBoard != null)
|
if (selectBoard != null)
|
||||||
selectBoard(selectBoard, editor);
|
selectBoard(selectBoard, editor);
|
||||||
editor.exportHandler.run();
|
|
||||||
|
if (doUpload) {
|
||||||
|
// Build and upload
|
||||||
|
if (selectPort != null)
|
||||||
|
editor.selectSerialPort(selectPort);
|
||||||
|
editor.exportHandler.run();
|
||||||
|
} else {
|
||||||
|
// Build only
|
||||||
|
editor.runHandler.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Error during build or upload
|
||||||
|
int res = editor.status.mode;
|
||||||
|
if (res == EditorStatus.ERR)
|
||||||
|
System.exit(1);
|
||||||
|
|
||||||
|
// No errors exit gracefully
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -389,6 +437,14 @@ public class Base {
|
|||||||
int opened = 0;
|
int opened = 0;
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
String path = Preferences.get("last.sketch" + i + ".path");
|
String path = Preferences.get("last.sketch" + i + ".path");
|
||||||
|
if (portableFolder != null) {
|
||||||
|
File absolute = new File(portableFolder, path);
|
||||||
|
try {
|
||||||
|
path = absolute.getCanonicalPath();
|
||||||
|
} catch (IOException e) {
|
||||||
|
// path unchanged.
|
||||||
|
}
|
||||||
|
}
|
||||||
int[] location;
|
int[] location;
|
||||||
if (windowPositionValid) {
|
if (windowPositionValid) {
|
||||||
String locationStr = Preferences.get("last.sketch" + i + ".location");
|
String locationStr = Preferences.get("last.sketch" + i + ".location");
|
||||||
@ -427,6 +483,11 @@ public class Base {
|
|||||||
!editor.getSketch().isModified()) {
|
!editor.getSketch().isModified()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (portableFolder != null) {
|
||||||
|
path = FileUtils.relativePath(portableFolder.toString(), path);
|
||||||
|
if (path == null)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
Preferences.set("last.sketch" + index + ".path", path);
|
Preferences.set("last.sketch" + index + ".path", path);
|
||||||
|
|
||||||
int[] location = editor.getPlacement();
|
int[] location = editor.getPlacement();
|
||||||
@ -445,6 +506,11 @@ public class Base {
|
|||||||
String untitledPath = untitledFolder.getAbsolutePath();
|
String untitledPath = untitledFolder.getAbsolutePath();
|
||||||
if (path.startsWith(untitledPath)) {
|
if (path.startsWith(untitledPath)) {
|
||||||
path = "";
|
path = "";
|
||||||
|
} else
|
||||||
|
if (portableFolder != null) {
|
||||||
|
path = FileUtils.relativePath(portableFolder.toString(), path);
|
||||||
|
if (path == null)
|
||||||
|
path = "";
|
||||||
}
|
}
|
||||||
Preferences.set("last.sketch" + index + ".path", path);
|
Preferences.set("last.sketch" + index + ".path", path);
|
||||||
}
|
}
|
||||||
@ -973,6 +1039,8 @@ public class Base {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, File> getIDELibs() {
|
public Map<String, File> getIDELibs() {
|
||||||
|
if (libraries == null)
|
||||||
|
return new HashMap<String, File>();
|
||||||
Map<String, File> ideLibs = new HashMap<String, File>(libraries);
|
Map<String, File> ideLibs = new HashMap<String, File>(libraries);
|
||||||
for (String lib : libraries.keySet()) {
|
for (String lib : libraries.keySet()) {
|
||||||
if (FileUtils.isSubDirectory(getSketchbookFolder(), libraries.get(lib)))
|
if (FileUtils.isSubDirectory(getSketchbookFolder(), libraries.get(lib)))
|
||||||
@ -982,6 +1050,8 @@ public class Base {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, File> getUserLibs() {
|
public Map<String, File> getUserLibs() {
|
||||||
|
if (libraries == null)
|
||||||
|
return new HashMap<String, File>();
|
||||||
Map<String, File> userLibs = new HashMap<String, File>(libraries);
|
Map<String, File> userLibs = new HashMap<String, File>(libraries);
|
||||||
for (String lib : libraries.keySet()) {
|
for (String lib : libraries.keySet()) {
|
||||||
if (!FileUtils.isSubDirectory(getSketchbookFolder(), libraries.get(lib)))
|
if (!FileUtils.isSubDirectory(getSketchbookFolder(), libraries.get(lib)))
|
||||||
@ -1005,34 +1075,37 @@ public class Base {
|
|||||||
importMenu.add(addLibraryMenuItem);
|
importMenu.add(addLibraryMenuItem);
|
||||||
|
|
||||||
// Split between user supplied libraries and IDE libraries
|
// Split between user supplied libraries and IDE libraries
|
||||||
Map<String, File> ideLibs = getIDELibs();
|
TargetPlatform targetPlatform = getTargetPlatform();
|
||||||
Map<String, File> userLibs = getUserLibs();
|
if (targetPlatform != null) {
|
||||||
try {
|
Map<String, File> ideLibs = getIDELibs();
|
||||||
// Find the current target. Get the platform, and then select the
|
Map<String, File> userLibs = getUserLibs();
|
||||||
// correct name and core path.
|
try {
|
||||||
PreferencesMap prefs = getTargetPlatform().getPreferences();
|
// Find the current target. Get the platform, and then select the
|
||||||
String targetname = prefs.get("name");
|
// correct name and core path.
|
||||||
|
PreferencesMap prefs = targetPlatform.getPreferences();
|
||||||
|
String targetname = prefs.get("name");
|
||||||
|
|
||||||
if (false) {
|
if (false) {
|
||||||
// Hack to extract these words by gettext tool.
|
// Hack to extract these words by gettext tool.
|
||||||
// These phrases are actually defined in the "platform.txt".
|
// These phrases are actually defined in the "platform.txt".
|
||||||
String notused = _("Arduino AVR Boards");
|
String notused = _("Arduino AVR Boards");
|
||||||
notused = _("Arduino ARM (32-bits) Boards");
|
notused = _("Arduino ARM (32-bits) Boards");
|
||||||
}
|
}
|
||||||
|
|
||||||
JMenuItem platformItem = new JMenuItem(_(targetname));
|
JMenuItem platformItem = new JMenuItem(_(targetname));
|
||||||
platformItem.setEnabled(false);
|
platformItem.setEnabled(false);
|
||||||
importMenu.add(platformItem);
|
importMenu.add(platformItem);
|
||||||
if (ideLibs.size()>0) {
|
if (ideLibs.size() > 0) {
|
||||||
importMenu.addSeparator();
|
importMenu.addSeparator();
|
||||||
addLibraries(importMenu, ideLibs);
|
addLibraries(importMenu, ideLibs);
|
||||||
|
}
|
||||||
|
if (userLibs.size() > 0) {
|
||||||
|
importMenu.addSeparator();
|
||||||
|
addLibraries(importMenu, userLibs);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
if (userLibs.size()>0) {
|
|
||||||
importMenu.addSeparator();
|
|
||||||
addLibraries(importMenu, userLibs);
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1135,11 +1208,15 @@ public class Base {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onBoardOrPortChange() {
|
public void onBoardOrPortChange() {
|
||||||
|
TargetPlatform targetPlatform = getTargetPlatform();
|
||||||
|
if (targetPlatform == null)
|
||||||
|
return;
|
||||||
|
|
||||||
// Calculate paths for libraries and examples
|
// Calculate paths for libraries and examples
|
||||||
examplesFolder = getContentFile("examples");
|
examplesFolder = getContentFile("examples");
|
||||||
toolsFolder = getContentFile("tools");
|
toolsFolder = getContentFile("tools");
|
||||||
|
|
||||||
File platformFolder = getTargetPlatform().getFolder();
|
File platformFolder = targetPlatform.getFolder();
|
||||||
librariesFolders = new ArrayList<File>();
|
librariesFolders = new ArrayList<File>();
|
||||||
librariesFolders.add(getContentFile("libraries"));
|
librariesFolders.add(getContentFile("libraries"));
|
||||||
librariesFolders.add(new File(platformFolder, "libraries"));
|
librariesFolders.add(new File(platformFolder, "libraries"));
|
||||||
@ -1153,9 +1230,14 @@ public class Base {
|
|||||||
// Populate importToLibraryTable
|
// Populate importToLibraryTable
|
||||||
importToLibraryTable = new HashMap<String, File>();
|
importToLibraryTable = new HashMap<String, File>();
|
||||||
for (File subfolder : libraries.values()) {
|
for (File subfolder : libraries.values()) {
|
||||||
String packages[] = headerListFromIncludePath(subfolder);
|
try {
|
||||||
for (String pkg : packages)
|
String packages[] = headerListFromIncludePath(subfolder);
|
||||||
importToLibraryTable.put(pkg, subfolder);
|
for (String pkg : packages) {
|
||||||
|
importToLibraryTable.put(pkg, subfolder);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
showWarning(_("Error"), I18n.format("Unable to list header files in {0}", subfolder), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update editors status bar
|
// Update editors status bar
|
||||||
@ -1403,6 +1485,9 @@ public class Base {
|
|||||||
*/
|
*/
|
||||||
protected boolean addSketches(JMenu menu, File folder,
|
protected boolean addSketches(JMenu menu, File folder,
|
||||||
final boolean replaceExisting) throws IOException {
|
final boolean replaceExisting) throws IOException {
|
||||||
|
if (folder == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
// skip .DS_Store files, etc (this shouldn't actually be necessary)
|
// skip .DS_Store files, etc (this shouldn't actually be necessary)
|
||||||
if (!folder.isDirectory()) return false;
|
if (!folder.isDirectory()) return false;
|
||||||
|
|
||||||
@ -1501,8 +1586,13 @@ public class Base {
|
|||||||
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
|
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
|
||||||
|
|
||||||
ActionListener listener = new ActionListener() {
|
ActionListener listener = new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent event) {
|
||||||
activeEditor.getSketch().importLibrary(e.getActionCommand());
|
String jarPath = event.getActionCommand();
|
||||||
|
try {
|
||||||
|
activeEditor.getSketch().importLibrary(jarPath);
|
||||||
|
} catch (IOException e) {
|
||||||
|
showWarning(_("Error"), I18n.format("Unable to list header files in {0}", jarPath), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1524,8 +1614,12 @@ public class Base {
|
|||||||
* the header files in its sub-folders, as those should be included from
|
* the header files in its sub-folders, as those should be included from
|
||||||
* within the header files at the top-level).
|
* within the header files at the top-level).
|
||||||
*/
|
*/
|
||||||
static public String[] headerListFromIncludePath(File path) {
|
static public String[] headerListFromIncludePath(File path) throws IOException {
|
||||||
return path.list(new OnlyFilesWithExtension(".h"));
|
String[] list = path.list(new OnlyFilesWithExtension(".h"));
|
||||||
|
if (list == null) {
|
||||||
|
throw new IOException();
|
||||||
|
}
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void loadHardware(File folder) {
|
protected void loadHardware(File folder) {
|
||||||
@ -1698,6 +1792,9 @@ public class Base {
|
|||||||
|
|
||||||
|
|
||||||
static public File getSettingsFolder() {
|
static public File getSettingsFolder() {
|
||||||
|
if (portableFolder != null)
|
||||||
|
return portableFolder;
|
||||||
|
|
||||||
File settingsFolder = null;
|
File settingsFolder = null;
|
||||||
|
|
||||||
String preferencesPath = Preferences.get("settings.path");
|
String preferencesPath = Preferences.get("settings.path");
|
||||||
@ -1717,8 +1814,8 @@ public class Base {
|
|||||||
if (!settingsFolder.exists()) {
|
if (!settingsFolder.exists()) {
|
||||||
if (!settingsFolder.mkdirs()) {
|
if (!settingsFolder.mkdirs()) {
|
||||||
showError(_("Settings issues"),
|
showError(_("Settings issues"),
|
||||||
_("Arduino cannot run because it could not\n" +
|
_("Arduino cannot run because it could not\n" +
|
||||||
"create a folder to store your settings."), null);
|
"create a folder to store your settings."), null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return settingsFolder;
|
return settingsFolder;
|
||||||
@ -1849,7 +1946,10 @@ public class Base {
|
|||||||
*/
|
*/
|
||||||
static public TargetPlatform getTargetPlatform(String packageName,
|
static public TargetPlatform getTargetPlatform(String packageName,
|
||||||
String platformName) {
|
String platformName) {
|
||||||
return packages.get(packageName).get(platformName);
|
TargetPackage p = packages.get(packageName);
|
||||||
|
if (p == null)
|
||||||
|
return null;
|
||||||
|
return p.get(platformName);
|
||||||
}
|
}
|
||||||
|
|
||||||
static public TargetPlatform getCurrentTargetPlatformFromPackage(String pack) {
|
static public TargetPlatform getCurrentTargetPlatformFromPackage(String pack) {
|
||||||
@ -1874,7 +1974,19 @@ public class Base {
|
|||||||
return boardPreferences;
|
return boardPreferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static public File getPortableFolder() {
|
||||||
|
return portableFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static public String getPortableSketchbookFolder() {
|
||||||
|
return portableSketchbookFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static public File getSketchbookFolder() {
|
static public File getSketchbookFolder() {
|
||||||
|
if (portableFolder != null)
|
||||||
|
return new File(portableFolder, Preferences.get("sketchbook.path"));
|
||||||
return new File(Preferences.get("sketchbook.path"));
|
return new File(Preferences.get("sketchbook.path"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1907,6 +2019,9 @@ public class Base {
|
|||||||
|
|
||||||
|
|
||||||
protected File getDefaultSketchbookFolder() {
|
protected File getDefaultSketchbookFolder() {
|
||||||
|
if (portableFolder != null)
|
||||||
|
return new File(portableFolder, portableSketchbookFolder);
|
||||||
|
|
||||||
File sketchbookFolder = null;
|
File sketchbookFolder = null;
|
||||||
try {
|
try {
|
||||||
sketchbookFolder = platform.getDefaultSketchbookFolder();
|
sketchbookFolder = platform.getDefaultSketchbookFolder();
|
||||||
|
@ -508,12 +508,14 @@ public class Editor extends JFrame implements RunnerListener {
|
|||||||
|
|
||||||
if (sketchbookMenu == null) {
|
if (sketchbookMenu == null) {
|
||||||
sketchbookMenu = new JMenu(_("Sketchbook"));
|
sketchbookMenu = new JMenu(_("Sketchbook"));
|
||||||
|
MenuScroller.setScrollerFor(sketchbookMenu);
|
||||||
base.rebuildSketchbookMenu(sketchbookMenu);
|
base.rebuildSketchbookMenu(sketchbookMenu);
|
||||||
}
|
}
|
||||||
fileMenu.add(sketchbookMenu);
|
fileMenu.add(sketchbookMenu);
|
||||||
|
|
||||||
if (examplesMenu == null) {
|
if (examplesMenu == null) {
|
||||||
examplesMenu = new JMenu(_("Examples"));
|
examplesMenu = new JMenu(_("Examples"));
|
||||||
|
MenuScroller.setScrollerFor(examplesMenu);
|
||||||
base.rebuildExamplesMenu(examplesMenu);
|
base.rebuildExamplesMenu(examplesMenu);
|
||||||
}
|
}
|
||||||
fileMenu.add(examplesMenu);
|
fileMenu.add(examplesMenu);
|
||||||
@ -727,7 +729,10 @@ public class Editor extends JFrame implements RunnerListener {
|
|||||||
|
|
||||||
|
|
||||||
protected void addTools(JMenu menu, File sourceFolder) {
|
protected void addTools(JMenu menu, File sourceFolder) {
|
||||||
HashMap<String, JMenuItem> toolItems = new HashMap<String, JMenuItem>();
|
if (sourceFolder == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Map<String, JMenuItem> toolItems = new HashMap<String, JMenuItem>();
|
||||||
|
|
||||||
File[] folders = sourceFolder.listFiles(new FileFilter() {
|
File[] folders = sourceFolder.listFiles(new FileFilter() {
|
||||||
public boolean accept(File folder) {
|
public boolean accept(File folder) {
|
||||||
@ -956,6 +961,9 @@ public class Editor extends JFrame implements RunnerListener {
|
|||||||
serialMonitor.closeSerialPort();
|
serialMonitor.closeSerialPort();
|
||||||
serialMonitor.setVisible(false);
|
serialMonitor.setVisible(false);
|
||||||
serialMonitor = new SerialMonitor(Preferences.get("serial.port"));
|
serialMonitor = new SerialMonitor(Preferences.get("serial.port"));
|
||||||
|
|
||||||
|
onBoardOrPortChange();
|
||||||
|
|
||||||
//System.out.println("set to " + get("serial.port"));
|
//System.out.println("set to " + get("serial.port"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
package processing.app;
|
package processing.app;
|
||||||
|
import processing.app.tools.MenuScroller;
|
||||||
import static processing.app.I18n._;
|
import static processing.app.I18n._;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
@ -238,6 +239,7 @@ public class EditorHeader extends JComponent {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
menu = new JMenu();
|
menu = new JMenu();
|
||||||
|
MenuScroller.setScrollerFor(menu);
|
||||||
popup = menu.getPopupMenu();
|
popup = menu.getPopupMenu();
|
||||||
add(popup);
|
add(popup);
|
||||||
popup.setLightWeightPopupEnabled(true);
|
popup.setLightWeightPopupEnabled(true);
|
||||||
|
@ -72,6 +72,7 @@ public class EditorStatus extends JPanel /*implements ActionListener*/ {
|
|||||||
//Thread promptThread;
|
//Thread promptThread;
|
||||||
int response;
|
int response;
|
||||||
|
|
||||||
|
boolean initialized = false;
|
||||||
|
|
||||||
public EditorStatus(Editor editor) {
|
public EditorStatus(Editor editor) {
|
||||||
this.editor = editor;
|
this.editor = editor;
|
||||||
@ -237,7 +238,10 @@ public class EditorStatus extends JPanel /*implements ActionListener*/ {
|
|||||||
|
|
||||||
public void paintComponent(Graphics screen) {
|
public void paintComponent(Graphics screen) {
|
||||||
//if (screen == null) return;
|
//if (screen == null) return;
|
||||||
if (okButton == null) setup();
|
if (!initialized) {
|
||||||
|
setup();
|
||||||
|
initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
//System.out.println("status.paintComponent");
|
//System.out.println("status.paintComponent");
|
||||||
|
|
||||||
@ -290,8 +294,8 @@ public class EditorStatus extends JPanel /*implements ActionListener*/ {
|
|||||||
|
|
||||||
protected void setup() {
|
protected void setup() {
|
||||||
if (okButton == null) {
|
if (okButton == null) {
|
||||||
cancelButton = new JButton(Preferences.PROMPT_CANCEL);
|
cancelButton = new JButton(I18n.PROMPT_CANCEL);
|
||||||
okButton = new JButton(Preferences.PROMPT_OK);
|
okButton = new JButton(I18n.PROMPT_OK);
|
||||||
|
|
||||||
cancelButton.addActionListener(new ActionListener() {
|
cancelButton.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
@ -500,4 +504,8 @@ public class EditorStatus extends JPanel /*implements ActionListener*/ {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isInitialized() {
|
||||||
|
return initialized;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,15 +19,29 @@ import java.text.MessageFormat;
|
|||||||
|
|
||||||
public class I18n {
|
public class I18n {
|
||||||
// start using current locale but still allow using the dropdown list later
|
// start using current locale but still allow using the dropdown list later
|
||||||
private static ResourceBundle i18n = ResourceBundle.getBundle("processing.app.Resources");
|
private static ResourceBundle i18n;
|
||||||
public static Locale locale;
|
|
||||||
|
// prompt text stuff
|
||||||
|
|
||||||
|
static String PROMPT_YES;
|
||||||
|
static String PROMPT_NO;
|
||||||
|
static String PROMPT_CANCEL;
|
||||||
|
static String PROMPT_OK;
|
||||||
|
static String PROMPT_BROWSE;
|
||||||
|
|
||||||
static protected void init (String language) {
|
static protected void init (String language) {
|
||||||
// there might be a null pointer exception ... most likely will never happen but the jvm gets mad
|
// there might be a null pointer exception ... most likely will never happen but the jvm gets mad
|
||||||
try {
|
try {
|
||||||
if (language == null || language.trim().length() == 0) locale = Locale.getDefault();
|
if (language != null && language.trim().length() > 0) {
|
||||||
else locale = new Locale(language);
|
Locale.setDefault(new Locale(language));
|
||||||
i18n = ResourceBundle.getBundle("processing.app.Resources", locale);
|
}
|
||||||
|
i18n = ResourceBundle.getBundle("processing.app.Resources", Locale.getDefault());
|
||||||
|
|
||||||
|
PROMPT_YES = _("Yes");
|
||||||
|
PROMPT_NO = _("No");
|
||||||
|
PROMPT_CANCEL = _("Cancel");
|
||||||
|
PROMPT_OK = _("OK");
|
||||||
|
PROMPT_BROWSE = _("Browse");
|
||||||
} catch (java.lang.NullPointerException e) {
|
} catch (java.lang.NullPointerException e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,7 @@ import javax.swing.UIManager;
|
|||||||
|
|
||||||
import com.sun.jna.Library;
|
import com.sun.jna.Library;
|
||||||
import com.sun.jna.Native;
|
import com.sun.jna.Native;
|
||||||
|
import processing.core.PConstants;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -159,6 +160,10 @@ public class Platform {
|
|||||||
return clib.unsetenv(variable);
|
return clib.unsetenv(variable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return PConstants.platformNames[PConstants.OTHER];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
|
||||||
|
@ -23,16 +23,18 @@
|
|||||||
|
|
||||||
package processing.app;
|
package processing.app;
|
||||||
|
|
||||||
|
import processing.app.helpers.FileUtils;
|
||||||
|
import processing.app.syntax.SyntaxStyle;
|
||||||
|
import processing.core.PApplet;
|
||||||
|
import processing.core.PConstants;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.*;
|
import java.awt.event.*;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
|
|
||||||
import processing.app.helpers.PreferencesMap;
|
import processing.app.helpers.PreferencesMap;
|
||||||
import processing.app.syntax.*;
|
|
||||||
import processing.core.*;
|
|
||||||
import static processing.app.I18n._;
|
import static processing.app.I18n._;
|
||||||
|
|
||||||
|
|
||||||
@ -71,20 +73,14 @@ public class Preferences {
|
|||||||
|
|
||||||
static final String PREFS_FILE = "preferences.txt";
|
static final String PREFS_FILE = "preferences.txt";
|
||||||
|
|
||||||
|
|
||||||
// prompt text stuff
|
|
||||||
|
|
||||||
static final String PROMPT_YES = _("Yes");
|
|
||||||
static final String PROMPT_NO = _("No");
|
|
||||||
static final String PROMPT_CANCEL = _("Cancel");
|
|
||||||
static final String PROMPT_OK = _("OK");
|
|
||||||
static final String PROMPT_BROWSE = _("Browse");
|
|
||||||
|
|
||||||
String[] languages = {
|
String[] languages = {
|
||||||
_("System Default"),
|
_("System Default"),
|
||||||
"العربية" + " (" + _("Arabic") + ")",
|
"العربية" + " (" + _("Arabic") + ")",
|
||||||
"Aragonés" + " (" + _("Aragonese") + ")",
|
"Aragonés" + " (" + _("Aragonese") + ")",
|
||||||
|
"български" + " (" + _("Bulgarian") + ")",
|
||||||
"Català" + " (" + _("Catalan") + ")",
|
"Català" + " (" + _("Catalan") + ")",
|
||||||
|
"Hrvatski" + " (" + _("Croatian") + ")",
|
||||||
|
"český" + " (" + _("Czech") + ")",
|
||||||
"简体中文" + " (" + _("Chinese Simplified") + ")",
|
"简体中文" + " (" + _("Chinese Simplified") + ")",
|
||||||
"繁體中文" + " (" + _("Chinese Traditional") + ")",
|
"繁體中文" + " (" + _("Chinese Traditional") + ")",
|
||||||
"Dansk" + " (" + _("Danish") + ")",
|
"Dansk" + " (" + _("Danish") + ")",
|
||||||
@ -93,7 +89,10 @@ public class Preferences {
|
|||||||
"Eesti" + " (" + _("Estonian") + ")",
|
"Eesti" + " (" + _("Estonian") + ")",
|
||||||
"Pilipino" + " (" + _("Filipino") + ")",
|
"Pilipino" + " (" + _("Filipino") + ")",
|
||||||
"Français" + " (" + _("French") + ")",
|
"Français" + " (" + _("French") + ")",
|
||||||
|
"Canadienne-français" + " (" + _("Canadian French") + ")",
|
||||||
"Galego" + " (" + _("Galician") + ")",
|
"Galego" + " (" + _("Galician") + ")",
|
||||||
|
"საქართველოს" + " (" + _("Georgian") + ")",
|
||||||
|
"עברית" + " (" + _("Hebrew") + ")",
|
||||||
"Deutsch" + " (" + _("German") + ")",
|
"Deutsch" + " (" + _("German") + ")",
|
||||||
"ελληνικά" + " (" + _("Greek") + ")",
|
"ελληνικά" + " (" + _("Greek") + ")",
|
||||||
"Magyar" + " (" + _("Hindi") + ")",
|
"Magyar" + " (" + _("Hindi") + ")",
|
||||||
@ -104,8 +103,9 @@ public class Preferences {
|
|||||||
"한국어" + " (" + _("Korean") + ")",
|
"한국어" + " (" + _("Korean") + ")",
|
||||||
"Latviešu" + " (" + _("Latvian") + ")",
|
"Latviešu" + " (" + _("Latvian") + ")",
|
||||||
"Lietuvių Kalba" + " (" + _("Lithuaninan") + ")",
|
"Lietuvių Kalba" + " (" + _("Lithuaninan") + ")",
|
||||||
"मराठी" + " (" + _("Marathi") + ")",
|
"मराठी" + " (" + _("Marathi") + ")",
|
||||||
"Norsk" + " (" + _("Norwegian") + ")",
|
"Norsk" + " (" + _("Norwegian") + ")",
|
||||||
|
"Norsk bokmål" + " (" + _("Norwegian Bokmål") + ")",
|
||||||
"فارسی" + " (" + _("Persian") + ")",
|
"فارسی" + " (" + _("Persian") + ")",
|
||||||
"Język Polski" + " (" + _("Polish") + ")",
|
"Język Polski" + " (" + _("Polish") + ")",
|
||||||
"Português" + " (" + _("Portuguese") + " - Brazil)",
|
"Português" + " (" + _("Portuguese") + " - Brazil)",
|
||||||
@ -113,12 +113,18 @@ public class Preferences {
|
|||||||
"Română" + " (" + _("Romanian") + ")",
|
"Română" + " (" + _("Romanian") + ")",
|
||||||
"Русский" + " (" + _("Russian") + ")",
|
"Русский" + " (" + _("Russian") + ")",
|
||||||
"Español" + " (" + _("Spanish") + ")",
|
"Español" + " (" + _("Spanish") + ")",
|
||||||
"தமிழ்" + " (" + _("Tamil") + ")"};
|
"தமிழ்" + " (" + _("Tamil") + ")",
|
||||||
|
"Türk" + " (" + _("Turkish") + ")",
|
||||||
|
"Український" + " (" + _("Ukrainian") + ")"
|
||||||
|
};
|
||||||
String[] languagesISO = {
|
String[] languagesISO = {
|
||||||
"",
|
"",
|
||||||
"ar",
|
"ar",
|
||||||
"an",
|
"an",
|
||||||
|
"bg",
|
||||||
"ca",
|
"ca",
|
||||||
|
"hr_hr",
|
||||||
|
"cs_cz",
|
||||||
"zh_cn",
|
"zh_cn",
|
||||||
"zh_tw",
|
"zh_tw",
|
||||||
"da",
|
"da",
|
||||||
@ -127,7 +133,10 @@ public class Preferences {
|
|||||||
"et",
|
"et",
|
||||||
"tl",
|
"tl",
|
||||||
"fr",
|
"fr",
|
||||||
|
"fr_ca",
|
||||||
"gl",
|
"gl",
|
||||||
|
"ka_ge",
|
||||||
|
"he",
|
||||||
"de",
|
"de",
|
||||||
"el",
|
"el",
|
||||||
"hi",
|
"hi",
|
||||||
@ -140,6 +149,7 @@ public class Preferences {
|
|||||||
"lt",
|
"lt",
|
||||||
"mr",
|
"mr",
|
||||||
"no_nb",
|
"no_nb",
|
||||||
|
"nb_no",
|
||||||
"fa",
|
"fa",
|
||||||
"pl",
|
"pl",
|
||||||
"pt_br",
|
"pt_br",
|
||||||
@ -147,7 +157,10 @@ public class Preferences {
|
|||||||
"ro",
|
"ro",
|
||||||
"ru",
|
"ru",
|
||||||
"es",
|
"es",
|
||||||
"ta"};
|
"ta",
|
||||||
|
"tr",
|
||||||
|
"uk"
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standardized width for buttons. Mac OS X 10.3 wants 70 as its default,
|
* Standardized width for buttons. Mac OS X 10.3 wants 70 as its default,
|
||||||
@ -221,14 +234,13 @@ public class Preferences {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set some runtime constants (not saved on preferences file)
|
// set some runtime constants (not saved on preferences file)
|
||||||
table.put("runtime.os", PConstants.platformNames[PApplet.platform]);
|
|
||||||
File hardwareFolder = Base.getHardwareFolder();
|
File hardwareFolder = Base.getHardwareFolder();
|
||||||
table.put("runtime.hardware.path", hardwareFolder.getAbsolutePath());
|
table.put("runtime.hardware.path", hardwareFolder.getAbsolutePath());
|
||||||
table.put("runtime.ide.path", hardwareFolder.getParentFile().getAbsolutePath());
|
table.put("runtime.ide.path", hardwareFolder.getParentFile().getAbsolutePath());
|
||||||
table.put("runtime.ide.version", "" + Base.REVISION);
|
table.put("runtime.ide.version", "" + Base.REVISION);
|
||||||
|
|
||||||
// check for platform-specific properties in the defaults
|
// check for platform-specific properties in the defaults
|
||||||
String platformExt = "." + PConstants.platformNames[PApplet.platform];
|
String platformExt = "." + Base.platform.getName();
|
||||||
int platformExtLength = platformExt.length();
|
int platformExtLength = platformExt.length();
|
||||||
Enumeration e = table.keys();
|
Enumeration e = table.keys();
|
||||||
while (e.hasMoreElements()) {
|
while (e.hasMoreElements()) {
|
||||||
@ -244,9 +256,6 @@ public class Preferences {
|
|||||||
// clone the hash table
|
// clone the hash table
|
||||||
defaults = (Hashtable) table.clone();
|
defaults = (Hashtable) table.clone();
|
||||||
|
|
||||||
// other things that have to be set explicitly for the defaults
|
|
||||||
setColor("run.window.bgcolor", SystemColor.control);
|
|
||||||
|
|
||||||
// Load a prefs file if specified on the command line
|
// Load a prefs file if specified on the command line
|
||||||
if (commandLinePrefs != null) {
|
if (commandLinePrefs != null) {
|
||||||
try {
|
try {
|
||||||
@ -284,6 +293,15 @@ public class Preferences {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// load the I18n module for internationalization
|
||||||
|
I18n.init(Preferences.get("editor.languages.current"));
|
||||||
|
|
||||||
|
// set some other runtime constants (not saved on preferences file)
|
||||||
|
table.put("runtime.os", PConstants.platformNames[PApplet.platform]);
|
||||||
|
|
||||||
|
// other things that have to be set explicitly for the defaults
|
||||||
|
setColor("run.window.bgcolor", SystemColor.control);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -322,14 +340,21 @@ public class Preferences {
|
|||||||
pain.add(sketchbookLocationField);
|
pain.add(sketchbookLocationField);
|
||||||
d = sketchbookLocationField.getPreferredSize();
|
d = sketchbookLocationField.getPreferredSize();
|
||||||
|
|
||||||
button = new JButton(PROMPT_BROWSE);
|
button = new JButton(I18n.PROMPT_BROWSE);
|
||||||
button.addActionListener(new ActionListener() {
|
button.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
File dflt = new File(sketchbookLocationField.getText());
|
File dflt = new File(sketchbookLocationField.getText());
|
||||||
File file =
|
File file =
|
||||||
Base.selectFolder(_("Select new sketchbook location"), dflt, dialog);
|
Base.selectFolder(_("Select new sketchbook location"), dflt, dialog);
|
||||||
if (file != null) {
|
if (file != null) {
|
||||||
sketchbookLocationField.setText(file.getAbsolutePath());
|
String path = file.getAbsolutePath();
|
||||||
|
if (Base.getPortableFolder() != null) {
|
||||||
|
path = FileUtils.relativePath(Base.getPortableFolder().toString(), path);
|
||||||
|
if (path == null) {
|
||||||
|
path = Base.getPortableSketchbookFolder();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sketchbookLocationField.setText(path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -442,6 +467,10 @@ public class Preferences {
|
|||||||
autoAssociateBox.setBounds(left, top, d.width + 10, d.height);
|
autoAssociateBox.setBounds(left, top, d.width + 10, d.height);
|
||||||
right = Math.max(right, left + d.width);
|
right = Math.max(right, left + d.width);
|
||||||
top += d.height + GUI_BETWEEN;
|
top += d.height + GUI_BETWEEN;
|
||||||
|
|
||||||
|
// If using portable mode, it's bad manner to change PC setting.
|
||||||
|
if (Base.getPortableFolder() != null)
|
||||||
|
autoAssociateBox.setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// More preferences are in the ...
|
// More preferences are in the ...
|
||||||
@ -486,7 +515,7 @@ public class Preferences {
|
|||||||
|
|
||||||
// [ OK ] [ Cancel ] maybe these should be next to the message?
|
// [ OK ] [ Cancel ] maybe these should be next to the message?
|
||||||
|
|
||||||
button = new JButton(PROMPT_OK);
|
button = new JButton(I18n.PROMPT_OK);
|
||||||
button.addActionListener(new ActionListener() {
|
button.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
applyFrame();
|
applyFrame();
|
||||||
@ -501,7 +530,7 @@ public class Preferences {
|
|||||||
button.setBounds(h, top, BUTTON_WIDTH, BUTTON_HEIGHT);
|
button.setBounds(h, top, BUTTON_WIDTH, BUTTON_HEIGHT);
|
||||||
h += BUTTON_WIDTH + GUI_SMALL;
|
h += BUTTON_WIDTH + GUI_SMALL;
|
||||||
|
|
||||||
button = new JButton(PROMPT_CANCEL);
|
button = new JButton(I18n.PROMPT_CANCEL);
|
||||||
button.addActionListener(new ActionListener() {
|
button.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
disposeFrame();
|
disposeFrame();
|
||||||
@ -594,6 +623,12 @@ public class Preferences {
|
|||||||
// if the sketchbook path has changed, rebuild the menus
|
// if the sketchbook path has changed, rebuild the menus
|
||||||
String oldPath = get("sketchbook.path");
|
String oldPath = get("sketchbook.path");
|
||||||
String newPath = sketchbookLocationField.getText();
|
String newPath = sketchbookLocationField.getText();
|
||||||
|
if (newPath.isEmpty()) {
|
||||||
|
if (Base.getPortableFolder() == null)
|
||||||
|
newPath = editor.base.getDefaultSketchbookFolder().toString();
|
||||||
|
else
|
||||||
|
newPath = Base.getPortableSketchbookFolder();
|
||||||
|
}
|
||||||
if (!newPath.equals(oldPath)) {
|
if (!newPath.equals(oldPath)) {
|
||||||
editor.base.rebuildSketchbookMenus();
|
editor.base.rebuildSketchbookMenus();
|
||||||
set("sketchbook.path", newPath);
|
set("sketchbook.path", newPath);
|
||||||
@ -683,7 +718,7 @@ public class Preferences {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static public void load(InputStream input, Map table) throws IOException {
|
static public void load(InputStream input, Map table) throws IOException {
|
||||||
String[] lines = PApplet.loadStrings(input); // Reads as UTF-8
|
String[] lines = loadStrings(input); // Reads as UTF-8
|
||||||
for (String line : lines) {
|
for (String line : lines) {
|
||||||
if ((line.length() == 0) ||
|
if ((line.length() == 0) ||
|
||||||
(line.charAt(0) == '#')) continue;
|
(line.charAt(0) == '#')) continue;
|
||||||
@ -698,6 +733,41 @@ public class Preferences {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static public String[] loadStrings(InputStream input) {
|
||||||
|
try {
|
||||||
|
BufferedReader reader =
|
||||||
|
new BufferedReader(new InputStreamReader(input, "UTF-8"));
|
||||||
|
|
||||||
|
String lines[] = new String[100];
|
||||||
|
int lineCount = 0;
|
||||||
|
String line = null;
|
||||||
|
while ((line = reader.readLine()) != null) {
|
||||||
|
if (lineCount == lines.length) {
|
||||||
|
String temp[] = new String[lineCount << 1];
|
||||||
|
System.arraycopy(lines, 0, temp, 0, lineCount);
|
||||||
|
lines = temp;
|
||||||
|
}
|
||||||
|
lines[lineCount++] = line;
|
||||||
|
}
|
||||||
|
reader.close();
|
||||||
|
|
||||||
|
if (lineCount == lines.length) {
|
||||||
|
return lines;
|
||||||
|
}
|
||||||
|
|
||||||
|
// resize array to appropriate amount for these lines
|
||||||
|
String output[] = new String[lineCount];
|
||||||
|
System.arraycopy(lines, 0, output, 0, lineCount);
|
||||||
|
return output;
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
//throw new RuntimeException("Error inside loadStrings()");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// .................................................................
|
// .................................................................
|
||||||
|
|
||||||
@ -712,9 +782,9 @@ public class Preferences {
|
|||||||
// Fix for 0163 to properly use Unicode when writing preferences.txt
|
// Fix for 0163 to properly use Unicode when writing preferences.txt
|
||||||
PrintWriter writer = PApplet.createWriter(preferencesFile);
|
PrintWriter writer = PApplet.createWriter(preferencesFile);
|
||||||
|
|
||||||
Enumeration e = table.keys(); //properties.propertyNames();
|
String[] keys = (String[])table.keySet().toArray(new String[0]);
|
||||||
while (e.hasMoreElements()) {
|
Arrays.sort(keys);
|
||||||
String key = (String) e.nextElement();
|
for (String key: keys) {
|
||||||
if (key.startsWith("runtime."))
|
if (key.startsWith("runtime."))
|
||||||
continue;
|
continue;
|
||||||
writer.println(key + "=" + ((String) table.get(key)));
|
writer.println(key + "=" + ((String) table.get(key)));
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1579
app/src/processing/app/Resources_bg.po
Normal file
1579
app/src/processing/app/Resources_bg.po
Normal file
File diff suppressed because it is too large
Load Diff
1080
app/src/processing/app/Resources_bg.properties
Normal file
1080
app/src/processing/app/Resources_bg.properties
Normal file
File diff suppressed because it is too large
Load Diff
1581
app/src/processing/app/Resources_cs_cz.po
Normal file
1581
app/src/processing/app/Resources_cs_cz.po
Normal file
File diff suppressed because it is too large
Load Diff
1082
app/src/processing/app/Resources_cs_cz.properties
Normal file
1082
app/src/processing/app/Resources_cs_cz.properties
Normal file
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
1579
app/src/processing/app/Resources_fr_ca.po
Normal file
1579
app/src/processing/app/Resources_fr_ca.po
Normal file
File diff suppressed because it is too large
Load Diff
1080
app/src/processing/app/Resources_fr_ca.properties
Normal file
1080
app/src/processing/app/Resources_fr_ca.properties
Normal file
File diff suppressed because it is too large
Load Diff
1579
app/src/processing/app/Resources_hr_hr.po
Normal file
1579
app/src/processing/app/Resources_hr_hr.po
Normal file
File diff suppressed because it is too large
Load Diff
1080
app/src/processing/app/Resources_hr_hr.properties
Normal file
1080
app/src/processing/app/Resources_hr_hr.properties
Normal file
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
1580
app/src/processing/app/Resources_iw.po
Normal file
1580
app/src/processing/app/Resources_iw.po
Normal file
File diff suppressed because it is too large
Load Diff
1081
app/src/processing/app/Resources_iw.properties
Normal file
1081
app/src/processing/app/Resources_iw.properties
Normal file
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
1579
app/src/processing/app/Resources_ka_ge.po
Normal file
1579
app/src/processing/app/Resources_ka_ge.po
Normal file
File diff suppressed because it is too large
Load Diff
1080
app/src/processing/app/Resources_ka_ge.properties
Normal file
1080
app/src/processing/app/Resources_ka_ge.properties
Normal file
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
1579
app/src/processing/app/Resources_nb_no.po
Normal file
1579
app/src/processing/app/Resources_nb_no.po
Normal file
File diff suppressed because it is too large
Load Diff
1080
app/src/processing/app/Resources_nb_no.properties
Normal file
1080
app/src/processing/app/Resources_nb_no.properties
Normal file
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
1582
app/src/processing/app/Resources_tr.po
Normal file
1582
app/src/processing/app/Resources_tr.po
Normal file
File diff suppressed because it is too large
Load Diff
1083
app/src/processing/app/Resources_tr.properties
Normal file
1083
app/src/processing/app/Resources_tr.properties
Normal file
File diff suppressed because it is too large
Load Diff
1578
app/src/processing/app/Resources_uk.po
Normal file
1578
app/src/processing/app/Resources_uk.po
Normal file
File diff suppressed because it is too large
Load Diff
1079
app/src/processing/app/Resources_uk.properties
Normal file
1079
app/src/processing/app/Resources_uk.properties
Normal file
File diff suppressed because it is too large
Load Diff
@ -612,7 +612,7 @@ public class Sketch {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
// delete the file
|
// delete the file
|
||||||
if (!current.deleteFile()) {
|
if (!current.deleteFile(tempBuildFolder)) {
|
||||||
Base.showMessage(_("Couldn't do it"),
|
Base.showMessage(_("Couldn't do it"),
|
||||||
I18n.format(_("Could not delete \"{0}\"."), current.getFileName()));
|
I18n.format(_("Could not delete \"{0}\"."), current.getFileName()));
|
||||||
return;
|
return;
|
||||||
@ -826,7 +826,7 @@ public class Sketch {
|
|||||||
FileDialog.SAVE);
|
FileDialog.SAVE);
|
||||||
if (isReadOnly() || isUntitled()) {
|
if (isReadOnly() || isUntitled()) {
|
||||||
// default to the sketchbook folder
|
// default to the sketchbook folder
|
||||||
fd.setDirectory(Preferences.get("sketchbook.path"));
|
fd.setDirectory(Base.getSketchbookFolder().getAbsolutePath());
|
||||||
} else {
|
} else {
|
||||||
// default to the parent folder of where this was
|
// default to the parent folder of where this was
|
||||||
fd.setDirectory(folder.getParent());
|
fd.setDirectory(folder.getParent());
|
||||||
@ -1124,7 +1124,7 @@ public class Sketch {
|
|||||||
* Add import statements to the current tab for all of packages inside
|
* Add import statements to the current tab for all of packages inside
|
||||||
* the specified jar file.
|
* the specified jar file.
|
||||||
*/
|
*/
|
||||||
public void importLibrary(String jarPath) {
|
public void importLibrary(String jarPath) throws IOException {
|
||||||
// make sure the user didn't hide the sketch folder
|
// make sure the user didn't hide the sketch folder
|
||||||
ensureExistence();
|
ensureExistence();
|
||||||
|
|
||||||
@ -1339,7 +1339,6 @@ public class Sketch {
|
|||||||
// make sure the user didn't hide the sketch folder
|
// make sure the user didn't hide the sketch folder
|
||||||
ensureExistence();
|
ensureExistence();
|
||||||
|
|
||||||
String[] codeFolderPackages = null;
|
|
||||||
classPath = buildPath;
|
classPath = buildPath;
|
||||||
|
|
||||||
// // figure out the contents of the code folder to see if there
|
// // figure out the contents of the code folder to see if there
|
||||||
@ -1381,12 +1380,8 @@ public class Sketch {
|
|||||||
// Note that the headerOffset isn't applied until compile and run, because
|
// Note that the headerOffset isn't applied until compile and run, because
|
||||||
// it only applies to the code after it's been written to the .java file.
|
// it only applies to the code after it's been written to the .java file.
|
||||||
int headerOffset = 0;
|
int headerOffset = 0;
|
||||||
//PdePreprocessor preprocessor = new PdePreprocessor();
|
|
||||||
try {
|
try {
|
||||||
headerOffset = preprocessor.writePrefix(bigCode.toString(),
|
headerOffset = preprocessor.writePrefix(bigCode.toString());
|
||||||
buildPath,
|
|
||||||
name,
|
|
||||||
codeFolderPackages);
|
|
||||||
} catch (FileNotFoundException fnfe) {
|
} catch (FileNotFoundException fnfe) {
|
||||||
fnfe.printStackTrace();
|
fnfe.printStackTrace();
|
||||||
String msg = _("Build folder disappeared or could not be written");
|
String msg = _("Build folder disappeared or could not be written");
|
||||||
@ -1399,24 +1394,14 @@ public class Sketch {
|
|||||||
String primaryClassName = null;
|
String primaryClassName = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// if (i != 0) preproc will fail if a pde file is not
|
// Output file
|
||||||
// java mode, since that's required
|
File streamFile = new File(buildPath, name + ".cpp");
|
||||||
String className = preprocessor.write();
|
FileOutputStream outputStream = new FileOutputStream(streamFile);
|
||||||
|
preprocessor.write(outputStream);
|
||||||
if (className == null) {
|
outputStream.close();
|
||||||
throw new RunnerException(_("Could not find main class"));
|
|
||||||
// this situation might be perfectly fine,
|
|
||||||
// (i.e. if the file is empty)
|
|
||||||
//System.out.println("No class found in " + code[i].name);
|
|
||||||
//System.out.println("(any code in that file will be ignored)");
|
|
||||||
//System.out.println();
|
|
||||||
|
|
||||||
// } else {
|
|
||||||
// code[0].setPreprocName(className + ".java");
|
|
||||||
}
|
|
||||||
|
|
||||||
// store this for the compiler and the runtime
|
// store this for the compiler and the runtime
|
||||||
primaryClassName = className + ".cpp";
|
primaryClassName = name + ".cpp";
|
||||||
|
|
||||||
} catch (FileNotFoundException fnfe) {
|
} catch (FileNotFoundException fnfe) {
|
||||||
fnfe.printStackTrace();
|
fnfe.printStackTrace();
|
||||||
@ -1641,8 +1626,8 @@ public class Sketch {
|
|||||||
try {
|
try {
|
||||||
size = sizer.computeSize();
|
size = sizer.computeSize();
|
||||||
System.out.println(I18n
|
System.out.println(I18n
|
||||||
.format(_("Binary sketch size: {0} bytes (of a {1} byte maximum)"),
|
.format(_("Binary sketch size: {0} bytes (of a {1} byte maximum) - {2}% used"),
|
||||||
size, maxsize));
|
size, maxsize, size * 100 / maxsize));
|
||||||
} catch (RunnerException e) {
|
} catch (RunnerException e) {
|
||||||
System.err.println(I18n.format(_("Couldn't determine program size: {0}"),
|
System.err.println(I18n.format(_("Couldn't determine program size: {0}"),
|
||||||
e.getMessage()));
|
e.getMessage()));
|
||||||
@ -1668,57 +1653,6 @@ public class Sketch {
|
|||||||
return success ? suggestedClassName : null;
|
return success ? suggestedClassName : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Replace all commented portions of a given String as spaces.
|
|
||||||
* Utility function used here and in the preprocessor.
|
|
||||||
*/
|
|
||||||
static public String scrubComments(String what) {
|
|
||||||
char p[] = what.toCharArray();
|
|
||||||
|
|
||||||
int index = 0;
|
|
||||||
while (index < p.length) {
|
|
||||||
// for any double slash comments, ignore until the end of the line
|
|
||||||
if ((p[index] == '/') &&
|
|
||||||
(index < p.length - 1) &&
|
|
||||||
(p[index+1] == '/')) {
|
|
||||||
p[index++] = ' ';
|
|
||||||
p[index++] = ' ';
|
|
||||||
while ((index < p.length) &&
|
|
||||||
(p[index] != '\n')) {
|
|
||||||
p[index++] = ' ';
|
|
||||||
}
|
|
||||||
|
|
||||||
// check to see if this is the start of a new multiline comment.
|
|
||||||
// if it is, then make sure it's actually terminated somewhere.
|
|
||||||
} else if ((p[index] == '/') &&
|
|
||||||
(index < p.length - 1) &&
|
|
||||||
(p[index+1] == '*')) {
|
|
||||||
p[index++] = ' ';
|
|
||||||
p[index++] = ' ';
|
|
||||||
boolean endOfRainbow = false;
|
|
||||||
while (index < p.length - 1) {
|
|
||||||
if ((p[index] == '*') && (p[index+1] == '/')) {
|
|
||||||
p[index++] = ' ';
|
|
||||||
p[index++] = ' ';
|
|
||||||
endOfRainbow = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// continue blanking this area
|
|
||||||
p[index++] = ' ';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!endOfRainbow) {
|
|
||||||
throw new RuntimeException(_("Missing the */ from the end of a " +
|
|
||||||
"/* comment */"));
|
|
||||||
}
|
|
||||||
} else { // any old character, move along
|
|
||||||
index++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new String(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public boolean exportApplicationPrompt() throws IOException, RunnerException {
|
public boolean exportApplicationPrompt() throws IOException, RunnerException {
|
||||||
return false;
|
return false;
|
||||||
|
@ -107,8 +107,21 @@ public class SketchCode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected boolean deleteFile() {
|
protected boolean deleteFile(File tempBuildFolder) {
|
||||||
return file.delete();
|
if (!file.delete()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
File[] compiledFiles = tempBuildFolder.listFiles(new FileFilter() {
|
||||||
|
public boolean accept(File pathname) {
|
||||||
|
return pathname.getName().startsWith(getFileName());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
for (File compiledFile : compiledFiles) {
|
||||||
|
compiledFile.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,7 +41,6 @@ public class TargetPlatform {
|
|||||||
private MapWithSubkeys customMenus;
|
private MapWithSubkeys customMenus;
|
||||||
|
|
||||||
public TargetPlatform(String _name, File _folder) {
|
public TargetPlatform(String _name, File _folder) {
|
||||||
System.out.println("TargetPlatform: constructor start, name: " + _name);
|
|
||||||
name = _name;
|
name = _name;
|
||||||
folder = _folder;
|
folder = _folder;
|
||||||
boards = new HashMap<String, PreferencesMap>();
|
boards = new HashMap<String, PreferencesMap>();
|
||||||
|
@ -90,4 +90,68 @@ public class FileUtils {
|
|||||||
return tmpFolder;
|
return tmpFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Compute relative path to "target" from a directory "origin".
|
||||||
|
//
|
||||||
|
// If "origin" is not absolute, it is relative from the current directory.
|
||||||
|
// If "target" is not absolute, it is relative from "origin".
|
||||||
|
//
|
||||||
|
// by Shigeru KANEMOTO at SWITCHSCIENCE.
|
||||||
|
//
|
||||||
|
public static String relativePath(String origin, String target) {
|
||||||
|
try {
|
||||||
|
origin = (new File(origin)).getCanonicalPath();
|
||||||
|
File targetFile = new File(target);
|
||||||
|
if (targetFile.isAbsolute())
|
||||||
|
target = targetFile.getCanonicalPath();
|
||||||
|
else
|
||||||
|
target = (new File(origin, target)).getCanonicalPath();
|
||||||
|
} catch (IOException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (origin.equals(target)) {
|
||||||
|
// origin and target is identical.
|
||||||
|
return ".";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (origin.equals(File.separator)) {
|
||||||
|
// origin is root.
|
||||||
|
return "." + target;
|
||||||
|
}
|
||||||
|
|
||||||
|
String prefix = "";
|
||||||
|
String root = File.separator;
|
||||||
|
|
||||||
|
if (System.getProperty("os.name").indexOf("Windows") != -1) {
|
||||||
|
if (origin.startsWith("\\\\") || target.startsWith("\\\\")) {
|
||||||
|
// Windows UNC path not supported.
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
char originLetter = origin.charAt(0);
|
||||||
|
char targetLetter = target.charAt(0);
|
||||||
|
if (Character.isLetter(originLetter) && Character.isLetter(targetLetter)) {
|
||||||
|
// Windows only
|
||||||
|
if (originLetter != targetLetter) {
|
||||||
|
// Drive letters differ
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
prefix = "" + originLetter + ':';
|
||||||
|
root = prefix + File.separator;
|
||||||
|
}
|
||||||
|
|
||||||
|
String relative = "";
|
||||||
|
while (!target.startsWith(origin + File.separator)) {
|
||||||
|
origin = (new File(origin)).getParent();
|
||||||
|
if (origin.equals(root))
|
||||||
|
origin = prefix;
|
||||||
|
relative += "..";
|
||||||
|
relative += File.separator;
|
||||||
|
}
|
||||||
|
|
||||||
|
return relative + target.substring(origin.length() + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ import java.io.File;
|
|||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
|
|
||||||
import processing.app.Preferences;
|
import processing.app.Preferences;
|
||||||
|
import processing.core.PConstants;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,6 +53,12 @@ public class Platform extends processing.app.Platform {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public File getDefaultSketchbookFolder() throws Exception {
|
||||||
|
File home = new File(System.getProperty("user.home"));
|
||||||
|
return new File(home, "Arduino");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void openURL(String url) throws Exception {
|
public void openURL(String url) throws Exception {
|
||||||
if (openFolderAvailable()) {
|
if (openFolderAvailable()) {
|
||||||
String launcher = Preferences.get("launcher");
|
String launcher = Preferences.get("launcher");
|
||||||
@ -112,4 +119,9 @@ public class Platform extends processing.app.Platform {
|
|||||||
file.getAbsolutePath());
|
file.getAbsolutePath());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return PConstants.platformNames[PConstants.LINUX];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ import com.apple.eio.FileManager;
|
|||||||
|
|
||||||
import processing.app.Base;
|
import processing.app.Base;
|
||||||
import processing.core.PApplet;
|
import processing.core.PApplet;
|
||||||
|
import processing.core.PConstants;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -195,4 +196,10 @@ public class Platform extends processing.app.Platform {
|
|||||||
protected String getDocumentsFolder() throws FileNotFoundException {
|
protected String getDocumentsFolder() throws FileNotFoundException {
|
||||||
return FileManager.findFolder(kUserDomain, kDocumentsFolderType);
|
return FileManager.findFolder(kUserDomain, kDocumentsFolderType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return PConstants.platformNames[PConstants.MACOSX];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
package processing.app.preproc;
|
package processing.app.preproc;
|
||||||
|
|
||||||
|
import static processing.app.I18n._;
|
||||||
import processing.app.*;
|
import processing.app.*;
|
||||||
import processing.core.*;
|
import processing.core.*;
|
||||||
|
|
||||||
@ -61,38 +62,22 @@ public class PdePreprocessor {
|
|||||||
// than the others, since the imports are auto-generated.
|
// than the others, since the imports are auto-generated.
|
||||||
List<String> codeFolderImports;
|
List<String> codeFolderImports;
|
||||||
|
|
||||||
String indent;
|
|
||||||
|
|
||||||
PrintStream stream;
|
|
||||||
String program;
|
String program;
|
||||||
String buildPath;
|
|
||||||
// starts as sketch name, ends as main class name
|
|
||||||
String name;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup a new preprocessor.
|
* Setup a new preprocessor.
|
||||||
*/
|
*/
|
||||||
public PdePreprocessor() {
|
public PdePreprocessor() {
|
||||||
int tabSize = Preferences.getInteger("editor.tabs.size");
|
|
||||||
char[] indentChars = new char[tabSize];
|
|
||||||
Arrays.fill(indentChars, ' ');
|
|
||||||
indent = new String(indentChars);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes out the head of the c++ code generated for a sketch.
|
* Writes out the head of the c++ code generated for a sketch.
|
||||||
* Called from processing.app.Sketch.
|
* Called from processing.app.Sketch.
|
||||||
* @param program the concatenated code from all tabs containing pde-files
|
* @param program the concatenated code from all tabs containing pde-files
|
||||||
* @param buildPath the path into which the processed pde-code is to be written
|
|
||||||
* @param name the name of the sketch
|
|
||||||
* @param codeFolderPackages unused param (leftover from processing)
|
|
||||||
*/
|
*/
|
||||||
public int writePrefix(String program, String buildPath,
|
public int writePrefix(String program)
|
||||||
String sketchName, String codeFolderPackages[]) throws FileNotFoundException {
|
throws FileNotFoundException {
|
||||||
this.buildPath = buildPath;
|
|
||||||
this.name = sketchName;
|
|
||||||
|
|
||||||
// if the program ends with no CR or LF an OutOfMemoryError will happen.
|
// if the program ends with no CR or LF an OutOfMemoryError will happen.
|
||||||
// not gonna track down the bug now, so here's a hack for it:
|
// not gonna track down the bug now, so here's a hack for it:
|
||||||
// http://dev.processing.org/bugs/show_bug.cgi?id=5
|
// http://dev.processing.org/bugs/show_bug.cgi?id=5
|
||||||
@ -102,7 +87,7 @@ public class PdePreprocessor {
|
|||||||
// an OutOfMemoryError or NullPointerException will happen.
|
// an OutOfMemoryError or NullPointerException will happen.
|
||||||
// again, not gonna bother tracking this down, but here's a hack.
|
// again, not gonna bother tracking this down, but here's a hack.
|
||||||
// http://dev.processing.org/bugs/show_bug.cgi?id=16
|
// http://dev.processing.org/bugs/show_bug.cgi?id=16
|
||||||
Sketch.scrubComments(program);
|
scrubComments(program);
|
||||||
// If there are errors, an exception is thrown and this fxn exits.
|
// If there are errors, an exception is thrown and this fxn exits.
|
||||||
|
|
||||||
if (Preferences.getBoolean("preproc.substitute_unicode")) {
|
if (Preferences.getBoolean("preproc.substitute_unicode")) {
|
||||||
@ -134,10 +119,6 @@ public class PdePreprocessor {
|
|||||||
// do this after the program gets re-combobulated
|
// do this after the program gets re-combobulated
|
||||||
this.program = program;
|
this.program = program;
|
||||||
|
|
||||||
// output the code
|
|
||||||
File streamFile = new File(buildPath, name + ".cpp");
|
|
||||||
stream = new PrintStream(new FileOutputStream(streamFile));
|
|
||||||
|
|
||||||
return headerCount + prototypeCount;
|
return headerCount + prototypeCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,17 +162,16 @@ public class PdePreprocessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* preprocesses a pde file and writes out a java file
|
* preprocesses a pde file and writes out a cpp file into the specified
|
||||||
* @return the classname of the exported Java
|
* OutputStream
|
||||||
|
*
|
||||||
|
* @param output
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
//public String write(String program, String buildPath, String name,
|
public void write(OutputStream output) throws Exception {
|
||||||
// String extraImports[]) throws java.lang.Exception {
|
PrintStream stream = new PrintStream(output);
|
||||||
public String write() throws java.lang.Exception {
|
|
||||||
writeProgram(stream, program, prototypes);
|
writeProgram(stream, program, prototypes);
|
||||||
writeFooter(stream);
|
writeFooter(stream);
|
||||||
stream.close();
|
|
||||||
|
|
||||||
return name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write the pde program to the cpp file
|
// Write the pde program to the cpp file
|
||||||
@ -344,4 +324,56 @@ public class PdePreprocessor {
|
|||||||
|
|
||||||
return functionMatches;
|
return functionMatches;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace all commented portions of a given String as spaces.
|
||||||
|
* Utility function used here and in the preprocessor.
|
||||||
|
*/
|
||||||
|
static public String scrubComments(String what) {
|
||||||
|
char p[] = what.toCharArray();
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
while (index < p.length) {
|
||||||
|
// for any double slash comments, ignore until the end of the line
|
||||||
|
if ((p[index] == '/') &&
|
||||||
|
(index < p.length - 1) &&
|
||||||
|
(p[index+1] == '/')) {
|
||||||
|
p[index++] = ' ';
|
||||||
|
p[index++] = ' ';
|
||||||
|
while ((index < p.length) &&
|
||||||
|
(p[index] != '\n')) {
|
||||||
|
p[index++] = ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
// check to see if this is the start of a new multiline comment.
|
||||||
|
// if it is, then make sure it's actually terminated somewhere.
|
||||||
|
} else if ((p[index] == '/') &&
|
||||||
|
(index < p.length - 1) &&
|
||||||
|
(p[index+1] == '*')) {
|
||||||
|
p[index++] = ' ';
|
||||||
|
p[index++] = ' ';
|
||||||
|
boolean endOfRainbow = false;
|
||||||
|
while (index < p.length - 1) {
|
||||||
|
if ((p[index] == '*') && (p[index+1] == '/')) {
|
||||||
|
p[index++] = ' ';
|
||||||
|
p[index++] = ' ';
|
||||||
|
endOfRainbow = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// continue blanking this area
|
||||||
|
p[index++] = ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!endOfRainbow) {
|
||||||
|
throw new RuntimeException(_("Missing the */ from the end of a " +
|
||||||
|
"/* comment */"));
|
||||||
|
}
|
||||||
|
} else { // any old character, move along
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new String(p);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
633
app/src/processing/app/tools/MenuScroller.java
Normal file
633
app/src/processing/app/tools/MenuScroller.java
Normal file
@ -0,0 +1,633 @@
|
|||||||
|
/**
|
||||||
|
* @(#)MenuScroller.java 1.5.0 04/02/12
|
||||||
|
*/
|
||||||
|
package processing.app.tools;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Graphics;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import javax.swing.Icon;
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JMenu;
|
||||||
|
import javax.swing.JMenuItem;
|
||||||
|
import javax.swing.JPopupMenu;
|
||||||
|
import javax.swing.MenuSelectionManager;
|
||||||
|
import javax.swing.Timer;
|
||||||
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
|
import javax.swing.event.PopupMenuEvent;
|
||||||
|
import javax.swing.event.PopupMenuListener;
|
||||||
|
import javax.swing.plaf.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class that provides scrolling capabilities to a long menu dropdown or
|
||||||
|
* popup menu. A number of items can optionally be frozen at the top and/or
|
||||||
|
* bottom of the menu.
|
||||||
|
* <P>
|
||||||
|
* <B>Implementation note:</B> The default number of items to display
|
||||||
|
* at a time is 15, and the default scrolling interval is 125 milliseconds.
|
||||||
|
* <P>
|
||||||
|
*
|
||||||
|
* @version 1.5.0 04/05/12
|
||||||
|
* @author Darryl
|
||||||
|
*/
|
||||||
|
public class MenuScroller {
|
||||||
|
|
||||||
|
//private JMenu menu;
|
||||||
|
private JPopupMenu menu;
|
||||||
|
private Component[] menuItems;
|
||||||
|
private MenuScrollItem upItem;
|
||||||
|
private MenuScrollItem downItem;
|
||||||
|
private final MenuScrollListener menuListener = new MenuScrollListener();
|
||||||
|
private int scrollCount;
|
||||||
|
private int interval;
|
||||||
|
private int topFixedCount;
|
||||||
|
private int bottomFixedCount;
|
||||||
|
private int firstIndex = 0;
|
||||||
|
private int keepVisibleIndex = -1;
|
||||||
|
|
||||||
|
private static int getMaximumItems(JPopupMenu menu) {
|
||||||
|
JMenuItem test = new JMenuItem("test");
|
||||||
|
ButtonUI ui = test.getUI();
|
||||||
|
Dimension d = ui.getPreferredSize(test);
|
||||||
|
double item_height = d.getHeight();
|
||||||
|
//System.out.println("JMenuItem Height " + item_height);
|
||||||
|
JMenuItem up = new JMenuItem(MenuIcon.UP);
|
||||||
|
ui = up.getUI();
|
||||||
|
d = ui.getPreferredSize(up);
|
||||||
|
double icon_height = d.getHeight();
|
||||||
|
//System.out.println("icon item height " + icon_height);
|
||||||
|
double menu_border_height = 8.0; // kludge - how to detect this?
|
||||||
|
double screen_height = java.awt.Toolkit.getDefaultToolkit().getScreenSize().getHeight();
|
||||||
|
//System.out.println("screen height " + screen_height);
|
||||||
|
int n = (int)((screen_height - icon_height * 2 - menu_border_height) / item_height);
|
||||||
|
//System.out.println("max items " + n);
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a menu to be scrolled with the default number of items to
|
||||||
|
* display at a time and the default scrolling interval.
|
||||||
|
*
|
||||||
|
* @param menu the menu
|
||||||
|
* @return the MenuScroller
|
||||||
|
*/
|
||||||
|
public static MenuScroller setScrollerFor(JMenu menu) {
|
||||||
|
return new MenuScroller(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a popup menu to be scrolled with the default number of items to
|
||||||
|
* display at a time and the default scrolling interval.
|
||||||
|
*
|
||||||
|
* @param menu the popup menu
|
||||||
|
* @return the MenuScroller
|
||||||
|
*/
|
||||||
|
public static MenuScroller setScrollerFor(JPopupMenu menu) {
|
||||||
|
return new MenuScroller(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a menu to be scrolled with the default number of items to
|
||||||
|
* display at a time and the specified scrolling interval.
|
||||||
|
*
|
||||||
|
* @param menu the menu
|
||||||
|
* @param scrollCount the number of items to display at a time
|
||||||
|
* @return the MenuScroller
|
||||||
|
* @throws IllegalArgumentException if scrollCount is 0 or negative
|
||||||
|
*/
|
||||||
|
public static MenuScroller setScrollerFor(JMenu menu, int scrollCount) {
|
||||||
|
return new MenuScroller(menu, scrollCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a popup menu to be scrolled with the default number of items to
|
||||||
|
* display at a time and the specified scrolling interval.
|
||||||
|
*
|
||||||
|
* @param menu the popup menu
|
||||||
|
* @param scrollCount the number of items to display at a time
|
||||||
|
* @return the MenuScroller
|
||||||
|
* @throws IllegalArgumentException if scrollCount is 0 or negative
|
||||||
|
*/
|
||||||
|
public static MenuScroller setScrollerFor(JPopupMenu menu, int scrollCount) {
|
||||||
|
return new MenuScroller(menu, scrollCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a menu to be scrolled, with the specified number of items to
|
||||||
|
* display at a time and the specified scrolling interval.
|
||||||
|
*
|
||||||
|
* @param menu the menu
|
||||||
|
* @param scrollCount the number of items to be displayed at a time
|
||||||
|
* @param interval the scroll interval, in milliseconds
|
||||||
|
* @return the MenuScroller
|
||||||
|
* @throws IllegalArgumentException if scrollCount or interval is 0 or negative
|
||||||
|
*/
|
||||||
|
public static MenuScroller setScrollerFor(JMenu menu, int scrollCount, int interval) {
|
||||||
|
return new MenuScroller(menu, scrollCount, interval);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a popup menu to be scrolled, with the specified number of items to
|
||||||
|
* display at a time and the specified scrolling interval.
|
||||||
|
*
|
||||||
|
* @param menu the popup menu
|
||||||
|
* @param scrollCount the number of items to be displayed at a time
|
||||||
|
* @param interval the scroll interval, in milliseconds
|
||||||
|
* @return the MenuScroller
|
||||||
|
* @throws IllegalArgumentException if scrollCount or interval is 0 or negative
|
||||||
|
*/
|
||||||
|
public static MenuScroller setScrollerFor(JPopupMenu menu, int scrollCount, int interval) {
|
||||||
|
return new MenuScroller(menu, scrollCount, interval);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a menu to be scrolled, with the specified number of items
|
||||||
|
* to display in the scrolling region, the specified scrolling interval,
|
||||||
|
* and the specified numbers of items fixed at the top and bottom of the
|
||||||
|
* menu.
|
||||||
|
*
|
||||||
|
* @param menu the menu
|
||||||
|
* @param scrollCount the number of items to display in the scrolling portion
|
||||||
|
* @param interval the scroll interval, in milliseconds
|
||||||
|
* @param topFixedCount the number of items to fix at the top. May be 0.
|
||||||
|
* @param bottomFixedCount the number of items to fix at the bottom. May be 0
|
||||||
|
* @throws IllegalArgumentException if scrollCount or interval is 0 or
|
||||||
|
* negative or if topFixedCount or bottomFixedCount is negative
|
||||||
|
* @return the MenuScroller
|
||||||
|
*/
|
||||||
|
public static MenuScroller setScrollerFor(JMenu menu, int scrollCount, int interval,
|
||||||
|
int topFixedCount, int bottomFixedCount) {
|
||||||
|
return new MenuScroller(menu, scrollCount, interval,
|
||||||
|
topFixedCount, bottomFixedCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a popup menu to be scrolled, with the specified number of items
|
||||||
|
* to display in the scrolling region, the specified scrolling interval,
|
||||||
|
* and the specified numbers of items fixed at the top and bottom of the
|
||||||
|
* popup menu.
|
||||||
|
*
|
||||||
|
* @param menu the popup menu
|
||||||
|
* @param scrollCount the number of items to display in the scrolling portion
|
||||||
|
* @param interval the scroll interval, in milliseconds
|
||||||
|
* @param topFixedCount the number of items to fix at the top. May be 0
|
||||||
|
* @param bottomFixedCount the number of items to fix at the bottom. May be 0
|
||||||
|
* @throws IllegalArgumentException if scrollCount or interval is 0 or
|
||||||
|
* negative or if topFixedCount or bottomFixedCount is negative
|
||||||
|
* @return the MenuScroller
|
||||||
|
*/
|
||||||
|
public static MenuScroller setScrollerFor(JPopupMenu menu, int scrollCount, int interval,
|
||||||
|
int topFixedCount, int bottomFixedCount) {
|
||||||
|
return new MenuScroller(menu, scrollCount, interval,
|
||||||
|
topFixedCount, bottomFixedCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a <code>MenuScroller</code> that scrolls a menu with the
|
||||||
|
* default number of items to display at a time, and default scrolling
|
||||||
|
* interval.
|
||||||
|
*
|
||||||
|
* @param menu the menu
|
||||||
|
*/
|
||||||
|
public MenuScroller(JMenu menu) {
|
||||||
|
this(menu, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a <code>MenuScroller</code> that scrolls a popup menu with the
|
||||||
|
* default number of items to display at a time, and default scrolling
|
||||||
|
* interval.
|
||||||
|
*
|
||||||
|
* @param menu the popup menu
|
||||||
|
*/
|
||||||
|
public MenuScroller(JPopupMenu menu) {
|
||||||
|
this(menu, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a <code>MenuScroller</code> that scrolls a menu with the
|
||||||
|
* specified number of items to display at a time, and default scrolling
|
||||||
|
* interval.
|
||||||
|
*
|
||||||
|
* @param menu the menu
|
||||||
|
* @param scrollCount the number of items to display at a time
|
||||||
|
* @throws IllegalArgumentException if scrollCount is 0 or negative
|
||||||
|
*/
|
||||||
|
public MenuScroller(JMenu menu, int scrollCount) {
|
||||||
|
this(menu, scrollCount, 150);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a <code>MenuScroller</code> that scrolls a popup menu with the
|
||||||
|
* specified number of items to display at a time, and default scrolling
|
||||||
|
* interval.
|
||||||
|
*
|
||||||
|
* @param menu the popup menu
|
||||||
|
* @param scrollCount the number of items to display at a time
|
||||||
|
* @throws IllegalArgumentException if scrollCount is 0 or negative
|
||||||
|
*/
|
||||||
|
public MenuScroller(JPopupMenu menu, int scrollCount) {
|
||||||
|
this(menu, scrollCount, 150);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a <code>MenuScroller</code> that scrolls a menu with the
|
||||||
|
* specified number of items to display at a time, and specified scrolling
|
||||||
|
* interval.
|
||||||
|
*
|
||||||
|
* @param menu the menu
|
||||||
|
* @param scrollCount the number of items to display at a time
|
||||||
|
* @param interval the scroll interval, in milliseconds
|
||||||
|
* @throws IllegalArgumentException if scrollCount or interval is 0 or negative
|
||||||
|
*/
|
||||||
|
public MenuScroller(JMenu menu, int scrollCount, int interval) {
|
||||||
|
this(menu, scrollCount, interval, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a <code>MenuScroller</code> that scrolls a popup menu with the
|
||||||
|
* specified number of items to display at a time, and specified scrolling
|
||||||
|
* interval.
|
||||||
|
*
|
||||||
|
* @param menu the popup menu
|
||||||
|
* @param scrollCount the number of items to display at a time
|
||||||
|
* @param interval the scroll interval, in milliseconds
|
||||||
|
* @throws IllegalArgumentException if scrollCount or interval is 0 or negative
|
||||||
|
*/
|
||||||
|
public MenuScroller(JPopupMenu menu, int scrollCount, int interval) {
|
||||||
|
this(menu, scrollCount, interval, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a <code>MenuScroller</code> that scrolls a menu with the
|
||||||
|
* specified number of items to display in the scrolling region, the
|
||||||
|
* specified scrolling interval, and the specified numbers of items fixed at
|
||||||
|
* the top and bottom of the menu.
|
||||||
|
*
|
||||||
|
* @param menu the menu
|
||||||
|
* @param scrollCount the number of items to display in the scrolling portion
|
||||||
|
* @param interval the scroll interval, in milliseconds
|
||||||
|
* @param topFixedCount the number of items to fix at the top. May be 0
|
||||||
|
* @param bottomFixedCount the number of items to fix at the bottom. May be 0
|
||||||
|
* @throws IllegalArgumentException if scrollCount or interval is 0 or
|
||||||
|
* negative or if topFixedCount or bottomFixedCount is negative
|
||||||
|
*/
|
||||||
|
public MenuScroller(JMenu menu, int scrollCount, int interval,
|
||||||
|
int topFixedCount, int bottomFixedCount) {
|
||||||
|
this(menu.getPopupMenu(), scrollCount, interval, topFixedCount, bottomFixedCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a <code>MenuScroller</code> that scrolls a popup menu with the
|
||||||
|
* specified number of items to display in the scrolling region, the
|
||||||
|
* specified scrolling interval, and the specified numbers of items fixed at
|
||||||
|
* the top and bottom of the popup menu.
|
||||||
|
*
|
||||||
|
* @param menu the popup menu
|
||||||
|
* @param scrollCount the number of items to display in the scrolling portion
|
||||||
|
* @param interval the scroll interval, in milliseconds
|
||||||
|
* @param topFixedCount the number of items to fix at the top. May be 0
|
||||||
|
* @param bottomFixedCount the number of items to fix at the bottom. May be 0
|
||||||
|
* @throws IllegalArgumentException if scrollCount or interval is 0 or
|
||||||
|
* negative or if topFixedCount or bottomFixedCount is negative
|
||||||
|
*/
|
||||||
|
public MenuScroller(JPopupMenu menu, int scrollCount, int interval,
|
||||||
|
int topFixedCount, int bottomFixedCount) {
|
||||||
|
|
||||||
|
if(scrollCount == -1)
|
||||||
|
scrollCount = getMaximumItems(menu)-topFixedCount-bottomFixedCount; // Autosize
|
||||||
|
|
||||||
|
if(interval == -1)
|
||||||
|
interval = 150; // Default value
|
||||||
|
|
||||||
|
if (scrollCount <= 0 || interval <= 0) {
|
||||||
|
throw new IllegalArgumentException("scrollCount and interval must be greater than 0");
|
||||||
|
}
|
||||||
|
if (topFixedCount < 0 || bottomFixedCount < 0) {
|
||||||
|
throw new IllegalArgumentException("topFixedCount and bottomFixedCount cannot be negative");
|
||||||
|
}
|
||||||
|
|
||||||
|
upItem = new MenuScrollItem(MenuIcon.UP, -1);
|
||||||
|
downItem = new MenuScrollItem(MenuIcon.DOWN, +1);
|
||||||
|
setScrollCount(scrollCount);
|
||||||
|
setInterval(interval);
|
||||||
|
setTopFixedCount(topFixedCount);
|
||||||
|
setBottomFixedCount(bottomFixedCount);
|
||||||
|
|
||||||
|
this.menu = menu;
|
||||||
|
menu.addPopupMenuListener(menuListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the scroll interval in milliseconds
|
||||||
|
*
|
||||||
|
* @return the scroll interval in milliseconds
|
||||||
|
*/
|
||||||
|
public int getInterval() {
|
||||||
|
return interval;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the scroll interval in milliseconds
|
||||||
|
*
|
||||||
|
* @param interval the scroll interval in milliseconds
|
||||||
|
* @throws IllegalArgumentException if interval is 0 or negative
|
||||||
|
*/
|
||||||
|
public void setInterval(int interval) {
|
||||||
|
if (interval <= 0) {
|
||||||
|
throw new IllegalArgumentException("interval must be greater than 0");
|
||||||
|
}
|
||||||
|
upItem.setInterval(interval);
|
||||||
|
downItem.setInterval(interval);
|
||||||
|
this.interval = interval;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of items in the scrolling portion of the menu.
|
||||||
|
*
|
||||||
|
* @return the number of items to display at a time
|
||||||
|
*/
|
||||||
|
public int getscrollCount() {
|
||||||
|
return scrollCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the number of items in the scrolling portion of the menu.
|
||||||
|
*
|
||||||
|
* @param scrollCount the number of items to display at a time
|
||||||
|
* @throws IllegalArgumentException if scrollCount is 0 or negative
|
||||||
|
*/
|
||||||
|
public void setScrollCount(int scrollCount) {
|
||||||
|
if (scrollCount <= 0) {
|
||||||
|
throw new IllegalArgumentException("scrollCount must be greater than 0");
|
||||||
|
}
|
||||||
|
this.scrollCount = scrollCount;
|
||||||
|
MenuSelectionManager.defaultManager().clearSelectedPath();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of items fixed at the top of the menu or popup menu.
|
||||||
|
*
|
||||||
|
* @return the number of items
|
||||||
|
*/
|
||||||
|
public int getTopFixedCount() {
|
||||||
|
return topFixedCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the number of items to fix at the top of the menu or popup menu.
|
||||||
|
*
|
||||||
|
* @param topFixedCount the number of items
|
||||||
|
*/
|
||||||
|
public void setTopFixedCount(int topFixedCount) {
|
||||||
|
if (firstIndex <= topFixedCount) {
|
||||||
|
firstIndex = topFixedCount;
|
||||||
|
} else {
|
||||||
|
firstIndex += (topFixedCount - this.topFixedCount);
|
||||||
|
}
|
||||||
|
this.topFixedCount = topFixedCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of items fixed at the bottom of the menu or popup menu.
|
||||||
|
*
|
||||||
|
* @return the number of items
|
||||||
|
*/
|
||||||
|
public int getBottomFixedCount() {
|
||||||
|
return bottomFixedCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the number of items to fix at the bottom of the menu or popup menu.
|
||||||
|
*
|
||||||
|
* @param bottomFixedCount the number of items
|
||||||
|
*/
|
||||||
|
public void setBottomFixedCount(int bottomFixedCount) {
|
||||||
|
this.bottomFixedCount = bottomFixedCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scrolls the specified item into view each time the menu is opened. Call this method with
|
||||||
|
* <code>null</code> to restore the default behavior, which is to show the menu as it last
|
||||||
|
* appeared.
|
||||||
|
*
|
||||||
|
* @param item the item to keep visible
|
||||||
|
* @see #keepVisible(int)
|
||||||
|
*/
|
||||||
|
public void keepVisible(JMenuItem item) {
|
||||||
|
if (item == null) {
|
||||||
|
keepVisibleIndex = -1;
|
||||||
|
} else {
|
||||||
|
int index = menu.getComponentIndex(item);
|
||||||
|
keepVisibleIndex = index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scrolls the item at the specified index into view each time the menu is opened. Call this
|
||||||
|
* method with <code>-1</code> to restore the default behavior, which is to show the menu as
|
||||||
|
* it last appeared.
|
||||||
|
*
|
||||||
|
* @param index the index of the item to keep visible
|
||||||
|
* @see #keepVisible(javax.swing.JMenuItem)
|
||||||
|
*/
|
||||||
|
public void keepVisible(int index) {
|
||||||
|
keepVisibleIndex = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes this MenuScroller from the associated menu and restores the
|
||||||
|
* default behavior of the menu.
|
||||||
|
*/
|
||||||
|
public void dispose() {
|
||||||
|
if (menu != null) {
|
||||||
|
menu.removePopupMenuListener(menuListener);
|
||||||
|
menu = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensures that the <code>dispose</code> method of this MenuScroller is
|
||||||
|
* called when there are no more refrences to it.
|
||||||
|
*
|
||||||
|
* @exception Throwable if an error occurs.
|
||||||
|
* @see MenuScroller#dispose()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void finalize() throws Throwable {
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshMenu() {
|
||||||
|
if (menuItems != null && menuItems.length > 0) {
|
||||||
|
firstIndex = Math.max(topFixedCount, firstIndex);
|
||||||
|
firstIndex = Math.min(menuItems.length - bottomFixedCount - scrollCount, firstIndex);
|
||||||
|
|
||||||
|
upItem.setEnabled(firstIndex > topFixedCount);
|
||||||
|
downItem.setEnabled(firstIndex + scrollCount < menuItems.length - bottomFixedCount);
|
||||||
|
|
||||||
|
menu.removeAll();
|
||||||
|
for (int i = 0; i < topFixedCount; i++) {
|
||||||
|
menu.add(menuItems[i]);
|
||||||
|
}
|
||||||
|
/*if (topFixedCount > 0) {
|
||||||
|
menu.addSeparator();
|
||||||
|
}*/
|
||||||
|
|
||||||
|
menu.add(upItem);
|
||||||
|
for (int i = firstIndex; i < scrollCount + firstIndex; i++) {
|
||||||
|
menu.add(menuItems[i]);
|
||||||
|
}
|
||||||
|
menu.add(downItem);
|
||||||
|
|
||||||
|
/*if (bottomFixedCount > 0) {
|
||||||
|
menu.addSeparator();
|
||||||
|
}*/
|
||||||
|
for (int i = menuItems.length - bottomFixedCount; i < menuItems.length; i++) {
|
||||||
|
menu.add(menuItems[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
JComponent parent = (JComponent) upItem.getParent();
|
||||||
|
parent.revalidate();
|
||||||
|
parent.repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class MenuScrollListener implements PopupMenuListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
|
||||||
|
setMenuItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
|
||||||
|
restoreMenuItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void popupMenuCanceled(PopupMenuEvent e) {
|
||||||
|
restoreMenuItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setMenuItems() {
|
||||||
|
menuItems = menu.getComponents();
|
||||||
|
|
||||||
|
// Hack for auto detect the topFixed total
|
||||||
|
/*int topFixedCountPrev = topFixedCount;
|
||||||
|
for(int i=menuItems.length-1;i>0;i--)
|
||||||
|
{
|
||||||
|
if(menuItems[i].getClass().getName().endsWith("Separator"))
|
||||||
|
{
|
||||||
|
System.out.println(i);
|
||||||
|
setTopFixedCount(i+1);
|
||||||
|
|
||||||
|
if(topFixedCount!=topFixedCountPrev)
|
||||||
|
{
|
||||||
|
scrollCount = getMaximumItems()-topFixedCount;
|
||||||
|
System.out.println(getMaximumItems()-topFixedCount);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
if (keepVisibleIndex >= topFixedCount
|
||||||
|
&& keepVisibleIndex <= menuItems.length - bottomFixedCount
|
||||||
|
&& (keepVisibleIndex > firstIndex + scrollCount
|
||||||
|
|| keepVisibleIndex < firstIndex)) {
|
||||||
|
firstIndex = Math.min(firstIndex, keepVisibleIndex);
|
||||||
|
firstIndex = Math.max(firstIndex, keepVisibleIndex - scrollCount + 1);
|
||||||
|
}
|
||||||
|
if (menuItems.length > topFixedCount + scrollCount + bottomFixedCount) {
|
||||||
|
refreshMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void restoreMenuItems() {
|
||||||
|
menu.removeAll();
|
||||||
|
for (Component component : menuItems) {
|
||||||
|
menu.add(component);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class MenuScrollTimer extends Timer {
|
||||||
|
|
||||||
|
public MenuScrollTimer(final int increment, int interval) {
|
||||||
|
super(interval, new ActionListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
firstIndex += increment;
|
||||||
|
refreshMenu();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class MenuScrollItem extends JMenuItem
|
||||||
|
implements ChangeListener {
|
||||||
|
|
||||||
|
private MenuScrollTimer timer;
|
||||||
|
|
||||||
|
public MenuScrollItem(MenuIcon icon, int increment) {
|
||||||
|
setIcon(icon);
|
||||||
|
setDisabledIcon(icon);
|
||||||
|
timer = new MenuScrollTimer(increment, interval);
|
||||||
|
addChangeListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInterval(int interval) {
|
||||||
|
timer.setDelay(interval);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
if (isArmed() && !timer.isRunning()) {
|
||||||
|
timer.start();
|
||||||
|
}
|
||||||
|
if (!isArmed() && timer.isRunning()) {
|
||||||
|
timer.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static enum MenuIcon implements Icon {
|
||||||
|
|
||||||
|
UP(9, 1, 9),
|
||||||
|
DOWN(1, 9, 1);
|
||||||
|
final int[] xPoints = {1, 5, 9};
|
||||||
|
final int[] yPoints;
|
||||||
|
|
||||||
|
MenuIcon(int... yPoints) {
|
||||||
|
this.yPoints = yPoints;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void paintIcon(Component c, Graphics g, int x, int y) {
|
||||||
|
Dimension size = c.getSize();
|
||||||
|
Graphics g2 = g.create(size.width / 2 - 5, size.height / 2 - 5, 10, 10);
|
||||||
|
g2.setColor(Color.GRAY);
|
||||||
|
g2.drawPolygon(xPoints, yPoints, 3);
|
||||||
|
if (c.isEnabled()) {
|
||||||
|
g2.setColor(Color.BLACK);
|
||||||
|
g2.fillPolygon(xPoints, yPoints, 3);
|
||||||
|
}
|
||||||
|
g2.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getIconWidth() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getIconHeight() {
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -32,6 +32,7 @@ import processing.app.Base;
|
|||||||
import processing.app.Preferences;
|
import processing.app.Preferences;
|
||||||
import processing.app.windows.Registry.REGISTRY_ROOT_KEY;
|
import processing.app.windows.Registry.REGISTRY_ROOT_KEY;
|
||||||
import processing.core.PApplet;
|
import processing.core.PApplet;
|
||||||
|
import processing.core.PConstants;
|
||||||
|
|
||||||
|
|
||||||
// http://developer.apple.com/documentation/QuickTime/Conceptual/QT7Win_Update_Guide/Chapter03/chapter_3_section_1.html
|
// http://developer.apple.com/documentation/QuickTime/Conceptual/QT7Win_Update_Guide/Chapter03/chapter_3_section_1.html
|
||||||
@ -302,4 +303,10 @@ public class Platform extends processing.app.Platform {
|
|||||||
//return 0;
|
//return 0;
|
||||||
return clib._putenv(variable + "=");
|
return clib._putenv(variable + "=");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return PConstants.platformNames[PConstants.WINDOWS];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
81
app/test/processing/app/I18NTest.java
Normal file
81
app/test/processing/app/I18NTest.java
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
package processing.app;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class I18NTest {
|
||||||
|
|
||||||
|
private Set<String> loadReferenceI18NKeys() throws IOException {
|
||||||
|
Properties properties = new Properties();
|
||||||
|
properties.putAll(loadProperties(new File(I18NTest.class.getResource("./Resources_en.properties").getFile())));
|
||||||
|
Set<String> keys = new HashSet<String>();
|
||||||
|
for (Object key : properties.keySet()) {
|
||||||
|
keys.add(key.toString());
|
||||||
|
}
|
||||||
|
return keys;
|
||||||
|
}
|
||||||
|
|
||||||
|
private File[] listPropertiesFiles() {
|
||||||
|
return new File(I18NTest.class.getResource(".").getFile()).listFiles(new FileFilter() {
|
||||||
|
@Override
|
||||||
|
public boolean accept(File file) {
|
||||||
|
return file.isFile() && file.getName().endsWith(".properties");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private Properties loadProperties(File file) throws IOException {
|
||||||
|
Properties properties = new Properties();
|
||||||
|
InputStream is = null;
|
||||||
|
try {
|
||||||
|
is = new FileInputStream(file);
|
||||||
|
properties.load(is);
|
||||||
|
} finally {
|
||||||
|
if (is != null) {
|
||||||
|
is.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ensureEveryTranslationIsComplete() throws Exception {
|
||||||
|
Set<String> keys = loadReferenceI18NKeys();
|
||||||
|
|
||||||
|
Map<String, List<String>> missingTranslationsPerFile = new HashMap<String, List<String>>();
|
||||||
|
|
||||||
|
for (File file : listPropertiesFiles()) {
|
||||||
|
Properties properties = loadProperties(file);
|
||||||
|
for (String key : keys) {
|
||||||
|
if (!properties.containsKey(key) || properties.get(key).equals("")) {
|
||||||
|
addMissingTranslation(missingTranslationsPerFile, file, key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!missingTranslationsPerFile.isEmpty()) {
|
||||||
|
List<String> filesWithIncompleteTranslations = new LinkedList<String>(missingTranslationsPerFile.keySet());
|
||||||
|
Collections.sort(filesWithIncompleteTranslations);
|
||||||
|
System.out.println("Following files have missing translations:" + filesWithIncompleteTranslations);
|
||||||
|
for (String file : filesWithIncompleteTranslations) {
|
||||||
|
|
||||||
|
System.out.println("Following translations in file " + file + " are missing:");
|
||||||
|
for (String key : missingTranslationsPerFile.get(file)) {
|
||||||
|
System.out.println("==> '" + key.replaceAll("\n", "\\\\n").replaceAll(" ", "\\\\ ") + "'");
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addMissingTranslation(Map<String, List<String>> missingTranslationsPerFile, File file, String key) {
|
||||||
|
if (!missingTranslationsPerFile.containsKey(file.getName())) {
|
||||||
|
missingTranslationsPerFile.put(file.getName(), new LinkedList<String>());
|
||||||
|
}
|
||||||
|
|
||||||
|
missingTranslationsPerFile.get(file.getName()).add(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -110,41 +110,35 @@
|
|||||||
<!-- - - - - - - - - -->
|
<!-- - - - - - - - - -->
|
||||||
<target name="revision-check">
|
<target name="revision-check">
|
||||||
<!-- figure out the revision number -->
|
<!-- figure out the revision number -->
|
||||||
<loadfile srcfile="../todo.txt" property="revision">
|
<loadfile srcfile="shared/revisions.txt" property="revision">
|
||||||
<filterchain>
|
<filterchain>
|
||||||
<headfilter lines="1"/>
|
<ignoreblank />
|
||||||
<tokenfilter>
|
<headfilter lines="1"/>
|
||||||
<stringtokenizer suppressdelims="true"/>
|
<tokenfilter>
|
||||||
<!-- grab the thing from the first line that's 4 digits -->
|
<linetokenizer includeDelims="false" />
|
||||||
<containsregex pattern="(\d\d\d\d)" />
|
<!-- grab the thing from the first line that's 4 digits -->
|
||||||
</tokenfilter>
|
<containsregex pattern="ARDUINO (.*) " />
|
||||||
|
<replaceregex pattern="ARDUINO ([^ ]*).*" replace="\1" />
|
||||||
|
</tokenfilter>
|
||||||
|
<tokenfilter>
|
||||||
|
<stringtokenizer suppressdelims="true" />
|
||||||
|
</tokenfilter>
|
||||||
</filterchain>
|
</filterchain>
|
||||||
</loadfile>
|
</loadfile>
|
||||||
<!-- <echo message="revision is ${revision}." /> -->
|
<echo message="Latest revision detected in shared/revision.txt is: ${revision}" />
|
||||||
|
|
||||||
<!-- figure out the revision number in base.java -->
|
<!-- figure out the revision number in base.java -->
|
||||||
<loadfile srcfile="../app/src/processing/app/Base.java"
|
<loadfile srcfile="../app/src/processing/app/Base.java"
|
||||||
property="revision.base">
|
property="revision.base">
|
||||||
<filterchain>
|
<filterchain>
|
||||||
<tokenfilter>
|
<tokenfilter>
|
||||||
<linetokenizer />
|
<linetokenizer />
|
||||||
<containsregex pattern="String VERSION_NAME = "/>
|
<containsregex pattern="String VERSION_NAME = "/>
|
||||||
<replaceregex pattern="[^0-9]*" flags="g" replace=""/>
|
<replaceregex pattern="[^0-9]*" flags="g" replace=""/>
|
||||||
</tokenfilter>
|
</tokenfilter>
|
||||||
</filterchain>
|
</filterchain>
|
||||||
</loadfile>
|
</loadfile>
|
||||||
<!-- <echo message="base revision is ${revision.base}." /> -->
|
<echo message="Revision in Base.java is: ${revision.base}" />
|
||||||
|
|
||||||
<condition property="revision.correct">
|
|
||||||
<!-- Using contains because I can't figure out how to get rid of the
|
|
||||||
LF in revision.base. Please file a bug if you have a fix. -->
|
|
||||||
<contains string="${revision.base}" substring="${revision}"/>
|
|
||||||
</condition>
|
|
||||||
|
|
||||||
<!-- the revision.base property won't be set
|
|
||||||
if $revision wasn't found... -->
|
|
||||||
<fail unless="revision.correct"
|
|
||||||
message="Fix revision number in Base.java" />
|
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<!-- - - - - - - - -->
|
<!-- - - - - - - - -->
|
||||||
|
@ -21,8 +21,6 @@
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// set pin numbers for the five buttons:
|
|
||||||
|
|
||||||
// set pin numbers for the five buttons:
|
// set pin numbers for the five buttons:
|
||||||
const int upButton = 2;
|
const int upButton = 2;
|
||||||
const int downButton = 3;
|
const int downButton = 3;
|
||||||
@ -66,7 +64,7 @@ void loop() {
|
|||||||
Mouse.move(40, 0);
|
Mouse.move(40, 0);
|
||||||
break;
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
// move mouse right
|
// perform mouse left click
|
||||||
Mouse.click(MOUSE_LEFT);
|
Mouse.click(MOUSE_LEFT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -10,9 +10,10 @@
|
|||||||
three 10 kilohm resistors
|
three 10 kilohm resistors
|
||||||
3 220 ohm resistors
|
3 220 ohm resistors
|
||||||
3 photoresistors
|
3 photoresistors
|
||||||
red green aand blue colored gels
|
red green and blue colored gels
|
||||||
|
|
||||||
Created 13 September 2012
|
Created 13 September 2012
|
||||||
|
Modified 14 November 2012
|
||||||
by Scott Fitzgerald
|
by Scott Fitzgerald
|
||||||
Thanks to Federico Vanzati for improvements
|
Thanks to Federico Vanzati for improvements
|
||||||
|
|
||||||
@ -42,32 +43,32 @@ void setup() {
|
|||||||
Serial.begin(9600);
|
Serial.begin(9600);
|
||||||
|
|
||||||
// set the digital pins as outputs
|
// set the digital pins as outputs
|
||||||
pinMode(greenLedPin,OUTPUT);
|
pinMode(greenLEDPin,OUTPUT);
|
||||||
pinMode(redLedPin,OUTPUT);
|
pinMode(redLEDPin,OUTPUT);
|
||||||
pinMode(blueLedPin,OUTPUT);
|
pinMode(blueLEDPin,OUTPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
// Read the sensors first:
|
// Read the sensors first:
|
||||||
|
|
||||||
// read the value from the red-filtered photoresistor:
|
// read the value from the red-filtered photoresistor:
|
||||||
redsensorValue = analogRead(redsensorPin);
|
redSensorValue = analogRead(redSensorPin);
|
||||||
// give the ADC a moment to settle
|
// give the ADC a moment to settle
|
||||||
delay(5);
|
delay(5);
|
||||||
// read the value from the green-filtered photoresistor:
|
// read the value from the green-filtered photoresistor:
|
||||||
greensensorValue = analogRead(greensensorPin);
|
greenSensorValue = analogRead(greenSensorPin);
|
||||||
// give the ADC a moment to settle
|
// give the ADC a moment to settle
|
||||||
delay(5);
|
delay(5);
|
||||||
// read the value from the blue-filtered photoresistor:
|
// read the value from the blue-filtered photoresistor:
|
||||||
bluesensorValue = analogRead(bluesensorPin);
|
blueSensorValue = analogRead(blueSensorPin);
|
||||||
|
|
||||||
// print out the values to the serial monitor
|
// print out the values to the serial monitor
|
||||||
Serial.print("raw sensor Values \t red: ");
|
Serial.print("raw sensor Values \t red: ");
|
||||||
Serial.print(redsensorValue);
|
Serial.print(redSensorValue);
|
||||||
Serial.print("\t green: ");
|
Serial.print("\t green: ");
|
||||||
Serial.print(greensensorValue);
|
Serial.print(greenSensorValue);
|
||||||
Serial.print("\t Blue: ");
|
Serial.print("\t Blue: ");
|
||||||
Serial.println(bluesensorValue);
|
Serial.println(blueSensorValue);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
In order to use the values from the sensor for the LED,
|
In order to use the values from the sensor for the LED,
|
||||||
@ -75,9 +76,9 @@ void loop() {
|
|||||||
but analogWrite() uses 8 bits. You'll want to divide your
|
but analogWrite() uses 8 bits. You'll want to divide your
|
||||||
sensor readings by 4 to keep them in range of the output.
|
sensor readings by 4 to keep them in range of the output.
|
||||||
*/
|
*/
|
||||||
redValue = redsensorValue/4;
|
redValue = redSensorValue/4;
|
||||||
greenValue = greensensorValue/4;
|
greenValue = greenSensorValue/4;
|
||||||
blueValue = bluesensorValue/4;
|
blueValue = blueSensorValue/4;
|
||||||
|
|
||||||
// print out the mapped values
|
// print out the mapped values
|
||||||
Serial.print("Mapped sensor Values \t red: ");
|
Serial.print("Mapped sensor Values \t red: ");
|
||||||
@ -90,8 +91,8 @@ void loop() {
|
|||||||
/*
|
/*
|
||||||
Now that you have a usable value, it's time to PWM the LED.
|
Now that you have a usable value, it's time to PWM the LED.
|
||||||
*/
|
*/
|
||||||
analogWrite(redLedPin, redValue);
|
analogWrite(redLEDPin, redValue);
|
||||||
analogWrite(greenLedPin, greenValue);
|
analogWrite(greenLEDPin, greenValue);
|
||||||
analogWrite(blueLedPin, blueValue);
|
analogWrite(blueLEDPin, blueValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,6 +48,7 @@ null KEYWORD1
|
|||||||
private KEYWORD1
|
private KEYWORD1
|
||||||
protected KEYWORD1
|
protected KEYWORD1
|
||||||
public KEYWORD1
|
public KEYWORD1
|
||||||
|
register KEYWORD1
|
||||||
return KEYWORD1 Return
|
return KEYWORD1 Return
|
||||||
short KEYWORD1
|
short KEYWORD1
|
||||||
signed KEYWORD1
|
signed KEYWORD1
|
||||||
|
@ -1,23 +1,43 @@
|
|||||||
|
|
||||||
|
ARDUINO 1.5.2 BETA - 2012.01.23
|
||||||
|
|
||||||
[ide]
|
[ide]
|
||||||
|
* Scrollable editor tabs (Shigheru KANEMOTO)
|
||||||
|
* Scrollable menus
|
||||||
|
* Portable Arduino (Shigeru KANEMOTO)
|
||||||
|
* Default sketchbook folder for linux is now "Arduino"
|
||||||
* Fixed IDE startup bug "Menu has no enabled items"
|
* Fixed IDE startup bug "Menu has no enabled items"
|
||||||
* Command line build.
|
* Command line build.
|
||||||
* Fixed some language strings (Shigeru KANEMOTO)
|
* Fixed some language strings (Shigeru KANEMOTO)
|
||||||
|
* Fix to boards.txt: added Micro and fixed Lilypad bootloader path
|
||||||
|
* Removed check for ".h" existence in libraries.
|
||||||
|
* Deleting tab from IDE does not delete from temporary folder
|
||||||
|
* Fixed NPE when unknown boards/platforms are selected in preferences
|
||||||
|
* Extended command line build flags
|
||||||
|
|
||||||
[arduino core]
|
[arduino core]
|
||||||
* sam: portOutputRegister() is now writeable.
|
* sam: portOutputRegister() is now writeable.
|
||||||
* sam: fixed issue on weak-symbol for some interrupt handlers
|
* sam: fixed issue on weak-symbol for some interrupt handlers
|
||||||
* sam: fixed BSoD on some Windows machine (louismdavis)
|
* sam: fixed BSoD on some Windows machine (louismdavis)
|
||||||
* sam: added CANRX1/CANTX1 pins 88/89 (same physical pin for 66/53)
|
* sam: added CANRX1/CANTX1 pins 88/89 (same physical pin for 66/53)
|
||||||
|
* sam: fixed analogWrite when used in very thight write loops (V.Dorrich)
|
||||||
|
* sam: fixed USBSerial.write() while sending big buffers (Bill Dreschel)
|
||||||
|
* sam: USBSerial receive buffer size is now 512 (PeterVH)
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
* sam: Added Servo library
|
* sam: Added Servo library
|
||||||
|
* sam: Added WiFi library
|
||||||
|
* Fixed USBHost MouseController example
|
||||||
|
|
||||||
ARDUINO BETA 1.5.1r2 - 2012.11.06
|
[other]
|
||||||
|
* Merged all improvements made in Arduino IDE 1.0.3
|
||||||
|
* Merged all improvements made in Arduino IDE 1.0.4 (not yet released)
|
||||||
|
|
||||||
|
ARDUINO 1.5.1r2 BETA - 2012.11.06
|
||||||
|
|
||||||
* Fixed wrong release file for windows.
|
* Fixed wrong release file for windows.
|
||||||
|
|
||||||
ARDUINO BETA 1.5.1 - 2012.11.05
|
ARDUINO 1.5.1 BETA - 2012.11.05
|
||||||
|
|
||||||
* Merged changes coming from stable release of Arduino IDE 1.0.2.
|
* Merged changes coming from stable release of Arduino IDE 1.0.2.
|
||||||
|
|
||||||
@ -42,7 +62,7 @@ ARDUINO BETA 1.5.1 - 2012.11.05
|
|||||||
[firmwares]
|
[firmwares]
|
||||||
* Added firmware for atmega16u2 on Due Board.
|
* Added firmware for atmega16u2 on Due Board.
|
||||||
|
|
||||||
ARDUINO BETA 1.5 - 2012.10.22
|
ARDUINO 1.5 BETA - 2012.10.22
|
||||||
|
|
||||||
* First release for the unified IDE for both AVR 8-bit and ARM 32-bit
|
* First release for the unified IDE for both AVR 8-bit and ARM 32-bit
|
||||||
(SAM3 CPUs) architectures.
|
(SAM3 CPUs) architectures.
|
||||||
@ -53,6 +73,51 @@ ARDUINO BETA 1.5 - 2012.10.22
|
|||||||
* For more info refer to this press release:
|
* For more info refer to this press release:
|
||||||
http://arduino.cc/blog/2012/10/22/arduino-1-5-support-for-the-due-and-other-processors-easier-library-installation-simplified-board-menu-etc/
|
http://arduino.cc/blog/2012/10/22/arduino-1-5-support-for-the-due-and-other-processors-easier-library-installation-simplified-board-menu-etc/
|
||||||
|
|
||||||
|
ARDUINO 1.0.4 - Not yet released.
|
||||||
|
|
||||||
|
[core]
|
||||||
|
|
||||||
|
* Fixed malloc bug (Paul Stoffregen)
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
|
||||||
|
* Fixed memory leak when calling Ethernet.begin() multiple times.
|
||||||
|
* Fixed SD example listfiles.ino
|
||||||
|
* Fixed a lot of Esplora examples
|
||||||
|
|
||||||
|
[environment]
|
||||||
|
|
||||||
|
* Sort entries in preferences.txt (Shigeru Kanemoto)
|
||||||
|
* Fixed some wrong translations
|
||||||
|
* Fixed NPE due to permissions IO error
|
||||||
|
|
||||||
|
ARDUINO 1.0.3 - 2012.12.10
|
||||||
|
|
||||||
|
[hardware]
|
||||||
|
|
||||||
|
* Added support for the Arduino Esplora
|
||||||
|
|
||||||
|
[environment]
|
||||||
|
|
||||||
|
* Signed application for MacOSX 10.8
|
||||||
|
|
||||||
|
[core]
|
||||||
|
|
||||||
|
* Fixed power-up-starts-bootloader in Leonardo (and derivative)
|
||||||
|
bootloaders. (Kristian Lauszus)
|
||||||
|
(https://github.com/arduino/Arduino/pull/118)
|
||||||
|
|
||||||
|
* Fixed digital_pin_to_timer_PGM array in Leonardo variant.
|
||||||
|
|
||||||
|
* Published updated Wifi firmware
|
||||||
|
|
||||||
|
* Updated source code for atmega8 bootloader
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
|
||||||
|
* Added 600 baud support in SoftwareSerial (Sébastien Jean)
|
||||||
|
(http://github.com/arduino/Arduino/issues/1146)
|
||||||
|
|
||||||
ARDUINO 1.0.2 - 2012.11.05
|
ARDUINO 1.0.2 - 2012.11.05
|
||||||
|
|
||||||
[hardware]
|
[hardware]
|
||||||
|
107
build/windows/dist/drivers/Arduino Esplora.inf
vendored
Normal file
107
build/windows/dist/drivers/Arduino Esplora.inf
vendored
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
;************************************************************
|
||||||
|
; Windows USB CDC ACM Setup File
|
||||||
|
; Copyright (c) 2000 Microsoft Corporation
|
||||||
|
|
||||||
|
|
||||||
|
[Version]
|
||||||
|
Signature="$Windows NT$"
|
||||||
|
Class=Ports
|
||||||
|
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
|
||||||
|
Provider=%MFGNAME%
|
||||||
|
LayoutFile=layout.inf
|
||||||
|
CatalogFile=%MFGFILENAME%.cat
|
||||||
|
DriverVer=11/15/2007,5.1.2600.0
|
||||||
|
|
||||||
|
[Manufacturer]
|
||||||
|
%MFGNAME%=DeviceList, NTamd64
|
||||||
|
|
||||||
|
[DestinationDirs]
|
||||||
|
DefaultDestDir=12
|
||||||
|
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; Windows 2000/XP/Vista-32bit Sections
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
[DriverInstall.nt]
|
||||||
|
include=mdmcpq.inf
|
||||||
|
CopyFiles=DriverCopyFiles.nt
|
||||||
|
AddReg=DriverInstall.nt.AddReg
|
||||||
|
|
||||||
|
[DriverCopyFiles.nt]
|
||||||
|
usbser.sys,,,0x20
|
||||||
|
|
||||||
|
[DriverInstall.nt.AddReg]
|
||||||
|
HKR,,DevLoader,,*ntkern
|
||||||
|
HKR,,NTMPDriver,,%DRIVERFILENAME%.sys
|
||||||
|
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
|
||||||
|
|
||||||
|
[DriverInstall.nt.Services]
|
||||||
|
AddService=usbser, 0x00000002, DriverService.nt
|
||||||
|
|
||||||
|
[DriverService.nt]
|
||||||
|
DisplayName=%SERVICE%
|
||||||
|
ServiceType=1
|
||||||
|
StartType=3
|
||||||
|
ErrorControl=1
|
||||||
|
ServiceBinary=%12%\%DRIVERFILENAME%.sys
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; Vista-64bit Sections
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
[DriverInstall.NTamd64]
|
||||||
|
include=mdmcpq.inf
|
||||||
|
CopyFiles=DriverCopyFiles.NTamd64
|
||||||
|
AddReg=DriverInstall.NTamd64.AddReg
|
||||||
|
|
||||||
|
[DriverCopyFiles.NTamd64]
|
||||||
|
%DRIVERFILENAME%.sys,,,0x20
|
||||||
|
|
||||||
|
[DriverInstall.NTamd64.AddReg]
|
||||||
|
HKR,,DevLoader,,*ntkern
|
||||||
|
HKR,,NTMPDriver,,%DRIVERFILENAME%.sys
|
||||||
|
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
|
||||||
|
|
||||||
|
[DriverInstall.NTamd64.Services]
|
||||||
|
AddService=usbser, 0x00000002, DriverService.NTamd64
|
||||||
|
|
||||||
|
[DriverService.NTamd64]
|
||||||
|
DisplayName=%SERVICE%
|
||||||
|
ServiceType=1
|
||||||
|
StartType=3
|
||||||
|
ErrorControl=1
|
||||||
|
ServiceBinary=%12%\%DRIVERFILENAME%.sys
|
||||||
|
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; Vendor and Product ID Definitions
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; When developing your USB device, the VID and PID used in the PC side
|
||||||
|
; application program and the firmware on the microcontroller must match.
|
||||||
|
; Modify the below line to use your VID and PID. Use the format as shown below.
|
||||||
|
; Note: One INF file can be used for multiple devices with different VID and PIDs.
|
||||||
|
; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line.
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
[SourceDisksFiles]
|
||||||
|
[SourceDisksNames]
|
||||||
|
[DeviceList]
|
||||||
|
%DESCRIPTION%=DriverInstall, USB\VID_2341&PID_003C
|
||||||
|
%DESCRIPTION%=DriverInstall, USB\VID_2341&PID_803C&MI_00
|
||||||
|
|
||||||
|
[DeviceList.NTamd64]
|
||||||
|
%DESCRIPTION%=DriverInstall, USB\VID_2341&PID_003C
|
||||||
|
%DESCRIPTION%=DriverInstall, USB\VID_2341&PID_803C&MI_00
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; String Definitions
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
;Modify these strings to customize your device
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
[Strings]
|
||||||
|
MFGFILENAME="CDC_vista"
|
||||||
|
DRIVERFILENAME ="usbser"
|
||||||
|
MFGNAME="Arduino LLC (www.arduino.cc)"
|
||||||
|
INSTDISK="Arduino Esplora Driver Installer"
|
||||||
|
DESCRIPTION="Arduino Esplora"
|
||||||
|
SERVICE="USB RS-232 Emulation Driver"
|
@ -206,6 +206,33 @@ micro.build.extra_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid}
|
|||||||
|
|
||||||
##############################################################
|
##############################################################
|
||||||
|
|
||||||
|
esplora.name=Arduino Esplora
|
||||||
|
esplora.upload.tool=avrdude
|
||||||
|
esplora.upload.protocol=avr109
|
||||||
|
esplora.upload.maximum_size=28672
|
||||||
|
esplora.upload.speed=57600
|
||||||
|
esplora.upload.disable_flushing=true
|
||||||
|
esplora.upload.use_1200bps_touch=true
|
||||||
|
esplora.upload.wait_for_upload_port=true
|
||||||
|
|
||||||
|
esplora.bootloader.tool=avrdude
|
||||||
|
esplora.bootloader.low_fuses=0xff
|
||||||
|
esplora.bootloader.high_fuses=0xd8
|
||||||
|
esplora.bootloader.extended_fuses=0xcb
|
||||||
|
esplora.bootloader.file=caterina/Caterina-Esplora.hex
|
||||||
|
esplora.bootloader.unlock_bits=0x3F
|
||||||
|
esplora.bootloader.lock_bits=0x2F
|
||||||
|
|
||||||
|
esplora.build.mcu=atmega32u4
|
||||||
|
esplora.build.f_cpu=16000000L
|
||||||
|
esplora.build.vid=0x2341
|
||||||
|
esplora.build.pid=0x8036
|
||||||
|
esplora.build.core=arduino
|
||||||
|
esplora.build.variant=leonardo
|
||||||
|
esplora.build.extra_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid}
|
||||||
|
|
||||||
|
##############################################################
|
||||||
|
|
||||||
mini.name=Arduino Mini
|
mini.name=Arduino Mini
|
||||||
|
|
||||||
mini.upload.tool=avrdude
|
mini.upload.tool=avrdude
|
||||||
@ -501,6 +528,6 @@ menu.cpu.atmegang.atmega8.upload.maximum_size=7168
|
|||||||
|
|
||||||
menu.cpu.atmegang.atmega8.bootloader.low_fuses=0xdf
|
menu.cpu.atmegang.atmega8.bootloader.low_fuses=0xdf
|
||||||
menu.cpu.atmegang.atmega8.bootloader.high_fuses=0xca
|
menu.cpu.atmegang.atmega8.bootloader.high_fuses=0xca
|
||||||
menu.cpu.atmegang.atmega8.bootloader.file=atmegang/ATmegaBOOT.hex
|
menu.cpu.atmegang.atmega8.bootloader.file=atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex
|
||||||
|
|
||||||
menu.cpu.atmegang.atmega8.build.mcu=atmega8
|
menu.cpu.atmegang.atmega8.build.mcu=atmega8
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
:101C000012C02BC02AC029C028C027C026C025C0AA
|
||||||
|
:101C100024C023C022C021C020C01FC01EC01DC0C0
|
||||||
|
:101C20001CC01BC01AC011241FBECFE5D4E0DEBF0C
|
||||||
|
:101C3000CDBF10E0A0E6B0E0E8EEFFE102C0059005
|
||||||
|
:101C40000D92A236B107D9F711E0A2E6B0E001C0CB
|
||||||
|
:101C50001D92AA36B107E1F74FC0D2CFEF92FF92A3
|
||||||
|
:101C60000F931F93EE24FF24870113C00894E11CF7
|
||||||
|
:101C7000F11C011D111D81E0E81682E1F8068AE7DA
|
||||||
|
:101C8000080780E0180728F0E0916200F0916300F7
|
||||||
|
:101C900009955F9BEBCF8CB1992787FD90951F919C
|
||||||
|
:101CA0000F91FF90EF9008955D9BFECF8CB9089542
|
||||||
|
:101CB000D5DF803221F484E1F7DF80E1F5DF08959C
|
||||||
|
:101CC0001F93182FCBDF803231F484E1EDDF812FB9
|
||||||
|
:101CD000EBDF80E1E9DF1F9108951F93CF93DF933E
|
||||||
|
:101CE000182FC0E0D0E002C0B9DF2196C117E0F3A1
|
||||||
|
:101CF000DF91CF911F910895CFE5D4E0DEBFCDBF36
|
||||||
|
:101D0000000010BC83E389B988E18AB986E880BD08
|
||||||
|
:101D1000BD9A1092680130E2E0E0F0E02FE088B375
|
||||||
|
:101D2000832788BBCF010197F1F7215027FFF7CF19
|
||||||
|
:101D300020E12093680192DF803381F1813399F4AF
|
||||||
|
:101D40008DDF8032C1F784E1AFDF81E4ADDF86E56E
|
||||||
|
:101D5000ABDF82E5A9DF80E2A7DF89E4A5DF83E5C9
|
||||||
|
:101D6000A3DF80E5C7C0803429F478DF8638B0F07F
|
||||||
|
:101D700075DF14C0813471F471DF803811F482E0B2
|
||||||
|
:101D80001DC1813811F481E019C1823809F015C1F3
|
||||||
|
:101D900082E114C1823421F484E19FDF89DFCBCF5B
|
||||||
|
:101DA000853411F485E0F9CF8035C1F38135B1F385
|
||||||
|
:101DB0008235A1F3853539F451DF809364004EDF1D
|
||||||
|
:101DC00080936500EBCF863519F484E086DFF5C09B
|
||||||
|
:101DD000843609F093C042DF809367013FDF809330
|
||||||
|
:101DE0006601809169018E7F8093690137DF8534B8
|
||||||
|
:101DF00029F480916901816080936901C0E0D0E09D
|
||||||
|
:101E000006E610E005C02ADFF80181938F012196D4
|
||||||
|
:101E10008091660190916701C817D907A0F31EDF72
|
||||||
|
:101E2000803209F088CF8091690180FF1FC020E0D7
|
||||||
|
:101E300030E0E6E6F0E012C0A0916400B0916500E9
|
||||||
|
:101E40008191082EC5D08091640090916500019623
|
||||||
|
:101E500090936500809364002F5F3F4F80916601EF
|
||||||
|
:101E6000909167012817390738F343C0F894E19936
|
||||||
|
:101E7000FECF1127E0916400F0916500EE0FFF1F87
|
||||||
|
:101E8000C6E6D0E0809166019091670180FF01C0B5
|
||||||
|
:101E90000196103051F422D003E000935700E895EA
|
||||||
|
:101EA0001DD001E100935700E8950990199016D0D4
|
||||||
|
:101EB00001E000935700E8951395103258F0112770
|
||||||
|
:101EC0000DD005E000935700E89508D001E100939C
|
||||||
|
:101ED0005700E8953296029739F0DBCF0091570012
|
||||||
|
:101EE00001700130D9F30895103011F00296E7CF58
|
||||||
|
:101EF000112484E1D9DE80E1D7DE1DCF843709F0DB
|
||||||
|
:101F00004BC0ACDE80936701A9DE80936601A6DE3C
|
||||||
|
:101F100090916901853421F49160909369010DC01D
|
||||||
|
:101F20009E7F909369018091640090916500880F75
|
||||||
|
:101F3000991F909365008093640090DE803209F0D1
|
||||||
|
:101F4000FACE84E1B1DEC0E0D0E01EC0809169012C
|
||||||
|
:101F500080FF07C0A0916400B091650031D0802D52
|
||||||
|
:101F600008C081FD07C0E0916400F0916500E49134
|
||||||
|
:101F70008E2F9ADE80916400909165000196909377
|
||||||
|
:101F800065008093640021968091660190916701BD
|
||||||
|
:101F9000C817D907D8F2AFCF853761F45FDE80323A
|
||||||
|
:101FA00009F0C9CE84E180DE8EE17EDE83E97CDE4D
|
||||||
|
:101FB00087E0A0CF863709F0BECE80E081DEBBCEC1
|
||||||
|
:101FC000E199FECFBFBBAEBBE09A11960DB208956A
|
||||||
|
:101FD000E199FECFBFBBAEBB0DBA11960FB6F89418
|
||||||
|
:081FE000E29AE19A0FBE089598
|
||||||
|
:021FE800800077
|
||||||
|
:0400000300001C00DD
|
||||||
|
:00000001FF
|
@ -36,7 +36,7 @@
|
|||||||
#include <avr/pgmspace.h>
|
#include <avr/pgmspace.h>
|
||||||
#include <avr/eeprom.h>
|
#include <avr/eeprom.h>
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
#include <avr/delay.h>
|
#include <util/delay.h>
|
||||||
|
|
||||||
//#define F_CPU 16000000
|
//#define F_CPU 16000000
|
||||||
|
|
||||||
|
@ -1,66 +1,62 @@
|
|||||||
:101C000012C02BC02AC029C028C027C026C025C0AA
|
:101C000012C02CC02BC02AC029C028C027C026C0A3
|
||||||
:101C100024C023C022C021C020C01FC01EC01DC0C0
|
:101C100025C024C023C022C021C020C01FC01EC0B8
|
||||||
:101C20001CC01BC01AC011241FBECFE5D4E0DEBF0C
|
:101C20001DC01CC01BC011241FBECFE5D4E0DEBF09
|
||||||
:101C3000CDBF10E0A0E6B0E0E8EEFFE102C0059005
|
:101C3000CDBF10E0A0E6B0E0E6EAFFE102C005900B
|
||||||
:101C40000D92A236B107D9F711E0A2E6B0E001C0CB
|
:101C40000D92A236B107D9F711E0A2E6B0E001C0CB
|
||||||
:101C50001D92AA36B107E1F74FC0D2CFEF92FF92A3
|
:101C50001D92AA36B107E1F72BD0A3C1D1CF5D9B6E
|
||||||
:101C60000F931F93EE24FF24870113C00894E11CF7
|
:101C6000FECF8CB908955F9BFECF8CB108950F9382
|
||||||
:101C7000F11C011D111D81E0E81682E1F8068AE7DA
|
:101C70001F93082F10E002C0F6DF1F5F1017E0F37C
|
||||||
:101C8000080780E0180728F0E0916200F0916300F7
|
:101C80001F910F9108951F93182FEDDF803231F4CB
|
||||||
:101C900009955F9BEBCF8CB1992787FD90951F919C
|
:101C900084E1E5DF812FE3DF80E1E1DF1F9108953B
|
||||||
:101CA0000F91FF90EF9008955D9BFECF8CB9089542
|
:101CA000E2DF803221F484E1DADF80E1D8DF0895D9
|
||||||
:101CB000D5DF803221F484E1F7DF80E1F5DF08959C
|
:101CB0000F931F93CF93DF93000010BC83E389B988
|
||||||
:101CC0001F93182FCBDF803231F484E1EDDF812FB9
|
:101CC00088E18AB986E880BDBD9A1092680120E05B
|
||||||
:101CD000EBDF80E1E9DF1F9108951F93CF93DF933E
|
:101CD00030E240E050E007C088B3832788BBCA01E8
|
||||||
:101CE000182FC0E0D0E002C0B9DF2196C117E0F3A1
|
:101CE0000197F1F72F5F2031B8F320936801BBDF34
|
||||||
:101CF000DF91CF911F910895CFE5D4E0DEBFCDBF36
|
:101CF000803381F1813399F4B6DF8032C1F784E11A
|
||||||
:101D0000000010BC83E389B988E18AB986E880BD08
|
:101D0000AEDF81E4ACDF86E5AADF82E5A8DF80E212
|
||||||
:101D1000BD9A1092680130E2E0E0F0E02FE088B375
|
:101D1000A6DF89E4A4DF83E5A2DF80E523C1803468
|
||||||
:101D2000832788BBCF010197F1F7215027FFF7CF19
|
:101D200029F4A1DF8638B0F09EDF14C0813471F44D
|
||||||
:101D300020E12093680192DF803381F1813399F4AF
|
:101D30009ADF803811F482E01DC1813811F481E00E
|
||||||
:101D40008DDF8032C1F784E1AFDF81E4ADDF86E56E
|
:101D400019C1823809F015C182E114C1823421F42D
|
||||||
:101D5000ABDF82E5A9DF80E2A7DF89E4A5DF83E5C9
|
:101D500084E18DDFA5DFCBCF853411F485E0F9CFA9
|
||||||
:101D6000A3DF80E5C7C0803429F478DF8638B0F07F
|
:101D60008035C1F38135B1F38235A1F3853539F47E
|
||||||
:101D700075DF14C0813471F471DF803811F482E0B2
|
:101D70007ADF8093640077DF80936500EBCF863550
|
||||||
:101D80001DC1813811F481E019C1823809F015C1F3
|
:101D800019F484E074DFF5C0843609F090C06BDF8D
|
||||||
:101D900082E114C1823421F484E19FDF89DFCBCF5B
|
:101D90008093670168DF80936601809169018E7F7F
|
||||||
:101DA000853411F485E0F9CF8035C1F38135B1F385
|
:101DA0008093690160DF853429F480916901816045
|
||||||
:101DB0008235A1F3853539F451DF809364004EDF1D
|
:101DB0008093690100E010E007C055DFF801EA599F
|
||||||
:101DC00080936500EBCF863519F484E086DFF5C09B
|
:101DC000FF4F80830F5F1F4F8091660190916701E5
|
||||||
:101DD000843609F093C042DF809367013FDF809330
|
:101DD0000817190790F347DF803209F088CF809108
|
||||||
:101DE0006601809169018E7F8093690137DF8534B8
|
:101DE000690180FF1FC000E010E014C0F801EA594B
|
||||||
:101DF00029F480916901816080936901C0E0D0E09D
|
:101DF000FF4F80916400909165006081C5D0809113
|
||||||
:101E000006E610E005C02ADFF80181938F012196D4
|
:101E00006400909165000196909365008093640052
|
||||||
:101E10008091660190916701C817D907A0F31EDF72
|
:101E10000F5F1F4F809166019091670108171907A6
|
||||||
:101E2000803209F088CF8091690180FF1FC020E0D7
|
:101E200028F343C0F894E199FECF1127E0916400B4
|
||||||
:101E300030E0E6E6F0E012C0A0916400B0916500E9
|
:101E3000F0916500EE0FFF1FC6E6D0E080916601CD
|
||||||
:101E40008191082EC5D08091640090916500019623
|
:101E40009091670180FF01C00196103051F422D0BB
|
||||||
:101E500090936500809364002F5F3F4F80916601EF
|
:101E500003E000935700E8951DD001E1009357007F
|
||||||
:101E6000909167012817390738F343C0F894E19936
|
:101E6000E8950990199016D001E000935700E89585
|
||||||
:101E7000FECF1127E0916400F0916500EE0FFF1F87
|
:101E70001395103258F011270DD005E0009357004C
|
||||||
:101E8000C6E6D0E0809166019091670180FF01C0B5
|
:101E8000E89508D001E100935700E8953296029753
|
||||||
:101E90000196103051F422D003E000935700E895EA
|
:101E900039F0DBCF0091570001700130D9F308957C
|
||||||
:101EA0001DD001E100935700E8950990199016D0D4
|
:101EA000103011F00296E7CF112484E15BC0843733
|
||||||
:101EB00001E000935700E8951395103258F0112770
|
:101EB00009F04BC0D8DE80936701D5DE80936601C0
|
||||||
:101EC0000DD005E000935700E89508D001E100939C
|
:101EC000D2DE90916901853421F49160909369018B
|
||||||
:101ED0005700E8953296029739F0DBCF0091570012
|
:101ED0000DC09E7F90936901809164009091650090
|
||||||
:101EE00001700130D9F30895103011F00296E7CF58
|
:101EE000880F991F9093650080936400BCDE803258
|
||||||
:101EF000112484E1D9DE80E1D7DE1DCF843709F0DB
|
:101EF00009F0FDCE84E1B3DE00E010E01EC0809169
|
||||||
:101F00004BC0ACDE80936701A9DE80936601A6DE3C
|
:101F0000690180FF06C0809164009091650034D023
|
||||||
:101F100090916901853421F49160909369010DC01D
|
:101F100008C081FD07C0E0916400F0916500E49184
|
||||||
:101F20009E7F909369018091640090916500880F75
|
:101F20008E2F9DDE809164009091650001969093C4
|
||||||
:101F3000991F909365008093640090DE803209F0D1
|
:101F30006500809364000F5F1F4F80916601909150
|
||||||
:101F4000FACE84E1B1DEC0E0D0E01EC0809169012C
|
:101F4000670108171907D8F20EC0853779F48BDEC0
|
||||||
:101F500080FF07C0A0916400B091650031D0802D52
|
:101F5000803209F0CCCE84E182DE8EE180DE83E93E
|
||||||
:101F600008C081FD07C0E0916400F0916500E49134
|
:101F60007EDE87E07CDE80E17ADEC1CE863709F056
|
||||||
:101F70008E2F9ADE80916400909165000196909377
|
:101F7000BECE80E088DEBBCEE199FECF9FBB8EBB9C
|
||||||
:101F800065008093640021968091660190916701BD
|
:101F8000E09A99278DB30895262FE199FECF9FBB44
|
||||||
:101F9000C817D907D8F2AFCF853761F45FDE80323A
|
:101F90008EBB2DBB0FB6F894E29AE19A0FBE019664
|
||||||
:101FA00009F0C9CE84E180DE8EE17EDE83E97CDE4D
|
:061FA0000895F894FFCF44
|
||||||
:101FB00087E0A0CF863709F0BECE80E081DEBBCEC1
|
:021FA6008000B9
|
||||||
:101FC000E199FECFBFBBAEBBE09A11960DB208956A
|
|
||||||
:101FD000E199FECFBFBBAEBB0DBA11960FB6F89418
|
|
||||||
:081FE000E29AE19A0FBE089598
|
|
||||||
:021FE800800077
|
|
||||||
:0400000300001C00DD
|
:0400000300001C00DD
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
4
hardware/arduino/avr/bootloaders/atmega8/ATmegaBOOT.txt
Normal file
4
hardware/arduino/avr/bootloaders/atmega8/ATmegaBOOT.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Configured with: ../src/configure -v --enable-languages=c,c++ --prefix=/usr/lib --infodir=/usr/share/info --mandir=/usr/share/man --bindir=/usr/bin --libexecdir=/usr/lib --libdir=/usr/lib --enable-shared --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --disable-checking --disable-libssp --build=i686-linux-gnu --host=i686-linux-gnu --target=avr
|
||||||
|
Thread model: single
|
||||||
|
gcc version 4.3.5 (GCC)
|
||||||
|
|
@ -26,7 +26,7 @@ ISPFLASH = $(DIRAVRBIN)/uisp -dpart=ATmega8 $(ISPPARAMS) --erase --upload if=$
|
|||||||
|
|
||||||
|
|
||||||
OBJ = $(PROGRAM).o
|
OBJ = $(PROGRAM).o
|
||||||
OPTIMIZE = -Os
|
OPTIMIZE = -Os -funsigned-char -funsigned-bitfields -fno-inline-small-functions
|
||||||
|
|
||||||
DEFS = -DF_CPU=16000000 -DBAUD_RATE=19200
|
DEFS = -DF_CPU=16000000 -DBAUD_RATE=19200
|
||||||
LIBS =
|
LIBS =
|
||||||
|
1024
hardware/arduino/avr/bootloaders/caterina/Caterina-Esplora.hex
Normal file
1024
hardware/arduino/avr/bootloaders/caterina/Caterina-Esplora.hex
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,6 @@
|
|||||||
|
LUFA: 111009
|
||||||
|
make: 3.81
|
||||||
|
avrdude: 5.11.1
|
||||||
|
avr-libc: 1.6.7
|
||||||
|
binutils-avr: 2.19
|
||||||
|
gcc-avr 4.3.3
|
@ -1,5 +1,5 @@
|
|||||||
:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
|
:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
|
||||||
:200020000C9496010C9496010C9410050C949B050C9496010C9496010C9496010C94960181
|
:200020000C9496010C9496010C94F6040C947D050C9496010C9496010C9496010C949601BA
|
||||||
:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
|
:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
|
||||||
:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
|
:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
|
||||||
:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
|
:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
|
||||||
@ -20,12 +20,12 @@
|
|||||||
:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
|
:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
|
||||||
:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
|
:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
|
||||||
:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
|
:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
|
||||||
:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B500004C042E072C0811241FBE36
|
:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000032041007150811241FBE85
|
||||||
:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0EEECF2E102C005900D92AC32B107D9F711E061
|
:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0EAF2E102C005900D92AC32B107D9F711E071
|
||||||
:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E946109C63DF0
|
:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E944A09C63D07
|
||||||
:20032000D107C9F70E9486030C9465090C9400008091000161E00E94530364E873E080E002
|
:20032000D107C9F70E946C030C944E090C9400008091000161E00E94390368EE73E080E043
|
||||||
:2003400090E00E94FD018091000160E00E9453036CE474E080E090E00E94FD010895809181
|
:2003400090E00E94FD018091000160E00E94390368EE73E080E090E00E94FD010895809196
|
||||||
:20036000000161E00E94B60208951F920F920FB60F9211242F933F938F939F93AF93BF93DB
|
:20036000000161E00E94AC0208951F920F920FB60F9211242F933F938F939F93AF93BF93E5
|
||||||
:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
|
:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
|
||||||
:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
|
:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
|
||||||
:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
|
:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
|
||||||
@ -37,119 +37,119 @@
|
|||||||
:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
|
:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
|
||||||
:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
|
:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
|
||||||
:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
|
:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
|
||||||
:2004E0008083E0E8F0E0808181608083E1EBF0E0808184608083E0EBF0E080818160808378
|
:2004E0008083E0E8F0E0808181608083E1E9F0E0808182608083808181608083E0E9F0E07E
|
||||||
:20050000E1E9F0E0808182608083808181608083E0E9F0E0808181608083E1ECF0E080815A
|
:20050000808181608083E1ECF0E0808184608083808182608083808181608083E3ECF0E007
|
||||||
:2005200084608083808182608083808181608083E3ECF0E0808181608083E0ECF0E08081E8
|
:20052000808181608083E0ECF0E0808182608083E2ECF0E0808181608083EAE7F0E080812F
|
||||||
:2005400082608083E2ECF0E0808181608083EAE7F0E08081846080838081826080838081C3
|
:20054000846080838081826080838081816080838081806880830895CF93DF93482F50E0E5
|
||||||
:20056000816080838081806880830895CF93DF93482F50E0CA018C509F4FFC0134914A52A0
|
:20056000CA018C509F4FFC0134914A525F4FFA018491882369F190E0880F991FFC01E455D0
|
||||||
:200580005F4FFA018491882369F190E0880F991FFC01E455FF4FA591B491FC01E654FF4F55
|
:20058000FF4FA591B491FC01E654FF4FC591D491662351F42FB7F8948C91932F9095892362
|
||||||
:2005A000C591D491662351F42FB7F8948C91932F909589238C93888189230BC0623061F40A
|
:2005A0008C93888189230BC0623061F42FB7F8948C91932F909589238C938881832B8883B2
|
||||||
:2005C0002FB7F8948C91932F909589238C938881832B88832FBF06C09FB7F8948C91832BB7
|
:2005C0002FBF06C09FB7F8948C91832B8C939FBFDF91CF910895883071F1893068F48230EF
|
||||||
:2005E0008C939FBFDF91CF9108958730C1F1883080F48330F9F0843030F4813029F182308B
|
:2005E00031F1833020F4813009F042C01DC0833089F08430E9F512C08B3059F18C3028F41C
|
||||||
:2006000009F050C024C08430C9F0863009F04AC022C08A3091F18B3030F4883031F1893037
|
:200600008930E9F08A30A1F51EC08C3031F18E3079F529C0809180008F7703C0809180003C
|
||||||
:2006200009F040C026C08C3091F18C3060F18E30C9F533C0809180008F7703C08091800036
|
:200620008F7D80938000089584B58F7702C084B58F7D84BD0895809190008F7707C08091DB
|
||||||
:200640008F7D80938000089584B58F7702C084B58F7D84BD08958091B0008F7703C080919F
|
:2006400090008F7D03C080919000877F8093900008958091C0008F7703C08091C0008F7DDD
|
||||||
:20066000B0008F7D8093B0000895809190008F7707C0809190008F7D03C080919000877FD9
|
:200660008093C00008958091C200877F8093C2000895FF920F931F93F62E482F50E0CA0144
|
||||||
:200680008093900008958091C0008F7703C08091C0008F7D8093C00008958091C200877F5A
|
:200680008E5E9E4FFC012491CA018C509F4FFC0114914A525F4FFA0104910023C9F022239D
|
||||||
:2006A0008093C2000895FF920F931F93F62E482F50E0CA018E5E9E4FFC012491CA018C501B
|
:2006A00019F0822F0E94EB02E02FF0E0EE0FFF1FE654FF4FA591B4919FB7F894FF2021F4DE
|
||||||
:2006C0009F4FFC0114914A525F4FFA0104910023C9F0222319F0822F0E94F502E02FF0E05D
|
:2006C0008C911095812302C08C91812B8C939FBF1F910F91FF900895CF93DF930E94560262
|
||||||
:2006E000EE0FFF1FE654FF4FA591B4919FB7F894FF2021F48C911095812302C08C91812BD5
|
:2006E0008DE391E00E9433040E94AF01C0E0D0E00E9498012097E1F30E940000F9CF282F17
|
||||||
:200700008C939FBF1F910F91FF900895CF93DF930E9456028DE391E00E944D040E94AF01EC
|
:20070000809137018823C1F057FF1AC015C02898909336018091F1008193E217F307B9F75C
|
||||||
:20072000C0E0D0E00E9498012097E1F30E940000F9CF282F809137018823C1F057FF1AC00D
|
:200720004115510539F08091F200882319F48BE68093E800AFBF02C04FEF5FEFCA01089599
|
||||||
:2007400015C02898909336018091F1008193E217F307B9F74115510539F08091F20088236E
|
:20074000AFB7F89427702093E9008091F200282F30E0241735070CF4A901FB019B01240F1E
|
||||||
:2007600019F48BE68093E800AFBF02C04FEF5FEFCA010895AFB7F89427702093E9008091A6
|
:20076000311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F41E050E00E947F03019712
|
||||||
:20078000F200282F30E0241735070CF4A901FB019B01240F311D94E6DACFDF93CF930F922E
|
:2007800019F02FEF3FEF03C08981282F30E0C9010F90CF91DF910895FF920F931F93F82EEF
|
||||||
:2007A000CDB7DEB7BE016F5F7F4F41E050E00E949903019719F02FEF3FEF03C08981282F25
|
:2007A000142F052F40913A0150913B01212F302FC901DC01FB016EEF29C0F7FE02C0949125
|
||||||
:2007C00030E0C9010F90CF91DF910895FF920F931F93F82E142F052F40913A0150913B0188
|
:2007C00001C09081209138013091390124173507ACF48091E8008570E1F38091E80082FF0F
|
||||||
:2007E000212F302FC901DC01FB016EEF29C0F7FE02C0949101C090812091380130913901CE
|
:2007E00003C02FEF3FEF17C09093F100C90101968F739070892B11F46093E8002F5F3F4FEC
|
||||||
:2008000024173507ACF48091E8008570E1F38091E80082FF03C02FEF3FEF17C09093F1008B
|
:200800003093390120933801119731961097A9F6812F902F9C01C9011F910F91FF900895E8
|
||||||
:20082000C90101968F739070892B11F46093E8002F5F3F4F3093390120933801119731964D
|
:200820009C018091E80082FFFCCFF901260F311D03C08091F1008193E217F307D1F7289805
|
||||||
:200840001097A9F6812F902F9C01C9011F910F91FF9008959C018091E80082FFFCCFF90124
|
:2008400084E6809336018BEF8093E800CB0108958093E9008091F200882319F08AE38093D3
|
||||||
:20086000260F311D03C08091F1008193E217F307D1F7289884E6809336018BEF8093E80078
|
:20086000E800089508951092370181E08093D70080EA8093D80082E189BD09B400FEFDCFAC
|
||||||
:20088000CB0108958093E9008091F200882319F08AE38093E800089508951092370181E05F
|
:2008800061E070E080E090E00E94FD0180E98093D8008CE08093E2001092E000559A209A77
|
||||||
:2008A0008093D70080EA8093D80082E189BD09B400FEFDCF61E070E080E090E00E94FD01C8
|
:2008A00008955F926F927F928F929F92AF92BF92CF92DF92EF92FF920F931F93CF93DF93A8
|
||||||
:2008C00080E98093D8008CE08093E2001092E000559A209A08955F926F927F928F929F9246
|
:2008C000E82E842E752E80913701882371F18B01242F352FC901EC017AEFF72E67E0962EC4
|
||||||
:2008E000AF92BF92CF92DF92EF92FF920F931F93CF93DF93E82E842E752E809137018823FB
|
:2008E0009E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3632E20E4C22ED12CC82259
|
||||||
:2009000071F18B01242F352FC901EC017AEFF72E67E0962E9E2050E4552E8E2D90E040E220
|
:20090000D92258C09FB7F8949092E9008091E80085FD02C020E004C08091F200252D281B3E
|
||||||
:20092000A42EB12CA822B9223AE3632E20E4C22ED12CC822D92258C09FB7F8949092E900DA
|
:200920009FBF222361F4FA9419F42FEF3FEF4DC061E070E080E090E00E94FD013BC0822F1E
|
||||||
:200940008091E80085FD02C020E004C08091F200252D281B9FBF222361F4FA9419F42FEF4D
|
:2009400090E0C817D9070CF42C2FC21BD1094FB7F8949092E900A114B10421F406C01092D2
|
||||||
:200960003FEF4DC061E070E080E090E00E94FD013BC0822F90E0C817D9070CF42C2FC21B28
|
:20096000F10021502223D9F719C0E7FC03C0F801922F10C0C801322F06C0FC010196E491FE
|
||||||
:20098000D1094FB7F8949092E900A114B10421F406C01092F10021502223D9F719C0E7FCC6
|
:20098000E093F10031503323C1F706C081918093F10091509923D1F7020F111D8091E800EB
|
||||||
:2009A00003C0F801922F10C0C801322F06C0FC010196E491E093F10031503323C1F706C038
|
:2009A00085FF05C0209729F4C114D10411F06092E8004FBF209709F0A5CF5D9884E68093F1
|
||||||
:2009C00081918093F10091509923D1F7020F111D8091E80085FF05C0209729F4C114D1049D
|
:2009C0003501282D372DC9019C01C901DF91CF911F910F91FF90EF90DF90CF90BF90AF906D
|
||||||
:2009E00011F06092E8004FBF209709F0A5CF5D9884E680933501282D372DC9019C01C90158
|
:2009E0009F908F907F906F905F9008951F920F920FB60F9211242F933F934F935F936F93B8
|
||||||
:200A0000DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F907F906F905F90089564
|
:200A00007F938F939F93AF93BF93EF93FF938091E1001092E100982F83FF0FC01092E900B0
|
||||||
:200A20001F920F920FB60F9211241F932F933F934F935F936F937F938F939F93AF93BF93B3
|
:200A200081E08093EB001092EC0082E38093ED001092370188E08093F00092FF34C083E037
|
||||||
:200A4000EF93FF938091E1001092E100982F83FF0FC01092E90081E08093EB001092EC007D
|
:200A40008093E9008091F200882319F08AE38093E8008FB7F89492E09093E9009091F20018
|
||||||
:200A600082E38093ED001092370188E08093F00092FF36C083E08093E9008091F200882338
|
:200A60008FBF992321F082E891E00E94530780913501882351F080913501815080933501F0
|
||||||
:200A800049F08AE38093E80005C082E891E00E94710701C012E09FB7F8941093E9008091C9
|
:200A800080913501882309F45D9A80913601882351F0809136018150809336018091360191
|
||||||
:200AA000F2009FBF882389F780913501882351F08091350181508093350180913501882335
|
:200AA000882309F4289AFF91EF91BF91AF919F918F917F916F915F914F913F912F910F90CD
|
||||||
:200AC00009F45D9A80913601882351F08091360181508093360180913601882309F4289AD9
|
:200AC0000FBE0F901F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F1F4FC8019D
|
||||||
:200AE000FF91EF91BF91AF919F918F917F916F915F914F913F912F911F910F900FBE0F90DB
|
:200AE0000E947907C8010E941209898190E00F90CF91DF911F910F9108951F920F920FB661
|
||||||
:200B00001F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F1F4FC8010E9490078F
|
:200B00000F921124EF92FF921F932F933F934F935F936F937F938F939F93AF93BF93EF9355
|
||||||
:200B2000C8010E942909898190E00F90CF91DF911F910F9108951F920F920FB60F92112455
|
:200B2000FF93DF93CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC1FE01319679
|
||||||
:200B4000EF92FF921F932F933F934F935F936F937F938F939F93AF93BF93EF93FF93DF93E7
|
:200B40009E01275F3F4F03C08091F1008193E217F307D1F7289884E68093360182EF809356
|
||||||
:200B6000CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC1FE0131969E01275F18
|
:200B6000E800998197FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0C901807672
|
||||||
:200B80003F4F03C08091F1008193E217F307D1F7289884E68093360182EF8093E800998139
|
:200B80009070892B09F0C2C08A81882329F41092F1001092F100D6C0813009F4D3C08330A3
|
||||||
:200BA00097FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0C90180769070892B80
|
:200BA00009F4D0C0853049F48091E80080FFFCCF8B8180688093E300C5C0863009F07CC019
|
||||||
:200BC00009F0C2C08A81882329F41092F1001092F100D6C0813009F4D3C0833009F4D0C08A
|
:200BC0001C81EF80F8841230C1F51092E900109239011092380110923B0110923A010E94F6
|
||||||
:200BE000853049F48091E80080FFFCCF8B8180688093E300C5C0863009F07CC01C81EF805A
|
:200BE000640599E0FE013996DF01292F1D922A95E9F799871A8791E09E8790E8988B9AEF44
|
||||||
:200C0000F8841230C1F51092E900109239011092380110923B0110923A010E94820599E0C1
|
:200C0000998B2091380130913901275F3F4F3C872B878D871092E9001092390110923801EC
|
||||||
:200C2000FE013996DF01292F1D922A95E9F799871A8791E09E8790E8988B9AEF998B209110
|
:200C2000F0923B01E0923A0180E0BF0149E050E00E94CC030E94640585C01092E9001092E2
|
||||||
:200C4000380130913901275F3F4F3C872B878D871092E9001092390110923801F0923B01C3
|
:200C4000390110923801F0923B01E0923A01123241F482E290E00E940A09892B09F476C02B
|
||||||
:200C6000E0923A0180E0BF0149E050E00E94E6030E94820585C01092E9001092390110924C
|
:200C600071C0113079F488E0E816F10419F481E080933C0180913C01882309F06BC0ECE68D
|
||||||
:200C80003801F0923B01E0923A01123241F482E290E00E942109892B09F476C071C011303E
|
:200C8000F1E013C0133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3F1E005C00A
|
||||||
:200CA00079F488E0E816F10419F481E080933C0180913C01882309F06BC0ECE6F1E013C01B
|
:200CA000813009F053C0E4E5F1E0449180E8BF0150E00E94CC0346C0873009F447C08830C6
|
||||||
:200CC000133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3F1E005C0813009F0C4
|
:200CC00021F481E08093F1003DC08930D9F523703070232BD9F5E1E9F1E091E031E026E3A1
|
||||||
:200CE00053C0E4E5F1E0449180E8BF0150E00E94E60346C0873009F447C0883021F481E0A0
|
:200CE0009093E9003093EB0084918093EC002093ED009F5F3196953099F78EE78093EA00FA
|
||||||
:200D00008093F1003DC08930D9F523703070232BD9F5E1E9F1E091E031E026E39093E900CA
|
:200D00001092EA008B81809337011CC08F8198851092E900109239011092380190933B0146
|
||||||
:200D20003093EB0084918093EC002093ED009F5F3196953099F78EE78093EA001092EA0039
|
:200D200080933A018D81882329F4CE0101960E94850706C0823051F4CE0101960E94DB0754
|
||||||
:200D40008B81809337011CC08F8198851092E900109239011092380190933B0180933A0144
|
:200D4000882321F08EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DEBFCDBF37
|
||||||
:200D60008D81882329F4CE0101960E949C0706C0823051F4CE0101960E94F207882321F078
|
:200D6000CF91DF91FF91EF91BF91AF919F918F917F916F915F914F913F912F911F91FF9004
|
||||||
:200D80008EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DEBFCDBFCF91DF91E3
|
:200D8000EF900F900FBE0F901F90189520917E0130917F018091800190918101281B390B40
|
||||||
:200DA000FF91EF91BF91AF919F918F917F916F915F914F913F912F911F91FF90EF900F9076
|
:200DA0002F733070C901089520917E0130917F0180918001909181012817390719F42FEF3A
|
||||||
:200DC0000FBE0F901F90189520917E0130917F018091800190918101281B390B2F733070DC
|
:200DC0003FEF09C0E0918001F0918101E25CFE4F8081282F30E0C901089520917E013091DC
|
||||||
:200DE000C901089520917E0130917F0180918001909181012817390719F42FEF3FEF09C045
|
:200DE0007F0180918001909181012817390719F42FEF3FEF13C0E0918001F0918101E25C60
|
||||||
:200E0000E0918001F0918101E25CFE4F8081282F30E0C901089520917E0130917F01809101
|
:200E0000FE4F2081809180019091810101968F739070909381018093800130E0C901089566
|
||||||
:200E20008001909181012817390719F42FEF3FEF13C0E0918001F0918101E25CFE4F2081C2
|
:200E2000109285011092840188EE93E0A0E0B0E08093860190938701A0938801B09389019C
|
||||||
:200E4000809180019091810101968F739070909381018093800130E0C901089510928501EC
|
:200E400080E191E0909383018093820108950F931F93DF93CF930F92CDB7DEB78C0169838B
|
||||||
:200E60001092840188EE93E0A0E0B0E08093860190938701A0938801B093890180E191E0B2
|
:200E600080910901882369F083E0BE016F5F7F4F41E050E00E9451041816190614F49C015B
|
||||||
:200E8000909383018093820108950F931F93DF93CF930F92CDB7DEB78C0169838091090102
|
:200E800007C081E090E0F8019383828320E030E0C9010F90CF91DF911F910F91089583E00D
|
||||||
:200EA000882369F083E0BE016F5F7F4F41E050E00E946B041816190614F49C0107C081E0F4
|
:200EA0000E9428040895CF93DF9312C082E00E94B3032FEF8F3F9207C9F0E0917E01F091B8
|
||||||
:200EC00090E0F8019383828320E030E0C9010F90CF91DF911F910F91089583E00E9442040D
|
:200EC0007F01E25CFE4F8083D0937F01C0937E01C0917E01D0917F012196CF73D070809154
|
||||||
:200EE000089582E00E94CD03482F20917E0130917F012F5F3F4F2F73307080918001909188
|
:200EE000800190918101C817D90701F7DF91CF910895FC0180818E5F808380E865E971E0B5
|
||||||
:200F000081012817390759F0E0917E01F0917F01E25CFE4F408330937F0120937E01089536
|
:200F000042E450E00E94CC030895FC0181819081913A59F4813209F04CC080E062E071E09A
|
||||||
:200F2000FC0180818E5F808380E865E971E042E450E00E94E6030895FC0181819081913A63
|
:200F200047E050E00E94CC0342C0913209F041C0803239F482E091E067E070E00E9410042B
|
||||||
:200F400059F4813209F04CC080E062E071E047E050E00E94E60342C0913209F041C0803246
|
:200F400036C0823209F035C08281809309018091020190910301A0910401B0910501805B48
|
||||||
:200F600039F482E091E067E070E00E942A0436C0823209F035C0828180930901809102013E
|
:200F60009440A040B04019F58091090180FD12C087E797E790930108809300082BE088E1AE
|
||||||
:200F800090910301A0910401B0910501805B9440A040B04019F58091090180FD12C087E74A
|
:200F800090E00FB6F894A895809360000FBE209360000DC088E10FB6F89480936000109264
|
||||||
:200FA00097E790930108809300082BE088E190E00FB6F894A895809360000FBE20936000A7
|
:200FA00060000FBEA895109201081092000881E0089580E00895FC0191818081813A31F487
|
||||||
:200FC0000DC088E10FB6F89480936000109260000FBEA895109201081092000881E00895B8
|
:200FC000913089F080E0933089F40DC0813269F49B3021F4828180930A0105C09A3029F4AD
|
||||||
:200FE00080E00895FC0191818081813A31F4913089F080E0933089F40DC0813269F49B3082
|
:200FE000828180930B0181E0089580E00895EF92FF920F931F938C01E62EDC01ED91FC91E5
|
||||||
:2010000021F4828180930A0105C09A3029F4828180930B0181E0089580E00895EF92FF92BF
|
:201000000480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D09958F2D90E0E8
|
||||||
:201020000F931F938C01E62EDC01ED91FC910480F581E02D0995F82ED801ED91FC9106809E
|
:201020001F910F91FF90EF90089510929001109294011092930182E291E090939201809377
|
||||||
:20104000F781E02DC8016E2D09958F2D90E01F910F91FF90EF900895109290011092940178
|
:2010400091010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A0184E0BE0137
|
||||||
:201060001092930182E291E090939201809391010895EF92FF920F931F93DF93CF930F9292
|
:201060006F5F7F4F41E050E00E94510484E4B801A7010E9451040F90CF91DF911F910F910D
|
||||||
:20108000CDB7DEB789838B017A0184E0BE016F5F7F4F41E050E00E946B0484E4B801A7013A
|
:20108000FF90EF90089582E048E050E00E9422080895FC01168217821086118612861386F6
|
||||||
:2010A0000E946B040F90CF91DF911F910F91FF90EF90089582E048E050E00E94390808957B
|
:2010A00014823496BF010E9443080895DC01683810F0685829C0E62FF0E067FF13C0E0580A
|
||||||
:2010C000FC0116821782108611861286138614823496BF010E945A080895DC01683810F046
|
:2010C000F04081E090E002C0880F991FEA95E2F7809514962C911497282314962C93149720
|
||||||
:2010E000685829C0E62FF0E067FF13C0E058F04081E090E002C0880F991FEA95E2F7809572
|
:2010E00060E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9114978D7F29
|
||||||
:2011000014962C911497282314962C93149760E012C0EB5AFD4F6491662319F420E030E020
|
:2011000014968C9314976F77FD0190E0662321F08681861709F416829F5F31969630B1F701
|
||||||
:201120001DC067FF08C014968C9114978D7F14968C9314976F77FD0190E0662321F08681BD
|
:20112000CD011496BD010E94430821E030E0C9010895CF93DF93DC01683810F0685825C01E
|
||||||
:20114000861709F416829F5F31969630B1F7CD011496BD010E945A0821E030E0C901089578
|
:20114000E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F714962C911497BE
|
||||||
:20116000CF93DF93DC01683810F0685825C0E62FF0E067FF12C0E058F04081E090E002C061
|
:20116000282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C014968C91149780
|
||||||
:20118000880F991FEA95E2F714962C911497282B14962C93149760E00FC0EB5AFD4F64919A
|
:20118000826014968C9314976F7716968C9116978617A9F117968C911797861781F1189631
|
||||||
:2011A0006623D9F167FF08C014968C911497826014968C9314976F7716968C9116978617ED
|
:2011A0008C911897861759F119968C911997861731F11A968C911A97861709F11B968C915E
|
||||||
:2011C000A9F117968C911797861781F118968C911897861759F119968C911997861731F152
|
:2011C0001B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C09F5F31964E
|
||||||
:2011E0001A968C911A97861709F11B968C911B978617E1F0ED01E0E0F0E09E2F8E818823E7
|
:2011E0002196E630F10591F7963049F481E090E013969C938E93129720E030E007C0CD0189
|
||||||
:2012000021F4EA0FFB1F668306C09F5F31962196E630F10591F7963049F481E090E013966A
|
:201200001496BD010E94430821E030E0C901DF91CF91089580E867ED71E045E650E00E9427
|
||||||
:201220009C938E93129720E030E007C0CD011496BD010E945A0821E030E0C901DF91CF91F9
|
:20122000CC030895FC0180818F5F808380E86CE372E049E150E00E94CC030895CF92DF9210
|
||||||
:20124000089580E867ED71E045E650E00E94E6030895FC0180818F5F808380E86CE372E069
|
:20124000EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D916D01D701A6
|
||||||
:2012600049E150E00E94E6030895CF92DF92EF92FF920F931F93CF93DF937C016B018A016C
|
:20126000ED91FC910190F081E02DC7010995C80FD91F015010400115110571F7CE01DF91AB
|
||||||
:20128000C0E0D0E00FC0D6016D916D01D701ED91FC910190F081E02DC7010995C80FD91FC5
|
:20128000CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D0994F894FFCFEC
|
||||||
:2012A000015010400115110571F7CE01DF91CF911F910F91FF90EF90DF90CF900895EE0F94
|
:2012A0000D0000E100000000000001010000000027071E09C606ED06D4064F0753070000A0
|
||||||
:2012C000FF1F0590F491E02D0994F894FFCF0D0000E1000000000000010100000000450796
|
:2012C0000000F7071E09990856084908FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
|
||||||
:2012E0003509E4060B07F2066D077107000000000E083509B0086D086008FFFFFFFFFFFFED
|
:2012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
|
||||||
:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
|
:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
|
||||||
:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
|
:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
|
||||||
:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
|
:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
|
||||||
@ -895,13 +895,13 @@
|
|||||||
:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
|
:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
|
||||||
:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
|
:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
|
||||||
:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
|
:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
|
||||||
:2070200060C000005EC00000EEC400005AC0000058C0000056C0000054C0000052C00000F2
|
:2070200060C000005EC00000F2C400005AC0000058C0000056C0000054C0000052C00000EE
|
||||||
:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
|
:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
|
||||||
:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
|
:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
|
||||||
:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
|
:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
|
||||||
:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0EAE2B5
|
:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E2E3BC
|
||||||
:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
|
:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
|
||||||
:2070E00022C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEF
|
:2070E00026C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEB
|
||||||
:20710000289A0C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA6
|
:20710000289A0C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA6
|
||||||
:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
|
:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
|
||||||
:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
|
:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
|
||||||
@ -928,14 +928,14 @@
|
|||||||
:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
|
:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
|
||||||
:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
|
:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
|
||||||
:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
|
:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
|
||||||
:2074400018C0D801C701B695A7959795879555D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF6
|
:2074400018C0D801C701B695A7959795879559D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF2
|
||||||
:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
|
:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
|
||||||
:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
|
:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
|
||||||
:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
|
:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
|
||||||
:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
|
:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
|
||||||
:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
|
:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
|
||||||
:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
|
:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
|
||||||
:20752000C701F3D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE0190934D
|
:20752000C701F7D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE01909349
|
||||||
:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
|
:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
|
||||||
:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
|
:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
|
||||||
:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
|
:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
|
||||||
@ -943,82 +943,82 @@
|
|||||||
:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
|
:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
|
||||||
:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
|
:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
|
||||||
:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
|
:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
|
||||||
:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70165D4E2
|
:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70169D4DE
|
||||||
:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
|
:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
|
||||||
:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
|
:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
|
||||||
:20768000B695A7959795879538D4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010E
|
:20768000B695A795979587953CD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010A
|
||||||
:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
|
:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
|
||||||
:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
|
:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
|
||||||
:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
|
:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
|
||||||
:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
|
:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
|
||||||
:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
|
:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
|
||||||
:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E007D28091E8008B770F
|
:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00BD28091E8008B770B
|
||||||
:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E059D2809196
|
:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05DD2809192
|
||||||
:20778000E8008E778093E800089582E061EC42E0B1D083E061E842E1ADD084E060E842E1F7
|
:20778000E8008E778093E800089582E061EC42E0B5D083E061E842E1B1D084E060E842E1EF
|
||||||
:2077A000A9C084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB643
|
:2077A000ADC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB63F
|
||||||
:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
|
:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
|
||||||
:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100ECC040911A
|
:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100F0C0409116
|
||||||
:20780000000850910108109201081092000824B714BE88E10FB6F894809360001092600045
|
:20780000000850910108109201081092000894B714BE88E10FB6F8948093600010926000D5
|
||||||
:207820000FBE822F90E0FC01E270F07021FD14C0213019F4859194910BC0283069F480918F
|
:207820000FBE292F30E0F901E270F07091FD18C090FF05C0859194918F5F9F4F81F423FFFF
|
||||||
:20784000090190910A014817590731F0859194918F5F9F4F09F046DCA4DF78941092AD0101
|
:207840000FC08091090190910A014817590741F0E0E0F0E0859194918F5F9F4F09F042DC64
|
||||||
:207860001092AC010CC0E2DC36D38091AC019091AD0181549F4110F01092140145DC8091FB
|
:20786000A0DF78941092AD011092AC010CC0DEDC36D38091AC019091AD0181549F4110F00D
|
||||||
:207880001401882381F78091E00081608093E00029DC80E090E00895FA01923049F09330C0
|
:207880001092140141DC80911401882381F78091E00081608093E00025DC80E090E0089598
|
||||||
:2078A00061F09130F9F485E191E022E130E01EC087E291E02EE330E019C0882329F485E6FA
|
:2078A000FA01923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E04D
|
||||||
:2078C00091E024E030E012C0813029F489E691E022E230E00BC0823029F48DE891E028E106
|
:2078C00019C0882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823006
|
||||||
:2078E00030E004C080E090E020E030E091838083C90108958093E9008091EB00816080936A
|
:2078E00029F48DE891E028E130E004C080E090E020E030E091838083C90108958093E9004E
|
||||||
:20790000EB001092ED006093EC004093ED008091EE00881F8827881F08958091B601882342
|
:207900008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F62
|
||||||
:207920008CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093E80008958EB361
|
:2079200008958091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B772A
|
||||||
:20794000882349F08091E80080FFF9CF8091E8008E778093E8000895EF92FF920F931F9307
|
:207940008093E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E800089594
|
||||||
:2079600045D04CD008ED10E0F80180818F77808380818068808380818F7D808319BC1EBA45
|
:20796000EF92FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380819B
|
||||||
:207980001092B40180EEE82EF12CF70180818B7F8083F80180818160808380E060E042E049
|
:207980008F7D808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816052
|
||||||
:2079A000A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808188608083F701808125
|
:2079A000808380E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808144
|
||||||
:2079C0008E7F8083F8018081806180831F910F91FF90EF900895E7EDF0E080818160808335
|
:2079C00088608083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7ED06
|
||||||
:2079E0008AE482BF81E08093B501B6CFE8EDF0E080818E7F80831092E20008951092DA00D6
|
:2079E000F0E08081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F808310921C
|
||||||
:207A00001092E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F9389
|
:207A0000E20008951092DA001092E10008951F920F920FB60F9211242F933F934F935F93F6
|
||||||
:207A2000AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C08091DA008E7F80930F
|
:207A20006F937F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C0B2
|
||||||
:207A4000DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF81E08EBB3BD203C0C7
|
:207A40008091DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF36
|
||||||
:207A600019BC1EBA37D28091E10080FF17C08091E20080FF13C08091E2008E7F8093E200CE
|
:207A600081E08EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C0809138
|
||||||
:207A80008091E20080618093E2008091D80080628093D80019BC85E08EBB1CD28091E10004
|
:207A8000E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E049
|
||||||
:207AA00084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEFDCF8091D8008F7D2D
|
:207AA0008EBB1CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEC5
|
||||||
:207AC0008093D8008091E1008F7E8093E1008091E2008F7E8093E2008091E20081608093EC
|
:207AC000FDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E20012
|
||||||
:207AE000E2008091B401882331F48091E30087FD02C081E001C084E08EBBECD18091E10056
|
:207AE0008091E20081608093E2008091B401882331F48091E30087FD02C081E001C084E067
|
||||||
:207B000083FF21C08091E20083FF1DC08091E100877F8093E10082E08EBB1092B4018091B1
|
:207B00008EBBECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E06A
|
||||||
:207B2000E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E20080E060E005
|
:207B20008EBB1092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E2008061E9
|
||||||
:207B400042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F914F913F912F910F90B6
|
:207B40008093E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F9130
|
||||||
:207B60000FBE0F901F9018959C014091BC015091BD014617570718F4F90190E044C06115C8
|
:207B60004F913F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F49D
|
||||||
:207B8000710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF8EB3882309F444C006
|
:207B8000F90190E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF0F
|
||||||
:207BA000853009F443C08091E80083FF02C081E008958091E80082FD31C08091E80080FFF4
|
:207BA0008EB3882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD70
|
||||||
:207BC00022C08091F3009091F200782F60E0292F30E0262B372B07C081918093F10041503C
|
:207BC00031C08091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C07A
|
||||||
:207BE00050402F5F3F4F4115510519F02830310598F390E02830310509F491E08091E800A6
|
:207BE00081918093F100415050402F5F3F4F4115510519F02830310598F390E02830310566
|
||||||
:207C00008E778093E8004115510531F6992321F605C08EB3882341F0853041F08091E800FD
|
:207C000009F491E08091E8008E778093E8004115510531F6992321F605C08EB3882341F075
|
||||||
:207C200082FFF7CF80E0089582E0089583E008959C016115710529F48091E8008B7780934D
|
:207C2000853041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F47C
|
||||||
:207C4000E800F90126C08EB3882391F1853091F18091E80083FF02C081E008958091E80083
|
:207C40008091E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C06C
|
||||||
:207C600082FFF1CF06C08091F10081936150704059F02091F3008091F200322F20E090E0C5
|
:207C600081E008958091E80082FFF1CF06C08091F10081936150704059F02091F300809191
|
||||||
:207C8000822B932B892B79F78091E8008B778093E80061157105B9F605C08EB3882341F0E2
|
:207C8000F200322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F601
|
||||||
:207CA000853041F08091E80080FFF7CF80E0089582E0089583E008950F931F93DF93CF937C
|
:207CA00005C08EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E00895C2
|
||||||
:207CC00000D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F728DD8091E80083FF3A
|
:207CC0000F931F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F792
|
||||||
:207CE000E4C08091B6019091B701953009F46DC0963040F4913081F1913070F0933009F046
|
:207CE00024DD8091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F1A7
|
||||||
:207D0000D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC0803809F4C6C082380B
|
:207D0000913070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC023
|
||||||
:207D200009F0C3C08091BA0187708093E9008091EB001092E9002091E800277F2093E800A7
|
:207D2000803809F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091DB
|
||||||
:207D400090E025E0969587952A95E1F781708093F1001092F10087C0882319F0823009F0A2
|
:207D4000E800277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0D8
|
||||||
:207D6000A4C08F71823009F0A0C08091B801882331F52091BA01277009F497C02093E90006
|
:207D6000882319F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277097
|
||||||
:207D80008091EB0080FF1BC0933021F48091EB00806213C08091EB0080618093EB0081E0C8
|
:207D800009F497C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB0018
|
||||||
:207DA00090E002C0880F991F2A95E2F78093EA001092EA008091EB0088608093EB0010929D
|
:207DA00080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB00E5
|
||||||
:207DC000E9008091E800877F51C0882309F06DC01091B8011F770FB7F8948091E800877F98
|
:207DC00088608093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB79B
|
||||||
:207DE0008093E8009ADD8091E80080FFFCCF8091E3008078812B8093E30080688093E30062
|
:207DE000F8948091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B809398
|
||||||
:207E0000112311F482E001C083E08EBB0FBF4DC08058823008F049C08091B8019091B9014F
|
:207E0000E30080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C033
|
||||||
:207E20006091BA01AE014F5F5F4F36DDBC01009709F43BC08091E800877F8093E800898128
|
:207E20008091B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E8008E
|
||||||
:207E40009A8192DE8091E8008B778093E8002DC0803859F58091E800877F8093E8008091A3
|
:207E4000877F8093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800AA
|
||||||
:207E6000B4018093F1008091E8008E778093E80054DD1BC08823C9F49091B8019230A8F4A4
|
:207E6000877F8093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F4CA
|
||||||
:207E80008091E800877F8093E8009093B40145DD8091B401882331F48091E30087FD02C01E
|
:207E80009091B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F420
|
||||||
:207EA00081E001C084E08EBB70DC8091E80083FF0AC08091EB0080628093EB008091E8008D
|
:207EA0008091E30087FD02C081E001C084E08EBB6CDC8091E80083FF0AC08091EB0080624E
|
||||||
:207EC000877F8093E8000F900F90CF91DF911F910F91089508951F938EB3882361F0109179
|
:207EC0008093EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F9360
|
||||||
:207EE000E9001092E9008091E80083FF01C0E4DE17701093E9001F910895F999FECF92BD02
|
:207EE0008EB3882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F916F
|
||||||
:207F000081BDF89A992780B50895262FF999FECF1FBA92BD81BD20BD0FB6F894FA9AF99A90
|
:207F00000895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BDBD
|
||||||
:207F20000FBE01960895F894FFCF4341544552494E4100777700080000000000000801128E
|
:207F20000FB6F894FA9AF99A0FBE01960895F894FFCF4341544552494E4100777700080031
|
||||||
:207F4000011001020000084123360001000201000109023E00020100803209040000010258
|
:207F40000000000000080112011001020000084123360001000201000109023E00020100FF
|
||||||
:207F60000201000524001001042402040524060001070582030800FF09040100020A0000B4
|
:207F600080320904000001020201000524001001042402040524060001070582030800FF0C
|
||||||
:207F8000000705040210000107058302100001040309042203410072006400750069006E80
|
:207F800009040100020A000000070504021000010705830210000104030904220341007216
|
||||||
:207FA000006F0020004C0065006F006E006100720064006F00000018034100720064007557
|
:207FA000006400750069006E006F0020004C0065006F006E006100720064006F0000001836
|
||||||
:127FC0000069006E006F0020004C004C0043000000006E
|
:1A7FC00003410072006400750069006E006F0020004C004C004300000000D7
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
Builds against LUFA version 111009
|
||||||
|
make version 3.81
|
||||||
|
avrdude version 5.11
|
||||||
|
|
||||||
|
All AVR tools except avrdude were installed by CrossPack 20100115:
|
||||||
|
avr-gcc version 4.3.3 (GCC)
|
||||||
|
Thread model: single
|
||||||
|
Configured with: ../configure —prefix=/usr/local/CrossPack-AVR-20100115 —disable-dependency-tracking —disable-nls —disable-werror —target=avr —enable-languages=c,c++ —disable-nls —disable-libssp —with-dwarf2
|
||||||
|
avr-libc version 1.6.7
|
||||||
|
binutils version 2.19
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
|
:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
|
||||||
:200020000C9496010C9496010C9412050C949D050C9496010C9496010C9496010C9496017D
|
:200020000C9496010C9496010C94F8040C947F050C9496010C9496010C9496010C949601B6
|
||||||
:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
|
:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
|
||||||
:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
|
:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
|
||||||
:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
|
:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
|
||||||
@ -20,12 +20,12 @@
|
|||||||
:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
|
:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
|
||||||
:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
|
:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
|
||||||
:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
|
:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
|
||||||
:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B500004C0430072E0811241FBE32
|
:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000032041207170811241FBE81
|
||||||
:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E2EDF2E102C005900D92AC32B107D9F711E06C
|
:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E4EAF2E102C005900D92AC32B107D9F711E06D
|
||||||
:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E946309C63DEE
|
:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E944C09C63D05
|
||||||
:20032000D107C9F70E9486030C9467090C9400008091000161E00E94530368EE73E080E0F6
|
:20032000D107C9F70E946C030C9450090C9400008091000161E00E94390368EE73E080E041
|
||||||
:2003400090E00E94FD018091000160E00E94530368EE73E080E090E00E94FD01089580917C
|
:2003400090E00E94FD018091000160E00E94390368EE73E080E090E00E94FD010895809196
|
||||||
:20036000000161E00E94B60208951F920F920FB60F9211242F933F938F939F93AF93BF93DB
|
:20036000000161E00E94AC0208951F920F920FB60F9211242F933F938F939F93AF93BF93E5
|
||||||
:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
|
:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
|
||||||
:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
|
:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
|
||||||
:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
|
:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
|
||||||
@ -37,119 +37,119 @@
|
|||||||
:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
|
:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
|
||||||
:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
|
:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
|
||||||
:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
|
:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
|
||||||
:2004E0008083E0E8F0E0808181608083E1EBF0E0808184608083E0EBF0E080818160808378
|
:2004E0008083E0E8F0E0808181608083E1E9F0E0808182608083808181608083E0E9F0E07E
|
||||||
:20050000E1E9F0E0808182608083808181608083E0E9F0E0808181608083E1ECF0E080815A
|
:20050000808181608083E1ECF0E0808184608083808182608083808181608083E3ECF0E007
|
||||||
:2005200084608083808182608083808181608083E3ECF0E0808181608083E0ECF0E08081E8
|
:20052000808181608083E0ECF0E0808182608083E2ECF0E0808181608083EAE7F0E080812F
|
||||||
:2005400082608083E2ECF0E0808181608083EAE7F0E08081846080838081826080838081C3
|
:20054000846080838081826080838081816080838081806880830895CF93DF93482F50E0E5
|
||||||
:20056000816080838081806880830895CF93DF93482F50E0CA018C509F4FFC0134914A52A0
|
:20056000CA018C509F4FFC0134914A525F4FFA018491882369F190E0880F991FFC01E455D0
|
||||||
:200580005F4FFA018491882369F190E0880F991FFC01E455FF4FA591B491FC01E654FF4F55
|
:20058000FF4FA591B491FC01E654FF4FC591D491662351F42FB7F8948C91932F9095892362
|
||||||
:2005A000C591D491662351F42FB7F8948C91932F909589238C93888189230BC0623061F40A
|
:2005A0008C93888189230BC0623061F42FB7F8948C91932F909589238C938881832B8883B2
|
||||||
:2005C0002FB7F8948C91932F909589238C938881832B88832FBF06C09FB7F8948C91832BB7
|
:2005C0002FBF06C09FB7F8948C91832B8C939FBFDF91CF910895883071F1893068F48230EF
|
||||||
:2005E0008C939FBFDF91CF9108958730C1F1883080F48330F9F0843030F4813029F182308B
|
:2005E00031F1833020F4813009F042C01DC0833089F08430E9F512C08B3059F18C3028F41C
|
||||||
:2006000009F050C024C08430C9F0863009F04AC022C08A3091F18B3030F4883031F1893037
|
:200600008930E9F08A30A1F51EC08C3031F18E3079F529C0809180008F7703C0809180003C
|
||||||
:2006200009F040C026C08C3091F18C3060F18E30C9F533C0809180008F7703C08091800036
|
:200620008F7D80938000089584B58F7702C084B58F7D84BD0895809190008F7707C08091DB
|
||||||
:200640008F7D80938000089584B58F7702C084B58F7D84BD08958091B0008F7703C080919F
|
:2006400090008F7D03C080919000877F8093900008958091C0008F7703C08091C0008F7DDD
|
||||||
:20066000B0008F7D8093B0000895809190008F7707C0809190008F7D03C080919000877FD9
|
:200660008093C00008958091C200877F8093C2000895FF920F931F93F62E482F50E0CA0144
|
||||||
:200680008093900008958091C0008F7703C08091C0008F7D8093C00008958091C200877F5A
|
:200680008E5E9E4FFC012491CA018C509F4FFC0114914A525F4FFA0104910023C9F022239D
|
||||||
:2006A0008093C2000895FF920F931F93F62E482F50E0CA018E5E9E4FFC012491CA018C501B
|
:2006A00019F0822F0E94EB02E02FF0E0EE0FFF1FE654FF4FA591B4919FB7F894FF2021F4DE
|
||||||
:2006C0009F4FFC0114914A525F4FFA0104910023C9F0222319F0822F0E94F502E02FF0E05D
|
:2006C0008C911095812302C08C91812B8C939FBF1F910F91FF900895CF93DF930E94560262
|
||||||
:2006E000EE0FFF1FE654FF4FA591B4919FB7F894FF2021F48C911095812302C08C91812BD5
|
:2006E0008DE391E00E9433040E94AF01C0E0D0E00E9498012097E1F30E940000F9CF282F17
|
||||||
:200700008C939FBF1F910F91FF900895CF93DF930E9456028DE391E00E944D040E94AF01EC
|
:20070000809137018823C1F057FF1AC015C0289A909336018091F1008193E217F307B9F75A
|
||||||
:20072000C0E0D0E00E9498012097E1F30E940000F9CF282F809137018823C1F057FF1AC00D
|
:200720004115510539F08091F200882319F48BE68093E800AFBF02C04FEF5FEFCA01089599
|
||||||
:2007400015C0289A909336018091F1008193E217F307B9F74115510539F08091F20088236C
|
:20074000AFB7F89427702093E9008091F200282F30E0241735070CF4A901FB019B01240F1E
|
||||||
:2007600019F48BE68093E800AFBF02C04FEF5FEFCA010895AFB7F89427702093E9008091A6
|
:20076000311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F41E050E00E947F03019712
|
||||||
:20078000F200282F30E0241735070CF4A901FB019B01240F311D94E6DACFDF93CF930F922E
|
:2007800019F02FEF3FEF03C08981282F30E0C9010F90CF91DF910895FF920F931F93F82EEF
|
||||||
:2007A000CDB7DEB7BE016F5F7F4F41E050E00E949903019719F02FEF3FEF03C08981282F25
|
:2007A000142F052F40913A0150913B01212F302FC901DC01FB016EEF29C0F7FE02C0949125
|
||||||
:2007C00030E0C9010F90CF91DF910895FF920F931F93F82E142F052F40913A0150913B0188
|
:2007C00001C09081209138013091390124173507ACF48091E8008570E1F38091E80082FF0F
|
||||||
:2007E000212F302FC901DC01FB016EEF29C0F7FE02C0949101C090812091380130913901CE
|
:2007E00003C02FEF3FEF17C09093F100C90101968F739070892B11F46093E8002F5F3F4FEC
|
||||||
:2008000024173507ACF48091E8008570E1F38091E80082FF03C02FEF3FEF17C09093F1008B
|
:200800003093390120933801119731961097A9F6812F902F9C01C9011F910F91FF900895E8
|
||||||
:20082000C90101968F739070892B11F46093E8002F5F3F4F3093390120933801119731964D
|
:200820009C018091E80082FFFCCFF901260F311D03C08091F1008193E217F307D1F7289A03
|
||||||
:200840001097A9F6812F902F9C01C9011F910F91FF9008959C018091E80082FFFCCFF90124
|
:2008400084E6809336018BEF8093E800CB0108958093E9008091F200882319F08AE38093D3
|
||||||
:20086000260F311D03C08091F1008193E217F307D1F7289A84E6809336018BEF8093E80076
|
:20086000E800089508951092370181E08093D70080EA8093D80082E189BD09B400FEFDCFAC
|
||||||
:20088000CB0108958093E9008091F200882319F08AE38093E800089508951092370181E05F
|
:2008800061E070E080E090E00E94FD0180E98093D8008CE08093E2001092E000559A209A77
|
||||||
:2008A0008093D70080EA8093D80082E189BD09B400FEFDCF61E070E080E090E00E94FD01C8
|
:2008A0005D98289808955F926F927F928F929F92AF92BF92CF92DF92EF92FF920F931F93C7
|
||||||
:2008C00080E98093D8008CE08093E2001092E000559A209A5D98289808955F926F927F92E3
|
:2008C000CF93DF93E82E842E752E80913701882371F18B01242F352FC901EC017AEFF72EFB
|
||||||
:2008E0008F929F92AF92BF92CF92DF92EF92FF920F931F93CF93DF93E82E842E752E80918C
|
:2008E00067E0962E9E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3632E20E4C22E35
|
||||||
:200900003701882371F18B01242F352FC901EC017AEFF72E67E0962E9E2050E4552E8E2DCF
|
:20090000D12CC822D92258C09FB7F8949092E9008091E80085FD02C020E004C08091F200EC
|
||||||
:2009200090E040E2A42EB12CA822B9223AE3632E20E4C22ED12CC822D92258C09FB7F89453
|
:20092000252D281B9FBF222361F4FA9419F42FEF3FEF4DC061E070E080E090E00E94FD0135
|
||||||
:200940009092E9008091E80085FD02C020E004C08091F200252D281B9FBF222361F4FA946D
|
:200940003BC0822F90E0C817D9070CF42C2FC21BD1094FB7F8949092E900A114B10421F48E
|
||||||
:2009600019F42FEF3FEF4DC061E070E080E090E00E94FD013BC0822F90E0C817D9070CF435
|
:2009600006C01092F10021502223D9F719C0E7FC03C0F801922F10C0C801322F06C0FC01A2
|
||||||
:200980002C2FC21BD1094FB7F8949092E900A114B10421F406C01092F10021502223D9F74A
|
:200980000196E491E093F10031503323C1F706C081918093F10091509923D1F7020F111DD8
|
||||||
:2009A00019C0E7FC03C0F801922F10C0C801322F06C0FC010196E491E093F10031503323FA
|
:2009A0008091E80085FF05C0209729F4C114D10411F06092E8004FBF209709F0A5CF5D9A73
|
||||||
:2009C000C1F706C081918093F10091509923D1F7020F111D8091E80085FF05C0209729F4C9
|
:2009C00084E680933501282D372DC9019C01C901DF91CF911F910F91FF90EF90DF90CF907E
|
||||||
:2009E000C114D10411F06092E8004FBF209709F0A5CF5D9A84E680933501282D372DC90113
|
:2009E000BF90AF909F908F907F906F905F9008951F920F920FB60F9211242F933F934F931E
|
||||||
:200A00009C01C901DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F907F906F9089
|
:200A00005F936F937F938F939F93AF93BF93EF93FF938091E1001092E100982F83FF0FC047
|
||||||
:200A20005F9008951F920F920FB60F9211241F932F933F934F935F936F937F938F939F93BB
|
:200A20001092E90081E08093EB001092EC0082E38093ED001092370188E08093F00092FF03
|
||||||
:200A4000AF93BF93EF93FF938091E1001092E100982F83FF0FC01092E90081E08093EB0077
|
:200A400034C083E08093E9008091F200882319F08AE38093E8008FB7F89492E09093E900D4
|
||||||
:200A60001092EC0082E38093ED001092370188E08093F00092FF36C083E08093E900809147
|
:200A60009091F2008FBF992321F082E891E00E94550780913501882351F080913501815024
|
||||||
:200A8000F200882349F08AE38093E80005C082E891E00E94730701C012E09FB7F894109324
|
:200A80008093350180913501882309F45D9880913601882351F08091360181508093360192
|
||||||
:200AA000E9008091F2009FBF882389F780913501882351F08091350181508093350180911C
|
:200AA00080913601882309F42898FF91EF91BF91AF919F918F917F916F915F914F913F91E6
|
||||||
:200AC0003501882309F45D9880913601882351F080913601815080933601809136018823B9
|
:200AC0002F910F900FBE0F901F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F75
|
||||||
:200AE00009F42898FF91EF91BF91AF919F918F917F916F915F914F913F912F911F910F908A
|
:200AE0001F4FC8010E947B07C8010E941409898190E00F90CF91DF911F910F9108951F928C
|
||||||
:200B00000FBE0F901F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F1F4FC8015C
|
:200B00000F920FB60F921124EF92FF921F932F933F934F935F936F937F938F939F93AF93C3
|
||||||
:200B20000E949207C8010E942B09898190E00F90CF91DF911F910F9108951F920F920FB6EE
|
:200B2000BF93EF93FF93DF93CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC16B
|
||||||
:200B40000F921124EF92FF921F932F933F934F935F936F937F938F939F93AF93BF93EF9315
|
:200B4000FE0131969E01275F3F4F03C08091F1008193E217F307D1F7289A84E68093360112
|
||||||
:200B6000FF93DF93CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC1FE01319639
|
:200B600082EF8093E800998197FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0AE
|
||||||
:200B80009E01275F3F4F03C08091F1008193E217F307D1F7289A84E68093360182EF809314
|
:200B8000C90180769070892B09F0C2C08A81882329F41092F1001092F100D6C0813009F429
|
||||||
:200BA000E800998197FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0C901807632
|
:200BA000D3C0833009F4D0C0853049F48091E80080FFFCCF8B8180688093E300C5C0863008
|
||||||
:200BC0009070892B09F0C2C08A81882329F41092F1001092F100D6C0813009F4D3C0833063
|
:200BC00009F07CC01C81EF80F8841230C1F51092E900109239011092380110923B0110929E
|
||||||
:200BE00009F4D0C0853049F48091E80080FFFCCF8B8180688093E300C5C0863009F07CC0D9
|
:200BE0003A010E94660599E0FE013996DF01292F1D922A95E9F799871A8791E09E8790E811
|
||||||
:200C00001C81EF80F8841230C1F51092E900109239011092380110923B0110923A010E94B5
|
:200C0000988B9AEF998B2091380130913901275F3F4F3C872B878D871092E900109239011B
|
||||||
:200C2000840599E0FE013996DF01292F1D922A95E9F799871A8791E09E8790E8988B9AEFE3
|
:200C200010923801F0923B01E0923A0180E0BF0149E050E00E94CC030E94660585C0109290
|
||||||
:200C4000998B2091380130913901275F3F4F3C872B878D871092E9001092390110923801AC
|
:200C4000E9001092390110923801F0923B01E0923A01123241F482E290E00E940C09892BD1
|
||||||
:200C6000F0923B01E0923A0180E0BF0149E050E00E94E6030E94840585C01092E900109268
|
:200C600009F476C071C0113079F488E0E816F10419F481E080933C0180913C01882309F057
|
||||||
:200C8000390110923801F0923B01E0923A01123241F482E290E00E942309892B09F476C0D2
|
:200C80006BC0ECE6F1E013C0133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3A3
|
||||||
:200CA00071C0113079F488E0E816F10419F481E080933C0180913C01882309F06BC0ECE64D
|
:200CA000F1E005C0813009F053C0E4E5F1E0449180E8BF0150E00E94CC0346C0873009F4EF
|
||||||
:200CC000F1E013C0133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3F1E005C0CA
|
:200CC00047C0883021F481E08093F1003DC08930D9F523703070232BD9F5E1E9F1E091E0FC
|
||||||
:200CE000813009F053C0E4E5F1E0449180E8BF0150E00E94E60346C0873009F447C088306C
|
:200CE00031E026E39093E9003093EB0084918093EC002093ED009F5F3196953099F78EE7DD
|
||||||
:200D000021F481E08093F1003DC08930D9F523703070232BD9F5E1E9F1E091E031E026E360
|
:200D00008093EA001092EA008B81809337011CC08F8198851092E9001092390110923801A8
|
||||||
:200D20009093E9003093EB0084918093EC002093ED009F5F3196953099F78EE78093EA00B9
|
:200D200090933B0180933A018D81882329F4CE0101960E94870706C0823051F4CE01019677
|
||||||
:200D40001092EA008B81809337011CC08F8198851092E900109239011092380190933B0106
|
:200D40000E94DD07882321F08EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DA
|
||||||
:200D600080933A018D81882329F4CE0101960E949E0706C0823051F4CE0101960E94F407E2
|
:200D6000DEBFCDBFCF91DF91FF91EF91BF91AF919F918F917F916F915F914F913F912F911A
|
||||||
:200D8000882321F08EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DEBFCDBFF7
|
:200D80001F91FF90EF900F900FBE0F901F90189520917E0130917F01809180019091810188
|
||||||
:200DA000CF91DF91FF91EF91BF91AF919F918F917F916F915F914F913F912F911F91FF90C4
|
:200DA000281B390B2F733070C901089520917E0130917F01809180019091810128173907DE
|
||||||
:200DC000EF900F900FBE0F901F90189520917E0130917F018091800190918101281B390B00
|
:200DC00019F42FEF3FEF09C0E0918001F0918101E25CFE4F8081282F30E0C90108952091F1
|
||||||
:200DE0002F733070C901089520917E0130917F0180918001909181012817390719F42FEFFA
|
:200DE0007E0130917F0180918001909181012817390719F42FEF3FEF13C0E0918001F091E0
|
||||||
:200E00003FEF09C0E0918001F0918101E25CFE4F8081282F30E0C901089520917E0130919B
|
:200E00008101E25CFE4F2081809180019091810101968F739070909381018093800130E00D
|
||||||
:200E20007F0180918001909181012817390719F42FEF3FEF13C0E0918001F0918101E25C1F
|
:200E2000C9010895109285011092840188EE93E0A0E0B0E08093860190938701A093880102
|
||||||
:200E4000FE4F2081809180019091810101968F739070909381018093800130E0C901089526
|
:200E4000B093890180E191E0909383018093820108950F931F93DF93CF930F92CDB7DEB737
|
||||||
:200E6000109285011092840188EE93E0A0E0B0E08093860190938701A0938801B09389015C
|
:200E60008C01698380910901882369F083E0BE016F5F7F4F41E050E00E9453041816190685
|
||||||
:200E800080E191E0909383018093820108950F931F93DF93CF930F92CDB7DEB78C0169834B
|
:200E800014F49C0107C081E090E0F8019383828320E030E0C9010F90CF91DF911F910F9168
|
||||||
:200EA00080910901882369F083E0BE016F5F7F4F41E050E00E946D041816190614F49C01FF
|
:200EA000089583E00E9428040895CF93DF9312C082E00E94B3032FEF8F3F9207C9F0E091B8
|
||||||
:200EC00007C081E090E0F8019383828320E030E0C9010F90CF91DF911F910F91089583E0CD
|
:200EC0007E01F0917F01E25CFE4F8083D0937F01C0937E01C0917E01D0917F012196CF73A5
|
||||||
:200EE0000E944204089582E00E94CD03482F20917E0130917F012F5F3F4F2F733070809142
|
:200EE000D0708091800190918101C817D90701F7DF91CF910895FC0180818E5F808380E803
|
||||||
:200F00008001909181012817390759F0E0917E01F0917F01E25CFE4F408330937F012093B0
|
:200F000065E971E042E450E00E94CC030895FC0181819081913A59F4813209F04CC080E08E
|
||||||
:200F20007E010895FC0180818E5F808380E865E971E042E450E00E94E6030895FC01818123
|
:200F200062E071E047E050E00E94CC0342C0913209F041C0803239F482E091E067E070E04E
|
||||||
:200F40009081913A59F4813209F04CC080E062E071E047E050E00E94E60342C0913209F01D
|
:200F40000E94100436C0823209F035C08281809309018091020190910301A0910401B09173
|
||||||
:200F600041C0803239F482E091E067E070E00E942A0436C0823209F035C08281809309019F
|
:200F60000501805B9440A040B04019F58091090180FD12C087E797E7909301088093000841
|
||||||
:200F80008091020190910301A0910401B0910501805B9440A040B04019F58091090180FD76
|
:200F80002BE088E190E00FB6F894A895809360000FBE209360000DC088E10FB6F8948093F2
|
||||||
:200FA00012C087E797E790930108809300082BE088E190E00FB6F894A895809360000FBE7A
|
:200FA0006000109260000FBEA895109201081092000881E0089580E00895FC019181808165
|
||||||
:200FC000209360000DC088E10FB6F89480936000109260000FBEA8951092010810920008A3
|
:200FC000813A31F4913089F080E0933089F40DC0813269F49B3021F4828180930A0105C0B4
|
||||||
:200FE00081E0089580E00895FC0191818081813A31F4913089F080E0933089F40DC08132AC
|
:200FE0009A3029F4828180930B0181E0089580E00895EF92FF920F931F938C01E62EDC0109
|
||||||
:2010000069F49B3021F4828180930A0105C09A3029F4828180930B0181E0089580E00895A9
|
:20100000ED91FC910480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D099509
|
||||||
:20102000EF92FF920F931F938C01E62EDC01ED91FC910480F581E02D0995F82ED801ED919F
|
:201020008F2D90E01F910F91FF90EF90089510929001109294011092930182E291E09093F1
|
||||||
:20104000FC910680F781E02DC8016E2D09958F2D90E01F910F91FF90EF900895109290019C
|
:201040009201809391010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A01B4
|
||||||
:20106000109294011092930182E291E090939201809391010895EF92FF920F931F93DF935E
|
:2010600084E0BE016F5F7F4F41E050E00E94530484E4B801A7010E9453040F90CF91DF9136
|
||||||
:20108000CF930F92CDB7DEB789838B017A0184E0BE016F5F7F4F41E050E00E946D0484E496
|
:201080001F910F91FF90EF90089582E048E050E00E9424080895FC011682178210861186D5
|
||||||
:2010A000B801A7010E946D040F90CF91DF911F910F91FF90EF90089582E048E050E00E94F6
|
:2010A0001286138614823496BF010E9445080895DC01683810F0685829C0E62FF0E067FFE2
|
||||||
:2010C0003B080895FC0116821782108611861286138614823496BF010E945C080895DC0104
|
:2010C00013C0E058F04081E090E002C0880F991FEA95E2F7809514962C911497282314967F
|
||||||
:2010E000683810F0685829C0E62FF0E067FF13C0E058F04081E090E002C0880F991FEA95C0
|
:2010E0002C93149760E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9176
|
||||||
:20110000E2F7809514962C911497282314962C93149760E012C0EB5AFD4F6491662319F442
|
:2011000014978D7F14968C9314976F77FD0190E0662321F08681861709F416829F5F3196B8
|
||||||
:2011200020E030E01DC067FF08C014968C9114978D7F14968C9314976F77FD0190E06623C5
|
:201120009630B1F7CD011496BD010E94450821E030E0C9010895CF93DF93DC01683810F053
|
||||||
:2011400021F08681861709F416829F5F31969630B1F7CD011496BD010E945C0821E030E0C5
|
:20114000685825C0E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F7149681
|
||||||
:20116000C9010895CF93DF93DC01683810F0685825C0E62FF0E067FF12C0E058F04081E02C
|
:201160002C911497282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C01496E0
|
||||||
:2011800090E002C0880F991FEA95E2F714962C911497282B14962C93149760E00FC0EB5AA9
|
:201180008C911497826014968C9314976F7716968C9116978617A9F117968C911797861789
|
||||||
:2011A000FD4F64916623D9F167FF08C014968C911497826014968C9314976F7716968C91F6
|
:2011A00081F118968C911897861759F119968C911997861731F11A968C911A97861709F10C
|
||||||
:2011C00016978617A9F117968C911797861781F118968C911897861759F119968C911997C7
|
:2011C0001B968C911B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C045
|
||||||
:2011E000861731F11A968C911A97861709F11B968C911B978617E1F0ED01E0E0F0E09E2FE2
|
:2011E0009F5F31962196E630F10591F7963049F481E090E013969C938E93129720E030E059
|
||||||
:201200008E81882321F4EA0FFB1F668306C09F5F31962196E630F10591F7963049F481E0C9
|
:2012000007C0CD011496BD010E94450821E030E0C901DF91CF91089580E867ED71E045E662
|
||||||
:2012200090E013969C938E93129720E030E007C0CD011496BD010E945C0821E030E0C901AE
|
:2012200050E00E94CC030895FC0180818F5F808380E86CE372E049E150E00E94CC03089510
|
||||||
:20124000DF91CF91089580E867ED71E045E650E00E94E6030895FC0180818F5F808380E83A
|
:20124000CF92DF92EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D911A
|
||||||
:201260006CE372E049E150E00E94E6030895CF92DF92EF92FF920F931F93CF93DF937C01C2
|
:201260006D01D701ED91FC910190F081E02DC7010995C80FD91F015010400115110571F7A4
|
||||||
:201280006B018A01C0E0D0E00FC0D6016D916D01D701ED91FC910190F081E02DC70109959D
|
:20128000CE01DF91CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D099407
|
||||||
:2012A000C80FD91F015010400115110571F7CE01DF91CF911F910F91FF90EF90DF90CF905F
|
:2012A000F894FFCF0D0000E100000000000001010000000029072009C806EF06D606510794
|
||||||
:2012C0000895EE0FFF1F0590F491E02D0994F894FFCF0D0000E10000000000000101000048
|
:2012C000550700000000F90720099B0858084B08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
|
||||||
:2012E000000047073709E6060D07F4066F0773070000000010083709B2086F086208FFFF85
|
:2012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
|
||||||
:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
|
:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
|
||||||
:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
|
:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
|
||||||
:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
|
:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
|
||||||
@ -895,13 +895,13 @@
|
|||||||
:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
|
:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
|
||||||
:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
|
:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
|
||||||
:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
|
:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
|
||||||
:2070200060C000005EC00000EEC400005AC0000058C0000056C0000054C0000052C00000F2
|
:2070200060C000005EC00000F2C400005AC0000058C0000056C0000054C0000052C00000EE
|
||||||
:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
|
:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
|
||||||
:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
|
:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
|
||||||
:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
|
:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
|
||||||
:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0EAE2B5
|
:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E2E3BC
|
||||||
:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
|
:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
|
||||||
:2070E00022C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D98F1
|
:2070E00026C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D98ED
|
||||||
:2071000028980C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA8
|
:2071000028980C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA8
|
||||||
:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
|
:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
|
||||||
:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
|
:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
|
||||||
@ -928,14 +928,14 @@
|
|||||||
:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
|
:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
|
||||||
:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
|
:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
|
||||||
:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
|
:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
|
||||||
:2074400018C0D801C701B695A7959795879555D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF6
|
:2074400018C0D801C701B695A7959795879559D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF2
|
||||||
:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
|
:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
|
||||||
:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
|
:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
|
||||||
:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
|
:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
|
||||||
:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
|
:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
|
||||||
:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
|
:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
|
||||||
:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
|
:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
|
||||||
:20752000C701F3D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE0190934D
|
:20752000C701F7D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE01909349
|
||||||
:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
|
:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
|
||||||
:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
|
:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
|
||||||
:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
|
:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
|
||||||
@ -943,82 +943,82 @@
|
|||||||
:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
|
:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
|
||||||
:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
|
:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
|
||||||
:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
|
:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
|
||||||
:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70165D4E2
|
:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70169D4DE
|
||||||
:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
|
:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
|
||||||
:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
|
:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
|
||||||
:20768000B695A7959795879538D4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010E
|
:20768000B695A795979587953CD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010A
|
||||||
:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
|
:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
|
||||||
:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
|
:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
|
||||||
:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
|
:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
|
||||||
:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
|
:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
|
||||||
:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
|
:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
|
||||||
:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E007D28091E8008B770F
|
:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00BD28091E8008B770B
|
||||||
:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E059D2809196
|
:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05DD2809192
|
||||||
:20778000E8008E778093E800089582E061EC42E0B1D083E061E842E1ADD084E060E842E1F7
|
:20778000E8008E778093E800089582E061EC42E0B5D083E061E842E1B1D084E060E842E1EF
|
||||||
:2077A000A9C084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB643
|
:2077A000ADC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB63F
|
||||||
:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
|
:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
|
||||||
:2077E000108247985D982898109289008AEF8093880090936F0083E080938100ECC040911E
|
:2077E000108247985D982898109289008AEF8093880090936F0083E080938100F0C040911A
|
||||||
:20780000000850910108109201081092000824B714BE88E10FB6F894809360001092600045
|
:20780000000850910108109201081092000894B714BE88E10FB6F8948093600010926000D5
|
||||||
:207820000FBE822F90E0FC01E270F07021FD14C0213019F4859194910BC0283069F480918F
|
:207820000FBE292F30E0F901E270F07091FD18C090FF05C0859194918F5F9F4F81F423FFFF
|
||||||
:20784000090190910A014817590731F0859194918F5F9F4F09F046DCA4DF78941092AD0101
|
:207840000FC08091090190910A014817590741F0E0E0F0E0859194918F5F9F4F09F042DC64
|
||||||
:207860001092AC010CC0E2DC36D38091AC019091AD0181549F4110F01092140145DC8091FB
|
:20786000A0DF78941092AD011092AC010CC0DEDC36D38091AC019091AD0181549F4110F00D
|
||||||
:207880001401882381F78091E00081608093E00029DC80E090E00895FA01923049F09330C0
|
:207880001092140141DC80911401882381F78091E00081608093E00025DC80E090E0089598
|
||||||
:2078A00061F09130F9F485E191E022E130E01EC087E291E02EE330E019C0882329F485E6FA
|
:2078A000FA01923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E04D
|
||||||
:2078C00091E024E030E012C0813029F489E691E022E230E00BC0823029F48DE891E028E106
|
:2078C00019C0882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823006
|
||||||
:2078E00030E004C080E090E020E030E091838083C90108958093E9008091EB00816080936A
|
:2078E00029F48DE891E028E130E004C080E090E020E030E091838083C90108958093E9004E
|
||||||
:20790000EB001092ED006093EC004093ED008091EE00881F8827881F08958091B601882342
|
:207900008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F62
|
||||||
:207920008CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093E80008958EB361
|
:2079200008958091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B772A
|
||||||
:20794000882349F08091E80080FFF9CF8091E8008E778093E8000895EF92FF920F931F9307
|
:207940008093E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E800089594
|
||||||
:2079600045D04CD008ED10E0F80180818F77808380818068808380818F7D808319BC1EBA45
|
:20796000EF92FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380819B
|
||||||
:207980001092B40180EEE82EF12CF70180818B7F8083F80180818160808380E060E042E049
|
:207980008F7D808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816052
|
||||||
:2079A000A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808188608083F701808125
|
:2079A000808380E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808144
|
||||||
:2079C0008E7F8083F8018081806180831F910F91FF90EF900895E7EDF0E080818160808335
|
:2079C00088608083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7ED06
|
||||||
:2079E0008AE482BF81E08093B501B6CFE8EDF0E080818E7F80831092E20008951092DA00D6
|
:2079E000F0E08081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F808310921C
|
||||||
:207A00001092E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F9389
|
:207A0000E20008951092DA001092E10008951F920F920FB60F9211242F933F934F935F93F6
|
||||||
:207A2000AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C08091DA008E7F80930F
|
:207A20006F937F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C0B2
|
||||||
:207A4000DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF81E08EBB3BD203C0C7
|
:207A40008091DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF36
|
||||||
:207A600019BC1EBA37D28091E10080FF17C08091E20080FF13C08091E2008E7F8093E200CE
|
:207A600081E08EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C0809138
|
||||||
:207A80008091E20080618093E2008091D80080628093D80019BC85E08EBB1CD28091E10004
|
:207A8000E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E049
|
||||||
:207AA00084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEFDCF8091D8008F7D2D
|
:207AA0008EBB1CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEC5
|
||||||
:207AC0008093D8008091E1008F7E8093E1008091E2008F7E8093E2008091E20081608093EC
|
:207AC000FDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E20012
|
||||||
:207AE000E2008091B401882331F48091E30087FD02C081E001C084E08EBBECD18091E10056
|
:207AE0008091E20081608093E2008091B401882331F48091E30087FD02C081E001C084E067
|
||||||
:207B000083FF21C08091E20083FF1DC08091E100877F8093E10082E08EBB1092B4018091B1
|
:207B00008EBBECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E06A
|
||||||
:207B2000E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E20080E060E005
|
:207B20008EBB1092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E2008061E9
|
||||||
:207B400042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F914F913F912F910F90B6
|
:207B40008093E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F9130
|
||||||
:207B60000FBE0F901F9018959C014091BC015091BD014617570718F4F90190E044C06115C8
|
:207B60004F913F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F49D
|
||||||
:207B8000710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF8EB3882309F444C006
|
:207B8000F90190E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF0F
|
||||||
:207BA000853009F443C08091E80083FF02C081E008958091E80082FD31C08091E80080FFF4
|
:207BA0008EB3882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD70
|
||||||
:207BC00022C08091F3009091F200782F60E0292F30E0262B372B07C081918093F10041503C
|
:207BC00031C08091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C07A
|
||||||
:207BE00050402F5F3F4F4115510519F02830310598F390E02830310509F491E08091E800A6
|
:207BE00081918093F100415050402F5F3F4F4115510519F02830310598F390E02830310566
|
||||||
:207C00008E778093E8004115510531F6992321F605C08EB3882341F0853041F08091E800FD
|
:207C000009F491E08091E8008E778093E8004115510531F6992321F605C08EB3882341F075
|
||||||
:207C200082FFF7CF80E0089582E0089583E008959C016115710529F48091E8008B7780934D
|
:207C2000853041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F47C
|
||||||
:207C4000E800F90126C08EB3882391F1853091F18091E80083FF02C081E008958091E80083
|
:207C40008091E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C06C
|
||||||
:207C600082FFF1CF06C08091F10081936150704059F02091F3008091F200322F20E090E0C5
|
:207C600081E008958091E80082FFF1CF06C08091F10081936150704059F02091F300809191
|
||||||
:207C8000822B932B892B79F78091E8008B778093E80061157105B9F605C08EB3882341F0E2
|
:207C8000F200322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F601
|
||||||
:207CA000853041F08091E80080FFF7CF80E0089582E0089583E008950F931F93DF93CF937C
|
:207CA00005C08EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E00895C2
|
||||||
:207CC00000D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F728DD8091E80083FF3A
|
:207CC0000F931F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F792
|
||||||
:207CE000E4C08091B6019091B701953009F46DC0963040F4913081F1913070F0933009F046
|
:207CE00024DD8091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F1A7
|
||||||
:207D0000D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC0803809F4C6C082380B
|
:207D0000913070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC023
|
||||||
:207D200009F0C3C08091BA0187708093E9008091EB001092E9002091E800277F2093E800A7
|
:207D2000803809F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091DB
|
||||||
:207D400090E025E0969587952A95E1F781708093F1001092F10087C0882319F0823009F0A2
|
:207D4000E800277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0D8
|
||||||
:207D6000A4C08F71823009F0A0C08091B801882331F52091BA01277009F497C02093E90006
|
:207D6000882319F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277097
|
||||||
:207D80008091EB0080FF1BC0933021F48091EB00806213C08091EB0080618093EB0081E0C8
|
:207D800009F497C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB0018
|
||||||
:207DA00090E002C0880F991F2A95E2F78093EA001092EA008091EB0088608093EB0010929D
|
:207DA00080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB00E5
|
||||||
:207DC000E9008091E800877F51C0882309F06DC01091B8011F770FB7F8948091E800877F98
|
:207DC00088608093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB79B
|
||||||
:207DE0008093E8009ADD8091E80080FFFCCF8091E3008078812B8093E30080688093E30062
|
:207DE000F8948091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B809398
|
||||||
:207E0000112311F482E001C083E08EBB0FBF4DC08058823008F049C08091B8019091B9014F
|
:207E0000E30080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C033
|
||||||
:207E20006091BA01AE014F5F5F4F36DDBC01009709F43BC08091E800877F8093E800898128
|
:207E20008091B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E8008E
|
||||||
:207E40009A8192DE8091E8008B778093E8002DC0803859F58091E800877F8093E8008091A3
|
:207E4000877F8093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800AA
|
||||||
:207E6000B4018093F1008091E8008E778093E80054DD1BC08823C9F49091B8019230A8F4A4
|
:207E6000877F8093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F4CA
|
||||||
:207E80008091E800877F8093E8009093B40145DD8091B401882331F48091E30087FD02C01E
|
:207E80009091B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F420
|
||||||
:207EA00081E001C084E08EBB70DC8091E80083FF0AC08091EB0080628093EB008091E8008D
|
:207EA0008091E30087FD02C081E001C084E08EBB6CDC8091E80083FF0AC08091EB0080624E
|
||||||
:207EC000877F8093E8000F900F90CF91DF911F910F91089508951F938EB3882361F0109179
|
:207EC0008093EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F9360
|
||||||
:207EE000E9001092E9008091E80083FF01C0E4DE17701093E9001F910895F999FECF92BD02
|
:207EE0008EB3882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F916F
|
||||||
:207F000081BDF89A992780B50895262FF999FECF1FBA92BD81BD20BD0FB6F894FA9AF99A90
|
:207F00000895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BDBD
|
||||||
:207F20000FBE01960895F894FFCF4341544552494E4100777700080000000000000801128E
|
:207F20000FB6F894FA9AF99A0FBE01960895F894FFCF4341544552494E4100777700080031
|
||||||
:207F4000011001020000084123370001000201000109023E00020100803209040000010257
|
:207F40000000000000080112011001020000084123370001000201000109023E00020100FE
|
||||||
:207F60000201000524001001042402040524060001070582030800FF09040100020A0000B4
|
:207F600080320904000001020201000524001001042402040524060001070582030800FF0C
|
||||||
:207F8000000705040210000107058302100001040309042203410072006400750069006E80
|
:207F800009040100020A000000070504021000010705830210000104030904220341007216
|
||||||
:207FA000006F0020004D006900630072006F00200020002000000018034100720064007531
|
:207FA000006400750069006E006F0020004D006900630072006F0020002000200000001810
|
||||||
:127FC0000069006E006F0020004C004C0043000000006E
|
:1A7FC00003410072006400750069006E006F0020004C004C004300000000D7
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
11
hardware/arduino/avr/bootloaders/caterina/Caterina-Micro.txt
Normal file
11
hardware/arduino/avr/bootloaders/caterina/Caterina-Micro.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
Builds against LUFA version 111009
|
||||||
|
make version 3.81
|
||||||
|
avrdude version 5.11
|
||||||
|
|
||||||
|
All AVR tools except avrdude were installed by CrossPack 20100115:
|
||||||
|
avr-gcc version 4.3.3 (GCC)
|
||||||
|
Thread model: single
|
||||||
|
Configured with: ../configure —prefix=/usr/local/CrossPack-AVR-20100115 —disable-dependency-tracking —disable-nls —disable-werror —target=avr —enable-languages=c,c++ —disable-nls —disable-libssp —with-dwarf2
|
||||||
|
avr-libc version 1.6.7
|
||||||
|
binutils version 2.19
|
||||||
|
|
@ -123,11 +123,11 @@ int main(void)
|
|||||||
|
|
||||||
if (mcusr_state & (1<<EXTRF)) {
|
if (mcusr_state & (1<<EXTRF)) {
|
||||||
// External reset - we should continue to self-programming mode.
|
// External reset - we should continue to self-programming mode.
|
||||||
} else if (mcusr_state == (1<<PORF) && pgm_read_word(0) != 0xFFFF) {
|
} else if ((mcusr_state & (1<<PORF)) && (pgm_read_word(0) != 0xFFFF)) {
|
||||||
// After a power-on reset skip the bootloader and jump straight to sketch
|
// After a power-on reset skip the bootloader and jump straight to sketch
|
||||||
// if one exists.
|
// if one exists.
|
||||||
StartSketch();
|
StartSketch();
|
||||||
} else if ((mcusr_state == (1<<WDRF)) && (bootKeyPtrVal != bootKey) && (pgm_read_word(0) != 0xFFFF)) {
|
} else if ((mcusr_state & (1<<WDRF)) && (bootKeyPtrVal != bootKey) && (pgm_read_word(0) != 0xFFFF)) {
|
||||||
// If it looks like an "accidental" watchdog reset then start the sketch.
|
// If it looks like an "accidental" watchdog reset then start the sketch.
|
||||||
StartSketch();
|
StartSketch();
|
||||||
}
|
}
|
||||||
|
@ -69,10 +69,17 @@
|
|||||||
#define L_LED_OFF() PORTC &= ~(1<<7)
|
#define L_LED_OFF() PORTC &= ~(1<<7)
|
||||||
#define L_LED_ON() PORTC |= (1<<7)
|
#define L_LED_ON() PORTC |= (1<<7)
|
||||||
#define L_LED_TOGGLE() PORTC ^= (1<<7)
|
#define L_LED_TOGGLE() PORTC ^= (1<<7)
|
||||||
#define TX_LED_OFF() PORTD |= (1<<5)
|
#if DEVICE_PID == 0x0037 // polarity of the RX and TX LEDs is reversed on the Micro
|
||||||
#define TX_LED_ON() PORTD &= ~(1<<5)
|
#define TX_LED_OFF() PORTD &= ~(1<<5)
|
||||||
#define RX_LED_OFF() PORTB |= (1<<0)
|
#define TX_LED_ON() PORTD |= (1<<5)
|
||||||
#define RX_LED_ON() PORTB &= ~(1<<0)
|
#define RX_LED_OFF() PORTB &= ~(1<<0)
|
||||||
|
#define RX_LED_ON() PORTB |= (1<<0)
|
||||||
|
#else
|
||||||
|
#define TX_LED_OFF() PORTD |= (1<<5)
|
||||||
|
#define TX_LED_ON() PORTD &= ~(1<<5)
|
||||||
|
#define RX_LED_OFF() PORTB |= (1<<0)
|
||||||
|
#define RX_LED_ON() PORTB &= ~(1<<0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Type Defines: */
|
/* Type Defines: */
|
||||||
/** Type define for a non-returning pointer to the start of the loaded application in flash memory. */
|
/** Type define for a non-returning pointer to the start of the loaded application in flash memory. */
|
||||||
|
@ -195,6 +195,10 @@ const USB_Descriptor_String_t ProductString =
|
|||||||
|
|
||||||
#if DEVICE_PID == 0x0036
|
#if DEVICE_PID == 0x0036
|
||||||
.UnicodeString = L"Arduino Leonardo"
|
.UnicodeString = L"Arduino Leonardo"
|
||||||
|
#elif DEVICE_PID == 0x0037
|
||||||
|
.UnicodeString = L"Arduino Micro "
|
||||||
|
#elif DEVICE_PID == 0x003C
|
||||||
|
.UnicodeString = L"Arduino Esplora "
|
||||||
#else
|
#else
|
||||||
.UnicodeString = L"USB IO board "
|
.UnicodeString = L"USB IO board "
|
||||||
#endif
|
#endif
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,6 @@
|
|||||||
|
LUFA: 111009
|
||||||
|
make: 3.81
|
||||||
|
avrdude: 5.11.1
|
||||||
|
avr-libc: 1.6.7
|
||||||
|
binutils-avr: 2.19
|
||||||
|
gcc-avr 4.3.3
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,11 @@
|
|||||||
|
Builds against LUFA version 111009
|
||||||
|
make version 3.81
|
||||||
|
avrdude version 5.11
|
||||||
|
|
||||||
|
All AVR tools except avrdude were installed by CrossPack 20100115:
|
||||||
|
avr-gcc version 4.3.3 (GCC)
|
||||||
|
Thread model: single
|
||||||
|
Configured with: ../configure —prefix=/usr/local/CrossPack-AVR-20100115 —disable-dependency-tracking —disable-nls —disable-werror —target=avr —enable-languages=c,c++ —disable-nls —disable-libssp —with-dwarf2
|
||||||
|
avr-libc version 1.6.7
|
||||||
|
binutils version 2.19
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,11 @@
|
|||||||
|
Builds against LUFA version 111009
|
||||||
|
make version 3.81
|
||||||
|
avrdude version 5.11
|
||||||
|
|
||||||
|
All AVR tools except avrdude were installed by CrossPack 20100115:
|
||||||
|
avr-gcc version 4.3.3 (GCC)
|
||||||
|
Thread model: single
|
||||||
|
Configured with: ../configure —prefix=/usr/local/CrossPack-AVR-20100115 —disable-dependency-tracking —disable-nls —disable-werror —target=avr —enable-languages=c,c++ —disable-nls —disable-libssp —with-dwarf2
|
||||||
|
avr-libc version 1.6.7
|
||||||
|
binutils version 2.19
|
||||||
|
|
@ -47,6 +47,7 @@
|
|||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
# USB vendor ID (VID)
|
# USB vendor ID (VID)
|
||||||
|
# reuse of this VID by others is forbidden by USB-IF
|
||||||
# official Arduino LLC VID
|
# official Arduino LLC VID
|
||||||
# VID = 0x2341
|
# VID = 0x2341
|
||||||
|
|
||||||
@ -54,7 +55,10 @@
|
|||||||
# USB product ID (PID)
|
# USB product ID (PID)
|
||||||
# official Leonardo PID
|
# official Leonardo PID
|
||||||
# PID = 0x0036
|
# PID = 0x0036
|
||||||
|
# official Micro PID
|
||||||
|
# PID = 0x0037
|
||||||
|
# official Esplora PID
|
||||||
|
# PID = 0x003C
|
||||||
|
|
||||||
# MCU name
|
# MCU name
|
||||||
MCU = atmega32u4
|
MCU = atmega32u4
|
||||||
@ -123,7 +127,7 @@ OBJDIR = .
|
|||||||
|
|
||||||
|
|
||||||
# Path to the LUFA library
|
# Path to the LUFA library
|
||||||
LUFA_PATH = ../../../../../LUFA-111009
|
LUFA_PATH = ../../../../../../LUFA/LUFA-111009
|
||||||
|
|
||||||
|
|
||||||
# LUFA library compile-time options and predefined tokens
|
# LUFA library compile-time options and predefined tokens
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,11 @@
|
|||||||
|
Builds against LUFA version 111009
|
||||||
|
make version 3.81
|
||||||
|
avrdude version 5.11
|
||||||
|
|
||||||
|
All AVR tools except avrdude were installed by CrossPack 20100115:
|
||||||
|
avr-gcc version 4.3.3 (GCC)
|
||||||
|
Thread model: single
|
||||||
|
Configured with: ../configure —prefix=/usr/local/CrossPack-AVR-20100115 —disable-dependency-tracking —disable-nls —disable-werror —target=avr —enable-languages=c,c++ —disable-nls —disable-libssp —with-dwarf2
|
||||||
|
avr-libc version 1.6.7
|
||||||
|
binutils version 2.19
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,11 @@
|
|||||||
|
Builds against LUFA version 111009
|
||||||
|
make version 3.81
|
||||||
|
avrdude version 5.11
|
||||||
|
|
||||||
|
All AVR tools except avrdude were installed by CrossPack 20100115:
|
||||||
|
avr-gcc version 4.3.3 (GCC)
|
||||||
|
Thread model: single
|
||||||
|
Configured with: ../configure —prefix=/usr/local/CrossPack-AVR-20100115 —disable-dependency-tracking —disable-nls —disable-werror —target=avr —enable-languages=c,c++ —disable-nls —disable-libssp —with-dwarf2
|
||||||
|
avr-libc version 1.6.7
|
||||||
|
binutils version 2.19
|
||||||
|
|
@ -36,8 +36,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* on ATmega8, the uart and its bits are not numbered, so there is no "TXC0"
|
* on ATmega8, the uart and its bits are not numbered, so there is no "TXC0"
|
||||||
* definition. It is slightly cleaner to define this here instead of having
|
* definition.
|
||||||
* conditional code in the cpp module.
|
|
||||||
*/
|
*/
|
||||||
#if !defined(TXC0)
|
#if !defined(TXC0)
|
||||||
#if defined(TXC)
|
#if defined(TXC)
|
||||||
|
@ -55,6 +55,8 @@ const u16 STRING_IPRODUCT[17] = {
|
|||||||
'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o'
|
'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o'
|
||||||
#elif USB_PID == 0x8037
|
#elif USB_PID == 0x8037
|
||||||
'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ',' ',' '
|
'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ',' ',' '
|
||||||
|
#elif USB_PID == 0x803C
|
||||||
|
'A','r','d','u','i','n','o',' ','E','s','p','l','o','r','a',' '
|
||||||
#elif USB_PID == 0x9208
|
#elif USB_PID == 0x9208
|
||||||
'L','i','l','y','P','a','d','U','S','B',' ',' ',' ',' ',' ',' '
|
'L','i','l','y','P','a','d','U','S','B',' ',' ',' ',' ',' ',' '
|
||||||
#else
|
#else
|
||||||
|
380
hardware/arduino/avr/cores/arduino/malloc.c
Normal file
380
hardware/arduino/avr/cores/arduino/malloc.c
Normal file
@ -0,0 +1,380 @@
|
|||||||
|
/* Copyright (c) 2002, 2004, 2010 Joerg Wunsch
|
||||||
|
Copyright (c) 2010 Gerben van den Broeke
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
malloc, free, realloc from avr-libc 1.7.0
|
||||||
|
with minor modifications, by Paul Stoffregen
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in
|
||||||
|
the documentation and/or other materials provided with the
|
||||||
|
distribution.
|
||||||
|
|
||||||
|
* Neither the name of the copyright holders nor the names of
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <avr/io.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define __MALLOC_MARGIN__ 120
|
||||||
|
|
||||||
|
|
||||||
|
struct __freelist {
|
||||||
|
size_t sz;
|
||||||
|
struct __freelist *nx;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Exported interface:
|
||||||
|
*
|
||||||
|
* When extending the data segment, the allocator will not try to go
|
||||||
|
* beyond the current stack limit, decreased by __malloc_margin bytes.
|
||||||
|
* Thus, all possible stack frames of interrupt routines that could
|
||||||
|
* interrupt the current function, plus all further nested function
|
||||||
|
* calls must not require more stack space, or they'll risk to collide
|
||||||
|
* with the data segment.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define STACK_POINTER() ((char *)AVR_STACK_POINTER_REG)
|
||||||
|
extern char __heap_start;
|
||||||
|
char *__brkval = &__heap_start; // first location not yet allocated
|
||||||
|
struct __freelist *__flp; // freelist pointer (head of freelist)
|
||||||
|
char *__brkval_maximum = 100;
|
||||||
|
|
||||||
|
void *
|
||||||
|
malloc(size_t len)
|
||||||
|
{
|
||||||
|
struct __freelist *fp1, *fp2, *sfp1, *sfp2;
|
||||||
|
char *cp;
|
||||||
|
size_t s, avail;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Our minimum chunk size is the size of a pointer (plus the
|
||||||
|
* size of the "sz" field, but we don't need to account for
|
||||||
|
* this), otherwise we could not possibly fit a freelist entry
|
||||||
|
* into the chunk later.
|
||||||
|
*/
|
||||||
|
if (len < sizeof(struct __freelist) - sizeof(size_t))
|
||||||
|
len = sizeof(struct __freelist) - sizeof(size_t);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* First, walk the free list and try finding a chunk that
|
||||||
|
* would match exactly. If we found one, we are done. While
|
||||||
|
* walking, note down the smallest chunk we found that would
|
||||||
|
* still fit the request -- we need it for step 2.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
for (s = 0, fp1 = __flp, fp2 = 0;
|
||||||
|
fp1;
|
||||||
|
fp2 = fp1, fp1 = fp1->nx) {
|
||||||
|
if (fp1->sz < len)
|
||||||
|
continue;
|
||||||
|
if (fp1->sz == len) {
|
||||||
|
/*
|
||||||
|
* Found it. Disconnect the chunk from the
|
||||||
|
* freelist, and return it.
|
||||||
|
*/
|
||||||
|
if (fp2)
|
||||||
|
fp2->nx = fp1->nx;
|
||||||
|
else
|
||||||
|
__flp = fp1->nx;
|
||||||
|
return &(fp1->nx);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (s == 0 || fp1->sz < s) {
|
||||||
|
/* this is the smallest chunk found so far */
|
||||||
|
s = fp1->sz;
|
||||||
|
sfp1 = fp1;
|
||||||
|
sfp2 = fp2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Step 2: If we found a chunk on the freelist that would fit
|
||||||
|
* (but was too large), look it up again and use it, since it
|
||||||
|
* is our closest match now. Since the freelist entry needs
|
||||||
|
* to be split into two entries then, watch out that the
|
||||||
|
* difference between the requested size and the size of the
|
||||||
|
* chunk found is large enough for another freelist entry; if
|
||||||
|
* not, just enlarge the request size to what we have found,
|
||||||
|
* and use the entire chunk.
|
||||||
|
*/
|
||||||
|
if (s) {
|
||||||
|
if (s - len < sizeof(struct __freelist)) {
|
||||||
|
/* Disconnect it from freelist and return it. */
|
||||||
|
if (sfp2)
|
||||||
|
sfp2->nx = sfp1->nx;
|
||||||
|
else
|
||||||
|
__flp = sfp1->nx;
|
||||||
|
return &(sfp1->nx);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Split them up. Note that we leave the first part
|
||||||
|
* as the new (smaller) freelist entry, and return the
|
||||||
|
* upper portion to the caller. This saves us the
|
||||||
|
* work to fix up the freelist chain; we just need to
|
||||||
|
* fixup the size of the current entry, and note down
|
||||||
|
* the size of the new chunk before returning it to
|
||||||
|
* the caller.
|
||||||
|
*/
|
||||||
|
cp = (char *)sfp1;
|
||||||
|
s -= len;
|
||||||
|
cp += s;
|
||||||
|
sfp2 = (struct __freelist *)cp;
|
||||||
|
sfp2->sz = len;
|
||||||
|
sfp1->sz = s - sizeof(size_t);
|
||||||
|
return &(sfp2->nx);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Step 3: If the request could not be satisfied from a
|
||||||
|
* freelist entry, just prepare a new chunk. This means we
|
||||||
|
* need to obtain more memory first. The largest address just
|
||||||
|
* not allocated so far is remembered in the brkval variable.
|
||||||
|
* Under Unix, the "break value" was the end of the data
|
||||||
|
* segment as dynamically requested from the operating system.
|
||||||
|
* Since we don't have an operating system, just make sure
|
||||||
|
* that we don't collide with the stack.
|
||||||
|
*/
|
||||||
|
cp = STACK_POINTER() - __MALLOC_MARGIN__;
|
||||||
|
if (cp <= __brkval)
|
||||||
|
/*
|
||||||
|
* Memory exhausted.
|
||||||
|
*/
|
||||||
|
return 0;
|
||||||
|
avail = cp - __brkval;
|
||||||
|
/*
|
||||||
|
* Both tests below are needed to catch the case len >= 0xfffe.
|
||||||
|
*/
|
||||||
|
if (avail >= len && avail >= len + sizeof(size_t)) {
|
||||||
|
fp1 = (struct __freelist *)__brkval;
|
||||||
|
__brkval += len + sizeof(size_t);
|
||||||
|
__brkval_maximum = __brkval;
|
||||||
|
fp1->sz = len;
|
||||||
|
return &(fp1->nx);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Step 4: There's no help, just fail. :-/
|
||||||
|
*/
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
free(void *p)
|
||||||
|
{
|
||||||
|
struct __freelist *fp1, *fp2, *fpnew;
|
||||||
|
char *cp1, *cp2, *cpnew;
|
||||||
|
|
||||||
|
/* ISO C says free(NULL) must be a no-op */
|
||||||
|
if (p == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
cpnew = p;
|
||||||
|
cpnew -= sizeof(size_t);
|
||||||
|
fpnew = (struct __freelist *)cpnew;
|
||||||
|
fpnew->nx = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Trivial case first: if there's no freelist yet, our entry
|
||||||
|
* will be the only one on it. If this is the last entry, we
|
||||||
|
* can reduce __brkval instead.
|
||||||
|
*/
|
||||||
|
if (__flp == 0) {
|
||||||
|
if ((char *)p + fpnew->sz == __brkval)
|
||||||
|
__brkval = cpnew;
|
||||||
|
else
|
||||||
|
__flp = fpnew;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Now, find the position where our new entry belongs onto the
|
||||||
|
* freelist. Try to aggregate the chunk with adjacent chunks
|
||||||
|
* if possible.
|
||||||
|
*/
|
||||||
|
for (fp1 = __flp, fp2 = 0;
|
||||||
|
fp1;
|
||||||
|
fp2 = fp1, fp1 = fp1->nx) {
|
||||||
|
if (fp1 < fpnew)
|
||||||
|
continue;
|
||||||
|
cp1 = (char *)fp1;
|
||||||
|
fpnew->nx = fp1;
|
||||||
|
if ((char *)&(fpnew->nx) + fpnew->sz == cp1) {
|
||||||
|
/* upper chunk adjacent, assimilate it */
|
||||||
|
fpnew->sz += fp1->sz + sizeof(size_t);
|
||||||
|
fpnew->nx = fp1->nx;
|
||||||
|
}
|
||||||
|
if (fp2 == 0) {
|
||||||
|
/* new head of freelist */
|
||||||
|
__flp = fpnew;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Note that we get here either if we hit the "break" above,
|
||||||
|
* or if we fell off the end of the loop. The latter means
|
||||||
|
* we've got a new topmost chunk. Either way, try aggregating
|
||||||
|
* with the lower chunk if possible.
|
||||||
|
*/
|
||||||
|
fp2->nx = fpnew;
|
||||||
|
cp2 = (char *)&(fp2->nx);
|
||||||
|
if (cp2 + fp2->sz == cpnew) {
|
||||||
|
/* lower junk adjacent, merge */
|
||||||
|
fp2->sz += fpnew->sz + sizeof(size_t);
|
||||||
|
fp2->nx = fpnew->nx;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* If there's a new topmost chunk, lower __brkval instead.
|
||||||
|
*/
|
||||||
|
for (fp1 = __flp, fp2 = 0;
|
||||||
|
fp1->nx != 0;
|
||||||
|
fp2 = fp1, fp1 = fp1->nx)
|
||||||
|
/* advance to entry just before end of list */;
|
||||||
|
cp2 = (char *)&(fp1->nx);
|
||||||
|
if (cp2 + fp1->sz == __brkval) {
|
||||||
|
if (fp2 == NULL)
|
||||||
|
/* Freelist is empty now. */
|
||||||
|
__flp = NULL;
|
||||||
|
else
|
||||||
|
fp2->nx = NULL;
|
||||||
|
__brkval = cp2 - sizeof(size_t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void *
|
||||||
|
realloc(void *ptr, size_t len)
|
||||||
|
{
|
||||||
|
struct __freelist *fp1, *fp2, *fp3, *ofp3;
|
||||||
|
char *cp, *cp1;
|
||||||
|
void *memp;
|
||||||
|
size_t s, incr;
|
||||||
|
|
||||||
|
/* Trivial case, required by C standard. */
|
||||||
|
if (ptr == 0)
|
||||||
|
return malloc(len);
|
||||||
|
|
||||||
|
cp1 = (char *)ptr;
|
||||||
|
cp1 -= sizeof(size_t);
|
||||||
|
fp1 = (struct __freelist *)cp1;
|
||||||
|
|
||||||
|
cp = (char *)ptr + len; /* new next pointer */
|
||||||
|
if (cp < cp1)
|
||||||
|
/* Pointer wrapped across top of RAM, fail. */
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* See whether we are growing or shrinking. When shrinking,
|
||||||
|
* we split off a chunk for the released portion, and call
|
||||||
|
* free() on it. Therefore, we can only shrink if the new
|
||||||
|
* size is at least sizeof(struct __freelist) smaller than the
|
||||||
|
* previous size.
|
||||||
|
*/
|
||||||
|
if (len <= fp1->sz) {
|
||||||
|
/* The first test catches a possible unsigned int
|
||||||
|
* rollover condition. */
|
||||||
|
if (fp1->sz <= sizeof(struct __freelist) ||
|
||||||
|
len > fp1->sz - sizeof(struct __freelist))
|
||||||
|
return ptr;
|
||||||
|
fp2 = (struct __freelist *)cp;
|
||||||
|
fp2->sz = fp1->sz - len - sizeof(size_t);
|
||||||
|
fp1->sz = len;
|
||||||
|
free(&(fp2->nx));
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we get here, we are growing. First, see whether there
|
||||||
|
* is space in the free list on top of our current chunk.
|
||||||
|
*/
|
||||||
|
incr = len - fp1->sz;
|
||||||
|
cp = (char *)ptr + fp1->sz;
|
||||||
|
fp2 = (struct __freelist *)cp;
|
||||||
|
for (s = 0, ofp3 = 0, fp3 = __flp;
|
||||||
|
fp3;
|
||||||
|
ofp3 = fp3, fp3 = fp3->nx) {
|
||||||
|
if (fp3 == fp2 && fp3->sz + sizeof(size_t) >= incr) {
|
||||||
|
/* found something that fits */
|
||||||
|
if (fp3->sz + sizeof(size_t) - incr > sizeof(struct __freelist)) {
|
||||||
|
/* split off a new freelist entry */
|
||||||
|
cp = (char *)ptr + len;
|
||||||
|
fp2 = (struct __freelist *)cp;
|
||||||
|
fp2->nx = fp3->nx;
|
||||||
|
fp2->sz = fp3->sz - incr;
|
||||||
|
fp1->sz = len;
|
||||||
|
} else {
|
||||||
|
/* it just fits, so use it entirely */
|
||||||
|
fp1->sz += fp3->sz + sizeof(size_t);
|
||||||
|
fp2 = fp3->nx;
|
||||||
|
}
|
||||||
|
if (ofp3)
|
||||||
|
ofp3->nx = fp2;
|
||||||
|
else
|
||||||
|
__flp = fp2;
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Find the largest chunk on the freelist while
|
||||||
|
* walking it.
|
||||||
|
*/
|
||||||
|
if (fp3->sz > s)
|
||||||
|
s = fp3->sz;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* If we are the topmost chunk in memory, and there was no
|
||||||
|
* large enough chunk on the freelist that could be re-used
|
||||||
|
* (by a call to malloc() below), quickly extend the
|
||||||
|
* allocation area if possible, without need to copy the old
|
||||||
|
* data.
|
||||||
|
*/
|
||||||
|
if (__brkval == (char *)ptr + fp1->sz && len > s) {
|
||||||
|
cp = (char *)ptr + len;
|
||||||
|
cp1 = STACK_POINTER() - __MALLOC_MARGIN__;
|
||||||
|
if (cp < cp1) {
|
||||||
|
__brkval = cp;
|
||||||
|
__brkval_maximum = cp;
|
||||||
|
fp1->sz = len;
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
/* If that failed, we are out of luck. */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Call malloc() for a new chunk, then copy over the data, and
|
||||||
|
* release the old region.
|
||||||
|
*/
|
||||||
|
if ((memp = malloc(len)) == 0)
|
||||||
|
return 0;
|
||||||
|
memcpy(memp, ptr, fp1->sz);
|
||||||
|
free(ptr);
|
||||||
|
return memp;
|
||||||
|
}
|
||||||
|
|
@ -5,11 +5,21 @@ void * operator new(size_t size)
|
|||||||
return malloc(size);
|
return malloc(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void * operator new[](size_t size)
|
||||||
|
{
|
||||||
|
return malloc(size);
|
||||||
|
}
|
||||||
|
|
||||||
void operator delete(void * ptr)
|
void operator delete(void * ptr)
|
||||||
{
|
{
|
||||||
free(ptr);
|
free(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void operator delete[](void * ptr)
|
||||||
|
{
|
||||||
|
free(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);};
|
int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);};
|
||||||
void __cxa_guard_release (__guard *g) {*(char *)g = 1;};
|
void __cxa_guard_release (__guard *g) {*(char *)g = 1;};
|
||||||
void __cxa_guard_abort (__guard *) {};
|
void __cxa_guard_abort (__guard *) {};
|
||||||
|
@ -8,7 +8,9 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
void * operator new(size_t size);
|
void * operator new(size_t size);
|
||||||
|
void * operator new[](size_t size);
|
||||||
void operator delete(void * ptr);
|
void operator delete(void * ptr);
|
||||||
|
void operator delete[](void * ptr);
|
||||||
|
|
||||||
__extension__ typedef int __guard __attribute__((mode (__DI__)));
|
__extension__ typedef int __guard __attribute__((mode (__DI__)));
|
||||||
|
|
||||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user