diff --git a/iDNA3/iDNA.icns b/iDNA3/iDNA.icns new file mode 100644 index 0000000..e3e8c4d Binary files /dev/null and b/iDNA3/iDNA.icns differ diff --git a/iDNA3/iDNA3.xcodeproj/project.pbxproj b/iDNA3/iDNA3.xcodeproj/project.pbxproj new file mode 100644 index 0000000..22d538d --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/project.pbxproj @@ -0,0 +1,344 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 4D1C5EC4167E6573001365B4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D1C5EC3167E6573001365B4 /* Cocoa.framework */; }; + 4D1C5ECE167E6573001365B4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4D1C5ECC167E6573001365B4 /* InfoPlist.strings */; }; + 4D1C5ED0167E6573001365B4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D1C5ECF167E6573001365B4 /* main.m */; }; + 4D1C5ED4167E6574001365B4 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 4D1C5ED2167E6574001365B4 /* Credits.rtf */; }; + 4D1C5ED7167E6574001365B4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D1C5ED6167E6574001365B4 /* AppDelegate.m */; }; + 4D1C5EDA167E6574001365B4 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4D1C5ED8167E6574001365B4 /* MainMenu.xib */; }; + 4D1C5EE4167E8DA3001365B4 /* Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D1C5EE3167E8DA3001365B4 /* Cell.m */; }; + 4D33AB1216C306B100354C1C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4D33AB1416C306B100354C1C /* Localizable.strings */; }; + 4D52D1F21687257C00B579EA /* iDNA.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4D52D1F11687257C00B579EA /* iDNA.icns */; }; + 4DB5AC2916878E640043316A /* PreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DB5AC2816878E640043316A /* PreferencesController.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 4D1C5EBF167E6573001365B4 /* iDNA3.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iDNA3.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4D1C5EC3167E6573001365B4 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 4D1C5EC6167E6573001365B4 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 4D1C5EC7167E6573001365B4 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 4D1C5EC8167E6573001365B4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 4D1C5ECB167E6573001365B4 /* iDNA3-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iDNA3-Info.plist"; sourceTree = ""; }; + 4D1C5ECD167E6573001365B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 4D1C5ECF167E6573001365B4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 4D1C5ED1167E6573001365B4 /* iDNA3-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iDNA3-Prefix.pch"; sourceTree = ""; }; + 4D1C5ED3167E6574001365B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + 4D1C5ED5167E6574001365B4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 4D1C5ED6167E6574001365B4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 4D1C5ED9167E6574001365B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; + 4D1C5EE2167E8DA3001365B4 /* Cell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cell.h; sourceTree = ""; }; + 4D1C5EE3167E8DA3001365B4 /* Cell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Cell.m; sourceTree = ""; }; + 4D33AB0D16C3006300354C1C /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/MainMenu.xib; sourceTree = ""; }; + 4D33AB0E16C3006300354C1C /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; + 4D33AB0F16C3006300354C1C /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = ru; path = ru.lproj/Credits.rtf; sourceTree = ""; }; + 4D33AB1316C306B100354C1C /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; + 4D33AB1516C306B700354C1C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + 4D3F15B316C59EB100594272 /* iDNADefine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iDNADefine.h; sourceTree = ""; }; + 4D52D1F11687257C00B579EA /* iDNA.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = iDNA.icns; sourceTree = ""; }; + 4DB5AC2716878E640043316A /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreferencesController.h; sourceTree = ""; }; + 4DB5AC2816878E640043316A /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreferencesController.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4D1C5EBC167E6573001365B4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D1C5EC4167E6573001365B4 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4D1C5EB4167E6573001365B4 = { + isa = PBXGroup; + children = ( + 4D52D1F11687257C00B579EA /* iDNA.icns */, + 4D1C5EC9167E6573001365B4 /* iDNA3 */, + 4D1C5EC2167E6573001365B4 /* Frameworks */, + 4D1C5EC0167E6573001365B4 /* Products */, + ); + sourceTree = ""; + }; + 4D1C5EC0167E6573001365B4 /* Products */ = { + isa = PBXGroup; + children = ( + 4D1C5EBF167E6573001365B4 /* iDNA3.app */, + ); + name = Products; + sourceTree = ""; + }; + 4D1C5EC2167E6573001365B4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4D1C5EC3167E6573001365B4 /* Cocoa.framework */, + 4D1C5EC5167E6573001365B4 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 4D1C5EC5167E6573001365B4 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 4D1C5EC6167E6573001365B4 /* AppKit.framework */, + 4D1C5EC7167E6573001365B4 /* CoreData.framework */, + 4D1C5EC8167E6573001365B4 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 4D1C5EC9167E6573001365B4 /* iDNA3 */ = { + isa = PBXGroup; + children = ( + 4D3F15B316C59EB100594272 /* iDNADefine.h */, + 4D1C5ED5167E6574001365B4 /* AppDelegate.h */, + 4D1C5ED6167E6574001365B4 /* AppDelegate.m */, + 4D1C5EE2167E8DA3001365B4 /* Cell.h */, + 4D1C5EE3167E8DA3001365B4 /* Cell.m */, + 4DB5AC2716878E640043316A /* PreferencesController.h */, + 4DB5AC2816878E640043316A /* PreferencesController.m */, + 4D1C5ED8167E6574001365B4 /* MainMenu.xib */, + 4D33AB1416C306B100354C1C /* Localizable.strings */, + 4D1C5ECA167E6573001365B4 /* Supporting Files */, + ); + path = iDNA3; + sourceTree = ""; + }; + 4D1C5ECA167E6573001365B4 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 4D1C5ECB167E6573001365B4 /* iDNA3-Info.plist */, + 4D1C5ECC167E6573001365B4 /* InfoPlist.strings */, + 4D1C5ECF167E6573001365B4 /* main.m */, + 4D1C5ED1167E6573001365B4 /* iDNA3-Prefix.pch */, + 4D1C5ED2167E6574001365B4 /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4D1C5EBE167E6573001365B4 /* iDNA3 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4D1C5EDD167E6574001365B4 /* Build configuration list for PBXNativeTarget "iDNA3" */; + buildPhases = ( + 4D1C5EBB167E6573001365B4 /* Sources */, + 4D1C5EBC167E6573001365B4 /* Frameworks */, + 4D1C5EBD167E6573001365B4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iDNA3; + productName = iDNA3; + productReference = 4D1C5EBF167E6573001365B4 /* iDNA3.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 4D1C5EB6167E6573001365B4 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = Eraser; + }; + buildConfigurationList = 4D1C5EB9167E6573001365B4 /* Build configuration list for PBXProject "iDNA3" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ru, + ); + mainGroup = 4D1C5EB4167E6573001365B4; + productRefGroup = 4D1C5EC0167E6573001365B4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 4D1C5EBE167E6573001365B4 /* iDNA3 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 4D1C5EBD167E6573001365B4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D1C5ECE167E6573001365B4 /* InfoPlist.strings in Resources */, + 4D1C5ED4167E6574001365B4 /* Credits.rtf in Resources */, + 4D1C5EDA167E6574001365B4 /* MainMenu.xib in Resources */, + 4D52D1F21687257C00B579EA /* iDNA.icns in Resources */, + 4D33AB1216C306B100354C1C /* Localizable.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4D1C5EBB167E6573001365B4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D1C5ED0167E6573001365B4 /* main.m in Sources */, + 4D1C5ED7167E6574001365B4 /* AppDelegate.m in Sources */, + 4D1C5EE4167E8DA3001365B4 /* Cell.m in Sources */, + 4DB5AC2916878E640043316A /* PreferencesController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 4D1C5ECC167E6573001365B4 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 4D1C5ECD167E6573001365B4 /* en */, + 4D33AB0E16C3006300354C1C /* ru */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 4D1C5ED2167E6574001365B4 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 4D1C5ED3167E6574001365B4 /* en */, + 4D33AB0F16C3006300354C1C /* ru */, + ); + name = Credits.rtf; + sourceTree = ""; + }; + 4D1C5ED8167E6574001365B4 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 4D1C5ED9167E6574001365B4 /* en */, + 4D33AB0D16C3006300354C1C /* ru */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; + 4D33AB1416C306B100354C1C /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 4D33AB1316C306B100354C1C /* ru */, + 4D33AB1516C306B700354C1C /* en */, + ); + name = Localizable.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 4D1C5EDB167E6574001365B4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 4D1C5EDC167E6574001365B4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + SDKROOT = macosx; + }; + name = Release; + }; + 4D1C5EDE167E6574001365B4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "iDNA3/iDNA3-Prefix.pch"; + INFOPLIST_FILE = "iDNA3/iDNA3-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 4D1C5EDF167E6574001365B4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "iDNA3/iDNA3-Prefix.pch"; + INFOPLIST_FILE = "iDNA3/iDNA3-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4D1C5EB9167E6573001365B4 /* Build configuration list for PBXProject "iDNA3" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4D1C5EDB167E6574001365B4 /* Debug */, + 4D1C5EDC167E6574001365B4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4D1C5EDD167E6574001365B4 /* Build configuration list for PBXNativeTarget "iDNA3" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4D1C5EDE167E6574001365B4 /* Debug */, + 4D1C5EDF167E6574001365B4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 4D1C5EB6167E6573001365B4 /* Project object */; +} diff --git a/iDNA3/iDNA3.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..65970d9 --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/UserInterfaceState.xcuserstate b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..974b414 Binary files /dev/null and b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/WorkspaceSettings.xcsettings b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..659c876 --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/WorkspaceSettings.xcsettings @@ -0,0 +1,10 @@ + + + + + HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges + + SnapshotAutomaticallyBeforeSignificantChanges + + + diff --git a/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..05301bc --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/iDNA3.xcscheme b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/iDNA3.xcscheme new file mode 100644 index 0000000..a6c742c --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/iDNA3.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/xcschememanagement.plist b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..9f02d9d --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + iDNA3.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 4D1C5EBE167E6573001365B4 + + primary + + + + + diff --git a/iDNA3/iDNA3/AppDelegate.h b/iDNA3/iDNA3/AppDelegate.h new file mode 100644 index 0000000..8f311ae --- /dev/null +++ b/iDNA3/iDNA3/AppDelegate.h @@ -0,0 +1,70 @@ +// +// AppDelegate.h +// iDNA3 +// + +#import +#import "Cell.h" +#import "PreferencesController.h" +#import "iDNADefine.h" + +@interface AppDelegate : NSResponder /*NSObject*/ +{ + BOOL start; + BOOL done; + NSInteger generation; + NSInteger smallestDistance; + NSMutableArray *population; + NSString *nucleoString; + NSURL *selectedFile; +} + +@property (assign) IBOutlet NSWindow *window; + +@property (weak) IBOutlet NSTextField *currentGeneration; +@property (weak) IBOutlet NSTextField *bestMatch; + +@property (weak) IBOutlet NSLevelIndicator *matchIndicator; +@property (weak) IBOutlet NSLevelIndicatorCell *indicatorCell; + +@property (weak) IBOutlet NSScrollView *viewGoalDNA; +@property (unsafe_unretained) IBOutlet NSTextView *textViewGoalDNA; + +@property (weak) IBOutlet NSButton *startEvolution; +@property (weak) IBOutlet NSButton *pause; +@property (weak) IBOutlet NSButton *loadGoalDNA; + +@property (weak) IBOutlet NSTextField *populationField; +@property (weak) IBOutlet NSTextField *lenthField; +@property (weak) IBOutlet NSTextField *rateField; + +@property (weak) IBOutlet NSSlider *populationSlider; +@property (weak) IBOutlet NSSlider *lenthSlider; +@property (weak) IBOutlet NSSlider *rateSlider; + +@property NSInteger populationSize; +@property NSInteger DNALength; +@property NSInteger mutationRate; + +@property Cell *goalDNA; +// @property DataController *dataContainer; + +- (void)setPopulationSize:(NSInteger)size DNALength:(NSInteger)length andMutationRate:(NSInteger)rate; +- (void)changePopulationnSize:(NSInteger)size orDNAString:(NSString *)string orMutationRate:(NSInteger)rate; +- (void)setSmallestDistance:(NSInteger)distance; +- (void)setGeneration:(NSInteger)gen; + +- (IBAction)startEvolution:(id)sender; +- (IBAction)pause:(id)sender; +- (IBAction)loadGoal:(id)sender; + +- (IBAction)openDocument:(id)sender; +- (IBAction)saveDocument:(id)sender; + +- (void)performEvolutionInBackground; +- (void)mainThreadAlert; +- (void)loadAlert:(NSAlert *)alert returnCode:(int)button contextInfo:(void *)context; + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context; + +@end diff --git a/iDNA3/iDNA3/AppDelegate.m b/iDNA3/iDNA3/AppDelegate.m new file mode 100644 index 0000000..1ad6c7f --- /dev/null +++ b/iDNA3/iDNA3/AppDelegate.m @@ -0,0 +1,380 @@ +// +// AppDelegate.m +// iDNA3 +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +@synthesize window; +//NSTextField +@synthesize currentGeneration; +@synthesize bestMatch; +//NSLevelIndicator +@synthesize matchIndicator; +@synthesize indicatorCell; +//NSScrollView +@synthesize viewGoalDNA; +@synthesize textViewGoalDNA; +//NSButton +@synthesize startEvolution; +@synthesize pause; +@synthesize loadGoalDNA; +//NSTextField +@synthesize populationField; +@synthesize lenthField; +@synthesize rateField; +//NSSlider +@synthesize populationSlider; +@synthesize lenthSlider; +@synthesize rateSlider; +// +@synthesize populationSize; +@synthesize DNALength; +@synthesize mutationRate; +@synthesize goalDNA; +// @synthesize dataContainer; + + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + + [self setPopulationSize:[PreferencesController preferencesPopulationSize] + DNALength:[[PreferencesController preferencesDNAString] length] + andMutationRate:[PreferencesController preferencesMutateRate]]; + + [self addObserver:self forKeyPath:iDNAPopulation options:NSKeyValueObservingOptionNew context:nil]; + [self addObserver:self forKeyPath:iDNALength options:NSKeyValueObservingOptionNew context:nil]; + [self addObserver:self forKeyPath:iDNARate options:NSKeyValueObservingOptionNew context:nil]; + + [self pause:self]; // [pause setEnabled: NO]; + [window makeFirstResponder: nil]; // disable focus + +} + + +- (void)setPopulationSize:(NSInteger)size DNALength:(NSInteger)length andMutationRate:(NSInteger)rate +{ + start = NO; + done = YES; + + size = size >= 4 ? size : 4; + length = length >= 5 ? length : 5; + rate = rate > 0 ? rate : 1; + rate = rate < 99 ? rate : 99; + + [self setValue:[NSNumber numberWithInteger:size] forKey:iDNAPopulation]; + [self setValue:[NSNumber numberWithInteger:length] forKey:iDNALength]; + [self setValue:[NSNumber numberWithInteger: rate] forKey:iDNARate]; + + population = [NSMutableArray arrayWithCapacity:size]; + + [self setSmallestDistance: DNALength]; + [self setGeneration: 1]; + + goalDNA = [[Cell alloc] initWithDNALength:length]; + + [textViewGoalDNA setString:goalDNA.nucleo]; +} + + +- (void)changePopulationnSize:(NSInteger)size orDNAString:(NSString *)string orMutationRate:(NSInteger)rate +{ + start = NO; + done = YES; + + [self setValue:[NSNumber numberWithInteger:size] forKey:iDNAPopulation]; + [self setValue:[NSNumber numberWithInteger:[string length]] forKey:iDNALength]; + [self setValue:[NSNumber numberWithInteger: rate] forKey:iDNARate]; + + population = [NSMutableArray arrayWithCapacity:size]; + + [self setSmallestDistance: DNALength]; + [self setGeneration: 1]; + + [goalDNA changeDNAString:string]; + + [textViewGoalDNA setString:goalDNA.nucleo]; +} + + +- (void)setSmallestDistance:(NSInteger)distance +{ + NSInteger percent = (DNALength - distance) *100 / DNALength; + + [bestMatch setStringValue:[NSString stringWithFormat: NSLocalizedString(@"BEST_MATCH", "Best match"), percent]]; // [bestMatch setStringValue:[NSString stringWithFormat: @"Best individual match - %ld%%", percent]]; + [matchIndicator setIntegerValue: percent]; + smallestDistance = distance; +} + + +- (void)setGeneration:(NSInteger)gen +{ + [currentGeneration setStringValue:[NSString stringWithFormat: NSLocalizedString(@"GENERATION", "Generation"), gen]]; // [currentGeneration setStringValue:[NSString stringWithFormat: @"Generation: %ld", gen]]; + generation = gen; +} + + +- (IBAction)startEvolution:(id)sender +{ + [self performSelectorInBackground:@selector(performEvolutionInBackground) withObject:nil]; +} + + +- (IBAction)pause:(id)sender +{ + start = NO; + + [pause setEnabled: NO]; + [startEvolution setEnabled: YES]; + [loadGoalDNA setEnabled: YES]; + + [populationField setEnabled: YES]; + [lenthField setEnabled: YES]; + [rateField setEnabled: YES]; + + [populationSlider setEnabled: YES]; + [lenthSlider setEnabled: YES]; + [rateSlider setEnabled: YES]; +} + + +- (IBAction)loadGoal:(id)sender +{ + NSString *string = [PreferencesController preferencesDNAString]; + if ([[goalDNA DNAString] length] != [string length]) + { + NSAlert *alert = [[NSAlert alloc] init]; + [alert addButtonWithTitle:NSLocalizedString(@"PROCEED", "Proceed")]; // [alert addButtonWithTitle:@"Proceed"]; + [alert addButtonWithTitle:NSLocalizedString(@"CANCEL", "Cancel")]; // [alert addButtonWithTitle:@"Cancel"]; + [alert setMessageText:NSLocalizedString(@"MISMATCH_DNA", "Different size")]; // [alert setMessageText:@"New DNA has different size!"]; + [alert beginSheetModalForWindow:window modalDelegate:self didEndSelector:@selector(loadAlert:returnCode:contextInfo:) contextInfo:nil]; + } + else + { + [self changePopulationnSize:[PreferencesController preferencesPopulationSize] + orDNAString:[PreferencesController preferencesDNAString] + orMutationRate:[PreferencesController preferencesMutateRate]]; + } +} + + +- (IBAction)openDocument:(id)sender +{ + NSOpenPanel *open = [NSOpenPanel openPanel]; + [open setAllowedFileTypes:[NSArray arrayWithObject:@"iDNA"]]; + [open setAllowsOtherFileTypes:NO]; + + NSInteger result = [open runModal]; + + if (result == NSOKButton) + { + selectedFile = [open URL]; + + NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"LOAD_DATA", "load from file") + defaultButton:NSLocalizedString(@"_YES_", "Yes") + alternateButton:NSLocalizedString(@"_NO_", "No") + otherButton:nil + informativeTextWithFormat:@""]; + + [alert beginSheetModalForWindow:window modalDelegate:self didEndSelector:@selector(openAlert:returnCode:contextInfo:) contextInfo:nil]; + + } + +} + +- (void)openAlert:(NSAlert *)alert returnCode:(int)button contextInfo:(void *)context +{ + if(button == NSAlertDefaultReturn) + { + NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc] initWithContentsOfURL:selectedFile]; + + [goalDNA changeDNAString:[mutableDict objectForKey:iDNAString]]; + [self setPopulationSize:[[mutableDict objectForKey:iDNAPopulation] integerValue] + DNALength:[[mutableDict objectForKey:iDNALength] integerValue] + andMutationRate:[[mutableDict objectForKey:iDNARate] integerValue]]; + } +} + +- (IBAction)saveDocument:(id)sender +{ + NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc] init]; + + [mutableDict setObject:[goalDNA DNAString] forKey:iDNAString]; + [mutableDict setObject:[NSNumber numberWithInteger:populationSize] forKey:iDNAPopulation]; + [mutableDict setObject:[NSNumber numberWithInteger:DNALength] forKey:iDNALength]; + [mutableDict setObject:[NSNumber numberWithInteger:mutationRate] forKey:iDNARate]; + + NSSavePanel *save = [NSSavePanel savePanel]; + [save setAllowedFileTypes:[NSArray arrayWithObject:@"iDNA"]]; + [save setAllowsOtherFileTypes:NO]; + + NSInteger result = [save runModal]; + + if (result == NSOKButton) + { + NSString *selected = [[save URL] path]; + + [mutableDict writeToFile:selected atomically:NO]; + } + +} + + +- (void)performEvolutionInBackground +{ + start = YES; + + [pause setEnabled: YES]; + [startEvolution setEnabled: NO]; + [loadGoalDNA setEnabled: NO]; + + [populationField setEnabled: NO]; + [lenthField setEnabled: NO]; + [rateField setEnabled: NO]; + + [populationSlider setEnabled: NO]; + [lenthSlider setEnabled: NO]; + [rateSlider setEnabled: NO]; + + NSPoint mlPoint = [NSEvent mouseLocation]; + + while (mlPoint.x == [NSEvent mouseLocation].x || mlPoint.y == [NSEvent mouseLocation].y); + + float distance = sqrtf((mlPoint.x - [NSEvent mouseLocation].x) * (mlPoint.x - [NSEvent mouseLocation].x) + (mlPoint.y - [NSEvent mouseLocation].y) * (mlPoint.y - [NSEvent mouseLocation].y)) * 100; + +// NSLog(@"Distance = %f", distance); + + srandom((unsigned)distance); + + if (generation == 1 || done == YES) + { + done = NO; + [self setGeneration:1]; + + for (int i = 0; i < populationSize; i++) population[i] = [[Cell alloc] initWithBaseCell:goalDNA andMutationPercents:mutationRate]; + } + + [self setSmallestDistance:[population[0] humming]]; + + while (start) + { + population = [Cell sort:population]; + + [self setSmallestDistance:[population[0] humming]]; + + if ([population[0] humming] == 0) + { + done = YES; + break; + } + + int i = populationSize / 2; + + do + { + int indexA = random() % (populationSize / 2); + int indexB; + + while ((indexB = random() % (populationSize / 2)) == indexA); + + [population[i] matingWithParrentA:population[indexA] andParrentB:population[indexB]]; + } + while (start && [population[i] hummingDistance:goalDNA] != 0 && ++i < populationSize); + + + if (start) [self setGeneration:++generation]; + } + + start = NO; + + [self performSelectorOnMainThread:@selector(mainThreadAlert) withObject:nil waitUntilDone:NO]; +} + + +- (void)mainThreadAlert +{ + [self pause:self]; + + if (done) + { + NSString *info; + NSAlert *alert = [[NSAlert alloc] init]; + + switch (generation) + { + case 1: info = NSLocalizedString(@"GENERATION_1", "1th"); // @"1th"; + break; + + case 2: info = NSLocalizedString(@"GENERATION_2", "2nd"); // @"2nd"; + break; + + case 3: info = NSLocalizedString(@"GENERATION_3", "3rd"); // @"3rd"; + break; + + default: info = [NSString stringWithFormat:NSLocalizedString(@"GENERATION_NXT", "...th"), generation]; // [NSString stringWithFormat:@"%ldth", generation]; + } + + [alert addButtonWithTitle:NSLocalizedString(@"OK", "Ok")]; // [alert addButtonWithTitle:@"Ok"]; + [alert setMessageText:[NSString stringWithFormat:NSLocalizedString(@"MATCH_REATCHED", "Match reached"), info]]; // [alert setMessageText:[NSString stringWithFormat:@"Total match reached at %@ generation", info]]; + [alert beginSheetModalForWindow:window modalDelegate:self didEndSelector:nil contextInfo:nil]; + } +} + + +- (void)loadAlert:(NSAlert *)alert returnCode:(int)button contextInfo:(void *)context +{ + if (button == NSAlertFirstButtonReturn) // Proceed + { + [self changePopulationnSize:[PreferencesController preferencesPopulationSize] + orDNAString:[PreferencesController preferencesDNAString] + orMutationRate:[PreferencesController preferencesMutateRate]]; + } +} + + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + if ([keyPath compare:iDNALength] == NSOrderedSame) + { + [goalDNA changeDNALength:DNALength]; + [textViewGoalDNA setString:goalDNA.nucleo]; + } + + done = YES; +} + +- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender +{ + NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"WANT_QUIT", "want to quit?") + defaultButton:NSLocalizedString(@"_YES_", "Yes") + alternateButton:NSLocalizedString(@"_NO_", "No") + otherButton:nil + informativeTextWithFormat:@""]; + + [alert beginSheetModalForWindow:window modalDelegate:self didEndSelector:@selector(quitAlert:returnCode:contextInfo:) contextInfo:nil]; + + return NSTerminateLater; +} + +- (void)quitAlert:(NSAlert *)alert returnCode:(int)button contextInfo:(void *)context +{ + + [NSApp replyToApplicationShouldTerminate: (button == NSAlertDefaultReturn) ? NSTerminateNow : NSTerminateCancel]; +} + +- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication +{ + return YES; +} + + +- (void)applicationWillTerminate:(NSNotification *)aNotification +{ + [PreferencesController setPreferencesDNAString:[goalDNA DNAString]]; + [PreferencesController setPreferencesMutateRate:mutationRate]; + [PreferencesController setPreferencesPopulationSize:populationSize]; +} + +@end diff --git a/iDNA3/iDNA3/Cell.h b/iDNA3/iDNA3/Cell.h new file mode 100644 index 0000000..efd3f14 --- /dev/null +++ b/iDNA3/iDNA3/Cell.h @@ -0,0 +1,29 @@ +// +// Cell.h +// iDNA3 +// + +#import + +@interface Cell : NSObject +{ + NSInteger previousLength; + +} + +@property NSMutableString *nucleo; +@property int humming; + +- (Cell *)initWithDNALength:(NSInteger)length; +- (Cell *)initWithDNAString:(NSString *)string; +- (Cell *)initWithBaseCell:(Cell *)base andMutationPercents:(int)percents; +- (void)changeDNALength:(NSInteger)length; +- (void)changeDNAString:(NSString *)string; +- (NSString *)DNAString; +- (void)mutateWithBaseCell:(Cell *)base andMutationPercents:(int)percents; +- (void)mutateWithPercents:(int)percents; +- (void)matingWithParrentA:(Cell *)parentA andParrentB:(Cell *)parentB; ++ (NSMutableArray *)sort:(NSMutableArray *)array; +- (int)hummingDistance:(Cell *)base; + +@end diff --git a/iDNA3/iDNA3/Cell.m b/iDNA3/iDNA3/Cell.m new file mode 100644 index 0000000..0ede820 --- /dev/null +++ b/iDNA3/iDNA3/Cell.m @@ -0,0 +1,200 @@ +// +// Cell.m +// iDNA3 +// + +#import "Cell.h" + +@implementation Cell + +@synthesize nucleo; +@synthesize humming; + +char nucleoBase[] = {'A', 'C', 'G', 'T'}; + +- (Cell *)initWithDNALength:(NSInteger)length +{ + if (self = [super init]) + { + previousLength = 0; + + [self changeDNALength:length]; + } + + return self; +} + +- (Cell *)initWithBaseCell:(Cell *)base andMutationPercents:(int)percents +{ + if (self = [super init]) + { + const char *DNAArray = [[base DNAString] UTF8String]; + int DNALength = (int)[[base DNAString] length]; + char temp[DNALength]; + BOOL mut[DNALength]; + BOOL fill; + int i, j; + char n; + + if (percents <= 0) return [NSMutableString stringWithUTF8String:DNAArray]; + + percents = percents > 100 ? 100 : percents; + + if (percents > 50) + { + fill = TRUE; + percents = 100 - percents; + } + else fill = FALSE; + + for (i = 0; i < DNALength; i++) mut[i] = fill; + + i = 0; + + while (i < (int)round(DNALength * percents /100.0)) + { + j = arc4random() % DNALength; + + if (mut[j] == fill) + { + mut[j] = !fill; + i++; + } + } + + for (i = 0; i < DNALength; i++) + { + n = DNAArray[i]; + + if (mut[i]) + { + do + n = nucleoBase[arc4random() % 4]; + while (n == DNAArray[i]); + } + + temp[i] = n; + } + + temp[DNALength] = '\0'; + + nucleo = [NSMutableString stringWithUTF8String:temp]; + humming = [self hummingDistance:base]; + + } + + return self; +} + +- (Cell *)initWithDNAString:(NSString *)string +{ + if (self = [super init]) nucleo = [NSMutableString stringWithString:string]; + + return self; +} + +- (void)changeDNALength:(NSInteger)length +{ + if (previousLength != length) + { + if (previousLength < length) + { + char temp[(unsigned)(length - previousLength)]; + + for (unsigned i = 0; i < length - previousLength; temp[i++] = nucleoBase[arc4random() % 4]) + + temp[(unsigned)(length - previousLength)]='\0'; + + if (previousLength == 0) nucleo = [NSMutableString stringWithUTF8String:temp]; + else [nucleo appendString:[NSMutableString stringWithUTF8String:temp]]; + } + else + { + [nucleo setString:[nucleo substringToIndex:length]]; + } + + previousLength = length; + + } +} + +- (void)changeDNAString:(NSString *)string +{ + [nucleo setString:string]; + +} + +- (NSString *) DNAString +{ + return [self nucleo]; +} + +- (void)mutateWithBaseCell:(Cell *)base andMutationPercents:(int)percents +{ + +} + +- (void)mutateWithPercents:(int)percents +{ + +} + +- (void)matingWithParrentA:(Cell *)parentA andParrentB:(Cell *)parentB +{ + const char *arrayA = [[parentA DNAString] UTF8String]; + const char *arrayB = [[parentB DNAString] UTF8String]; + + int DNALength = (int)[[parentA DNAString] length]; + + char child[DNALength]; + + int matingCase = arc4random() % 5; + + switch (matingCase) + { + case 0: for(int i = 0; i < DNALength; i++) child[i] = i < DNALength / 2 ? arrayA[i] : arrayB[i]; + break; + + case 1: for(int i = 0; i < DNALength; i++) child[i] = i % 2 ? arrayA[i] : arrayB[i]; + break; + + case 2: for(int i = 0; i < DNALength; i++) child[i] = (i > 0.2 * DNALength && i < 0.8 * DNALength) ? arrayB[i] : arrayA[i]; + break; + + case 3: for(int i = 0; i < DNALength; i++) child[i] = (BOOL)(arc4random() % 2) ? arrayA[i] : arrayB[i]; + break; + + case 4: for(int i = 0; i < DNALength; i++) child[i] = (BOOL)!(arc4random() % 3) ? nucleoBase[arc4random() % 4] : ((BOOL)(arc4random() % 2) ? arrayA[i] : arrayB[i]); + break; + } + + child[DNALength] = '\0'; + + nucleo = [NSMutableString stringWithUTF8String:child]; +} + ++ (NSMutableArray *)sort:(NSMutableArray *)array +{ + + NSArray *sortedArray; + sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id a, id b) + { + int first = [(Cell *)a humming]; + int second = [(Cell *)b humming]; + return first > second; + }]; + + return [NSMutableArray arrayWithArray:sortedArray]; +} + +-(int)hummingDistance:(Cell *)base +{ + humming = 0; + NSString *DNA = [base DNAString]; + + for (int i = 0; i < ([nucleo length] <= [DNA length] ? [nucleo length] : [DNA length]); i++) if ([nucleo characterAtIndex:i] != [DNA characterAtIndex:i]) humming++; + + return humming; +} + +@end diff --git a/iDNA3/iDNA3/PreferencesController.h b/iDNA3/iDNA3/PreferencesController.h new file mode 100644 index 0000000..42c3752 --- /dev/null +++ b/iDNA3/iDNA3/PreferencesController.h @@ -0,0 +1,18 @@ +// +// PreferencesController.h +// iDNA3 +// + +#import +#import "iDNADefine.h" + +@interface PreferencesController : NSWindowController + ++ (NSString *)preferencesDNAString; ++ (void)setPreferencesDNAString:(NSString *)string; ++ (NSInteger)preferencesMutateRate; ++ (void)setPreferencesMutateRate:(NSInteger)rate; ++ (NSInteger)preferencesPopulationSize; ++ (void)setPreferencesPopulationSize:(NSInteger)size; + +@end diff --git a/iDNA3/iDNA3/PreferencesController.m b/iDNA3/iDNA3/PreferencesController.m new file mode 100644 index 0000000..f366608 --- /dev/null +++ b/iDNA3/iDNA3/PreferencesController.m @@ -0,0 +1,75 @@ +// +// PreferencesController.m +// iDNA3 +// + +#import "PreferencesController.h" + +@interface PreferencesController () + +@end + +@implementation PreferencesController + ++ (void)initialize +{ + NSMutableDictionary *defaultsValues = [NSMutableDictionary dictionary]; + NSInteger rate = 20; + NSInteger population = 4000; + NSString *DNA = @"CCAGTCCCGCTGGCATTAATCCATACCGTACCAAAGTTCCCATGGCATTGCGCGCGGACACTGAATACCTGGGCGCTGTAGTTGCTGGACCTTCGTTGTT"; + + [defaultsValues setObject:DNA forKey:iDNAString]; + [defaultsValues setObject:[NSNumber numberWithInteger:rate] forKey:iDNARate]; + [defaultsValues setObject:[NSNumber numberWithInteger:population] forKey:iDNAPopulation]; + + [[NSUserDefaults standardUserDefaults] registerDefaults:defaultsValues]; +} + ++ (NSString *)preferencesDNAString +{ + return [[NSUserDefaults standardUserDefaults] objectForKey:iDNAString]; +} + ++ (void)setPreferencesDNAString:(NSString *)string +{ + [[NSUserDefaults standardUserDefaults] setObject:string forKey:iDNAString]; +} + ++ (NSInteger)preferencesMutateRate +{ + return [[[NSUserDefaults standardUserDefaults] objectForKey:iDNARate] integerValue]; +} + ++ (void)setPreferencesMutateRate:(NSInteger)rate +{ + [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInteger:rate] forKey:iDNARate]; +} + ++ (NSInteger)preferencesPopulationSize +{ + return [[[NSUserDefaults standardUserDefaults] objectForKey:iDNAPopulation] integerValue]; +} + ++ (void)setPreferencesPopulationSize:(NSInteger)size +{ + [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInteger:size] forKey:iDNAPopulation]; +} + +- (id)initWithWindow:(NSWindow *)window +{ + if (self = [super initWithWindow:window]) + { + // Initialization code here. + } + + return self; +} + +- (void)windowDidLoad +{ + [super windowDidLoad]; + + // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. +} + +@end diff --git a/iDNA3/iDNA3/en.lproj/Credits.rtf b/iDNA3/iDNA3/en.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/iDNA3/iDNA3/en.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/iDNA3/iDNA3/en.lproj/InfoPlist.strings b/iDNA3/iDNA3/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/iDNA3/iDNA3/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/iDNA3/iDNA3/en.lproj/Localizable.strings b/iDNA3/iDNA3/en.lproj/Localizable.strings new file mode 100644 index 0000000..d7a684c --- /dev/null +++ b/iDNA3/iDNA3/en.lproj/Localizable.strings @@ -0,0 +1,23 @@ +/* + Localizable.strings + iDNA3 +*/ + +"BEST_MATCH" = "Best individual match - %ld%%"; +"GENERATION" = "Generation: %ld"; +"PROCEED" = "Proceed"; +"CANCEL" = "Cancel"; +"MISMATCH_DNA" = "New DNA has different size!"; +"GENERATION_1" = "1th"; +"GENERATION_2" = "2nd"; +"GENERATION_3" = "3rd"; +"GENERATION_NXT" = "%ldth"; +"OK" = "Ok"; +"MATCH_REATCHED" = "Total match reached at %@ generation"; +"WANT_QUIT" = "Do you really want to quit?"; +"LOAD_DATA" = "load data from a file?"; +"_YES_" = "Yes"; +"_NO_" = "No"; + + + diff --git a/iDNA3/iDNA3/en.lproj/MainMenu.xib b/iDNA3/iDNA3/en.lproj/MainMenu.xib new file mode 100644 index 0000000..d4c779a --- /dev/null +++ b/iDNA3/iDNA3/en.lproj/MainMenu.xib @@ -0,0 +1,3291 @@ + + + + 1080 + 12C60 + 2844 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2844 + + + IBNSLayoutConstraint + NSBox + NSButton + NSButtonCell + NSCustomObject + NSLevelIndicator + NSLevelIndicatorCell + NSMenu + NSMenuItem + NSNumberFormatter + NSScrollView + NSScroller + NSSlider + NSSliderCell + NSTextField + NSTextFieldCell + NSTextView + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + iDNA3 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + iDNA3 + + + + About iDNA3 + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide iDNA3 + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit iDNA3 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + + + Open… + o + 1048576 + 2147483647 + + + + + + Save… + s + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + + + Minimize + m + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + + + iDNA3 Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + 271 + 2 + {{335, 390}, {500, 420}} + 1954021376 + iDNA + NSWindow + + + {345, 282} + + + 256 + + + + 268 + {{20, 18}, {114, 25}} + + + _NS:22 + YES + + -2080374784 + 134217728 + Start evolution + + LucidaGrande + 13 + 1044 + + _NS:22 + + -2038153216 + 163 + + + 400 + 75 + + NO + + + + 268 + {{364, 18}, {116, 25}} + + _NS:22 + YES + + -2080374784 + 134217728 + Load goal DNA + + _NS:22 + + -2038153216 + 163 + + + 400 + 75 + + NO + + + + 268 + {{142, 18}, {59, 25}} + + + _NS:22 + YES + + -2080374784 + 134217728 + Pause + + _NS:22 + + -2038153216 + 163 + + + 400 + 75 + + NO + + + + 268 + {{17, 378}, {101, 22}} + + + _NS:1535 + YES + + 68157504 + 272630784 + Population size + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + + 268 + {{17, 348}, {80, 22}} + + + _NS:1535 + YES + + 68157504 + 272630784 + DNA Length + + _NS:1535 + + + + + NO + + + + 268 + {{17, 318}, {102, 22}} + + + _NS:1535 + YES + + 68157504 + 272630784 + Mutation rate % + + _NS:1535 + + + + + NO + + + + 268 + {{130, 378}, {71, 22}} + + + _NS:9 + YES + + -1804599231 + 71337024 + + + + + + + + + + + -∞ + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + 1 + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + NO + + + + 268 + {{130, 348}, {71, 22}} + + + _NS:9 + YES + + -1804599231 + 71336960 + + + + + + + + + -∞ + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + 1 + + + + NO + + + + 268 + {{130, 318}, {71, 22}} + + + _NS:9 + YES + + -1804599231 + 71336960 + + + + + + + + + -∞ + + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + 1 + + + + NO + + + + 268 + {{207, 379}, {275, 21}} + + + _NS:9 + YES + + -2080112384 + 32768 + + _NS:9 + + 10000 + 4 + 3000 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{207, 349}, {275, 21}} + + + _NS:9 + YES + + -2080112384 + 32768 + + _NS:9 + + 1000 + 5 + 820.46113742618104 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{207, 319}, {275, 21}} + + + _NS:9 + YES + + 67371264 + 32768 + + _NS:9 + + 99 + 1 + 19.722364050196848 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{17, 293}, {466, 17}} + + + _NS:1535 + YES + + 68157504 + 138413056 + Generation: 1 + + LucidaGrande-Bold + 13 + 16 + + _NS:1535 + + + + + NO + + + + 268 + {{17, 268}, {466, 17}} + + + _NS:1535 + YES + + 68157504 + 138413056 + Best individual match - 0% + + LucidaGrande + 13 + 16 + + _NS:1535 + + + + + NO + + + + 268 + {{20, 244}, {460, 16}} + + + _NS:9 + YES + + 524288 + 131072 + _NS:9 + + 100 + 100 + 1 + + NO + + + + 12 + + + + 274 + + + + 268 + {{14, 150}, {434, 17}} + + + _NS:1535 + YES + + 68157504 + 138413056 + Goal DNA + + _NS:1535 + + + + + NO + + + + 256 + + + + 2304 + + + + 2322 + {436, 127} + + + _NS:13 + + + + + + + + + + + + 166 + + + + 436 + 1 + + + 67119173 + 0 + + + + + 6 + System + selectedTextBackgroundColor + + + + 6 + System + selectedTextColor + + + + + + + 1 + MCAwIDEAA + + + {8, -8} + 13 + + + + + + 1 + + 6 + {463, 10000000} + + + + {{1, 1}, {436, 127}} + + + _NS:11 + + + + {4, 5} + + 12582912 + + + + + + TU0AKgAAEAj///8A////qwAAAP8AAAD/AwMD/BYWFtIFBQVuAAAABv///wD///8E6+vrTGhoaLYtLS3p +BAQE/QAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/AAAA/wAAAP8EBATSX19fK9HR0ZciIiLv +AAAA/wAAAP8AAAD/AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////CsPDw0CRkZG1FxcX9AAAAP8bGxvr +ICAg8AAAAP8ICAjlFRUVVQAAAA////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wrm5uab +FxcX9AAAAP8AAAD/AQEB3wAAAA////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///zaXl5fGAAAA/wAAAP8AAABR////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////CO7u7q8AAAD/AAAA/wAAAAz///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/ +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+r +AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/AAAA/wAAAP8AAAD/ +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/ +AAAA/wAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/ +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+r +AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////CO7u7q8AAAD/AAAA/wAAAAz///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///80mpqaxQAAAP8AAAD/AAAATv///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////CuXl5ZYeHh7xAAAA/wAAAP8CAgLXAAAAD////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////EKurq0mOjo63FxcX9AAAAP8bGxvrICAg8AAAAP8ICAjlHh4eXAAAABj///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qwAAAP8AAAD/AAAA/wAAAP8AAAD/BAQE1V9fXyvS0tKZICAg8AAAAP8AAAD/ +AAAA/wAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/FBQU1AUFBXEAAAAG////AP///wTr6+tO +ZWVluC4uLuoAAAD/AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8AABABAAADAAAAAQAgAAABAQADAAAAAQAgAAABAgADAAAABAAA +EM4BAwADAAAAAQABAAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAE +AAABFgADAAAAAQAgAAABFwAEAAAAAQAAEAABGgAFAAAAAQAAENYBGwAFAAAAAQAAEN4BHAADAAAAAQAB +AAABKAADAAAAAQACAAABUgADAAAAAQACAAABUwADAAAABAAAEOYAAAAAAAgACAAIAAgSAAAAACAAABIA +AAAAIAAAAAEAAQABAAE + + + + + + + + TU0AKgAABAj///9VQ0ND/wAAAP////8A////AP///6pDQ0P/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+qAAAA/////6oAAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///6oAAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+qAAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6oAAAD/////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+qAAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP////8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP8AAAD/ +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+q +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////qgAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///6oAAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///+qAAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qgAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qgAAAP////+qAAAA/////wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///9VQ0ND/wAAAP////8A////AP///6pDQ0P/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8AAA4BAAADAAAAAQAQAAABAQADAAAAAQAQAAABAgADAAAABAAABLYBAwADAAAAAQAB +AAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQAQ +AAABFwAEAAAAAQAABAABHAADAAAAAQABAAABUgADAAAAAQACAAABUwADAAAABAAABL6HcwAHAAAHqAAA +BMYAAAAAAAgACAAIAAgAAQABAAEAAQAAB6hhcHBsAiAAAG1udHJSR0IgWFlaIAfZAAIAGQALABoAC2Fj +c3BBUFBMAAAAAGFwcGwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2Rlc2MAAAEIAAAAb2RzY20AAAF4AAAFbGNw +cnQAAAbkAAAAOHd0cHQAAAccAAAAFHJYWVoAAAcwAAAAFGdYWVoAAAdEAAAAFGJYWVoAAAdYAAAAFHJU +UkMAAAdsAAAADmNoYWQAAAd8AAAALGJUUkMAAAdsAAAADmdUUkMAAAdsAAAADmRlc2MAAAAAAAAAFEdl +bmVyaWMgUkdCIFByb2ZpbGUAAAAAAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAB4AAAAMc2tTSwAA +ACgAAAF4aHJIUgAAACgAAAGgY2FFUwAAACQAAAHIcHRCUgAAACYAAAHsdWtVQQAAACoAAAISZnJGVQAA +ACgAAAI8emhUVwAAABYAAAJkaXRJVAAAACgAAAJ6bmJOTwAAACYAAAKia29LUgAAABYAAALIY3NDWgAA +ACIAAALeaGVJTAAAAB4AAAMAZGVERQAAACwAAAMeaHVIVQAAACgAAANKc3ZTRQAAACYAAAKiemhDTgAA +ABYAAANyamFKUAAAABoAAAOIcm9STwAAACQAAAOiZWxHUgAAACIAAAPGcHRQTwAAACYAAAPobmxOTAAA +ACgAAAQOZXNFUwAAACYAAAPodGhUSAAAACQAAAQ2dHJUUgAAACIAAARaZmlGSQAAACgAAAR8cGxQTAAA +ACwAAASkcnVSVQAAACIAAATQYXJFRwAAACYAAATyZW5VUwAAACYAAAUYZGFESwAAAC4AAAU+AFYBYQBl +AG8AYgBlAGMAbgD9ACAAUgBHAEIAIABwAHIAbwBmAGkAbABHAGUAbgBlAHIAaQENAGsAaQAgAFIARwBC +ACAAcAByAG8AZgBpAGwAUABlAHIAZgBpAGwAIABSAEcAQgAgAGcAZQBuAOgAcgBpAGMAUABlAHIAZgBp +AGwAIABSAEcAQgAgAEcAZQBuAOkAcgBpAGMAbwQXBDAEMwQwBDsETAQ9BDgEOQAgBD8EQAQ+BEQEMAQ5 +BDsAIABSAEcAQgBQAHIAbwBmAGkAbAAgAGcA6QBuAOkAcgBpAHEAdQBlACAAUgBWAEKQGnUoACAAUgBH +AEIAIIJyX2ljz4/wAFAAcgBvAGYAaQBsAG8AIABSAEcAQgAgAGcAZQBuAGUAcgBpAGMAbwBHAGUAbgBl +AHIAaQBzAGsAIABSAEcAQgAtAHAAcgBvAGYAaQBsx3y8GAAgAFIARwBCACDVBLhc0wzHfABPAGIAZQBj +AG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwF5AXoBdUF5AXZBdwAIABSAEcAQgAgBdsF3AXcBdkAQQBs +AGwAZwBlAG0AZQBpAG4AZQBzACAAUgBHAEIALQBQAHIAbwBmAGkAbADBAGwAdABhAGwA4QBuAG8AcwAg +AFIARwBCACAAcAByAG8AZgBpAGxmbpAaACAAUgBHAEIAIGPPj/Blh072TgCCLAAgAFIARwBCACAw1zDt +MNUwoTCkMOsAUAByAG8AZgBpAGwAIABSAEcAQgAgAGcAZQBuAGUAcgBpAGMDkwO1A70DuQO6A8wAIAPA +A8EDvwPGA68DuwAgAFIARwBCAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDpAHIAaQBjAG8AQQBs +AGcAZQBtAGUAZQBuACAAUgBHAEIALQBwAHIAbwBmAGkAZQBsDkIOGw4jDkQOHw4lDkwAIABSAEcAQgAg +DhcOMQ5IDicORA4bAEcAZQBuAGUAbAAgAFIARwBCACAAUAByAG8AZgBpAGwAaQBZAGwAZQBpAG4AZQBu +ACAAUgBHAEIALQBwAHIAbwBmAGkAaQBsAGkAVQBuAGkAdwBlAHIAcwBhAGwAbgB5ACAAcAByAG8AZgBp +AGwAIABSAEcAQgQeBDEESQQ4BDkAIAQ/BEAEPgREBDgEOwRMACAAUgBHAEIGRQZEBkEAIAYqBjkGMQZK +BkEAIABSAEcAQgAgBicGRAY5BicGRQBHAGUAbgBlAHIAaQBjACAAUgBHAEIAIABQAHIAbwBmAGkAbABl +AEcAZQBuAGUAcgBlAGwAIABSAEcAQgAtAGIAZQBzAGsAcgBpAHYAZQBsAHMAZXRleHQAAAAAQ29weXJp +Z2h0IDIwMDcgQXBwbGUgSW5jLiwgYWxsIHJpZ2h0cyByZXNlcnZlZC4AWFlaIAAAAAAAAPNSAAEAAAAB +Fs9YWVogAAAAAAAAdE0AAD3uAAAD0FhZWiAAAAAAAABadQAArHMAABc0WFlaIAAAAAAAACgaAAAVnwAA +uDZjdXJ2AAAAAAAAAAEBzQAAc2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L///2jAAAD3AAA +wGw + + + + + + 3 + MCAwAA + + + + 2 + + + + -2147483392 + {{412, 1}, {15, 128}} + + + _NS:83 + NO + + _doScroller: + 1 + 0.85256409645080566 + 2 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + + _NS:33 + NO + 1 + + _doScroller: + 1 + 0.94565218687057495 + 2 + + + {{12, 13}, {438, 129}} + + + _NS:9 + 133650 + + + + 2 + 0.25 + 4 + 1 + + + {{2, 2}, {462, 174}} + + + _NS:11 + + + {{17, 60}, {466, 178}} + + + _NS:9 + {0, 0} + + 67108864 + 0 + Box + + LucidaGrande + 11 + 3100 + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 3 + 0 + 0 + NO + + + {500, 420} + + + {{0, 0}, {1920, 1058}} + {345, 304} + {10000000000000, 10000000000000} + YES + + + AppDelegate + + + NSFontManager + + + + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + + + + performMiniaturize: + + + + 37 + + + + saveDocument: + + + + 362 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + openDocument: + + + + 374 + + + + showHelp: + + + + 493 + + + + window + + + + 532 + + + + startEvolution: + + + + 699 + + + + pause: + + + + 700 + + + + loadGoal: + + + + 701 + + + + currentGeneration + + + + 702 + + + + bestMatch + + + + 703 + + + + viewGoalDNA + + + + 704 + + + + matchIndicator + + + + 705 + + + + startEvolution + + + + 721 + + + + pause + + + + 722 + + + + loadGoalDNA + + + + 723 + + + + populationField + + + + 724 + + + + lenthField + + + + 725 + + + + rateField + + + + 726 + + + + populationSlider + + + + 727 + + + + lenthSlider + + + + 728 + + + + rateSlider + + + + 729 + + + + indicatorCell + + + + 732 + + + + textViewGoalDNA + + + + 768 + + + + value: self.populationSize + + + + + + value: self.populationSize + value + self.populationSize + 2 + + + 709 + + + + value: self.DNALength + + + + + + value: self.DNALength + value + self.DNALength + 2 + + + 788 + + + + value: self.mutationRate + + + + + + value: self.mutationRate + value + self.mutationRate + 2 + + + 720 + + + + value: self.populationSize + + + + + + value: self.populationSize + value + self.populationSize + 2 + + + 707 + + + + value: self.DNALength + + + + + + value: self.DNALength + value + self.DNALength + 2 + + + 786 + + + + value: self.mutationRate + + + + + + value: self.mutationRate + value + self.mutationRate + 2 + + + 718 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + 19 + + + + + + + + 56 + + + + + + + + 83 + + + + + + + + 81 + + + + + + + + + 75 + + + + + 72 + + + + + 57 + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 236 + + + + + 149 + + + + + 145 + + + + + 24 + + + + + + + + 23 + + + + + 371 + + + + + + + + 372 + + + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 64 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 130 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + + + + + + + + + + + + + + + + + + 420 + + + + + 490 + + + + + + + + 491 + + + + + + + + 492 + + + + + 494 + + + + + 536 + + + + + + + + 537 + + + + + 539 + + + + + 540 + + + + + 542 + + + + + + + + 543 + + + + + 544 + + + + + 545 + + + + + 546 + + + + + + + + 547 + + + + + 548 + + + + + 549 + + + + + 550 + + + + + + + + 551 + + + + + 554 + + + + + + + + 555 + + + + + 559 + + + + + + + + 560 + + + + + 563 + + + + + + 7 + 0 + + 0 + 1 + + 71 + + 1000 + + 9 + 40 + 1 + + + + + + 564 + + + + + + + + 567 + + + + + 568 + + + + + 569 + + + + + 584 + + + + + 7 + 0 + + 0 + 1 + + 71 + + 1000 + + 9 + 40 + 1 + + + + + + + 585 + + + + + 586 + + + + + + + + 588 + + + + + 589 + + + + + + 7 + 0 + + 0 + 1 + + 71 + + 1000 + + 9 + 40 + 1 + + + + + + 590 + + + + + + + + 591 + + + + + 593 + + + + + 596 + + + + + 599 + + + + + 602 + + + + + 603 + + + + + 606 + + + + + 608 + + + + + 609 + + + + + + + + 610 + + + + + 614 + + + + + 615 + + + + + 616 + + + + + 617 + + + + + 618 + + + + + + + + 619 + + + + + 620 + + + + + 621 + + + + + 624 + + + + + 625 + + + + + 626 + + + + + + + + 627 + + + + + 628 + + + + + 629 + + + + + 631 + + + + + 633 + + + + + 634 + + + + + + + + 635 + + + + + 637 + + + + + 640 + + + + + 641 + + + + + 642 + + + + + 643 + + + + + 644 + + + + + + + + 645 + + + + + 646 + + + + + 647 + + + + + 648 + + + + + 649 + + + + + + + + 650 + + + + + 652 + + + + + 653 + + + + + 654 + + + + + 655 + + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 11 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 11 + + 1000 + + 9 + 40 + 3 + + + + 4 + 0 + + 4 + 1 + + 11 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 7 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + + + + + 656 + + + + + 658 + + + + + 659 + + + + + 660 + + + + + 662 + + + + + 663 + + + + + 664 + + + + + 669 + + + + + + + + 670 + + + + + 674 + + + + + 676 + + + + + 679 + + + + + 682 + + + + + + + + + + 683 + + + + + 684 + + + + + 685 + + + + + 686 + + + + + 688 + + + + + 690 + + + + + 691 + + + + + 696 + + + + + 697 + + + + + 698 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{380, 496}, {480, 360}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 794 + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + + diff --git a/iDNA3/iDNA3/iDNA3-Info.plist b/iDNA3/iDNA3/iDNA3-Info.plist new file mode 100644 index 0000000..1117072 --- /dev/null +++ b/iDNA3/iDNA3/iDNA3-Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + iDNA + CFBundleIdentifier + OmniProjects.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSApplicationCategoryType + public.app-category.education + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2012 Eraser. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/iDNA3/iDNA3/iDNA3-Prefix.pch b/iDNA3/iDNA3/iDNA3-Prefix.pch new file mode 100644 index 0000000..cfa6e41 --- /dev/null +++ b/iDNA3/iDNA3/iDNA3-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'iDNA3' target in the 'iDNA3' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/iDNA3/iDNA3/iDNADefine.h b/iDNA3/iDNA3/iDNADefine.h new file mode 100644 index 0000000..ed390de --- /dev/null +++ b/iDNA3/iDNA3/iDNADefine.h @@ -0,0 +1,15 @@ +// +// iDNADefine.h +// iDNA3 +// + +#ifndef iDNA3_Define_h + + #define iDNA3_Define_h + + #define iDNAString @"nucleoString" + #define iDNARate @"mutationRate" + #define iDNAPopulation @"populationSize" + #define iDNALength @"DNALength" + +#endif diff --git a/iDNA3/iDNA3/main.m b/iDNA3/iDNA3/main.m new file mode 100644 index 0000000..1a10712 --- /dev/null +++ b/iDNA3/iDNA3/main.m @@ -0,0 +1,14 @@ +// +// main.m +// iDNA3 +// +// Created by Eraser on 12/16/12. +// Copyright (c) 2012 Eraser. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/iDNA3/iDNA3/ru.lproj/Credits.rtf b/iDNA3/iDNA3/ru.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/iDNA3/iDNA3/ru.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/iDNA3/iDNA3/ru.lproj/InfoPlist.strings b/iDNA3/iDNA3/ru.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/iDNA3/iDNA3/ru.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/iDNA3/iDNA3/ru.lproj/Localizable.strings b/iDNA3/iDNA3/ru.lproj/Localizable.strings new file mode 100644 index 0000000..4d2af9c --- /dev/null +++ b/iDNA3/iDNA3/ru.lproj/Localizable.strings @@ -0,0 +1,20 @@ +/* + Localizable.strings + iDNA3 +*/ + +"BEST_MATCH" = "Лучшее совпадение - %ld%%"; +"GENERATION" = "Поколение: %ld"; +"PROCEED" = "Продолжить"; +"CANCEL" = "Отмена"; +"MISMATCH_DNA" = "Размер новой ДНК отличается от существующей!"; +"GENERATION_1" = "в 1ом"; +"GENERATION_2" = "во 2ом"; +"GENERATION_3" = "в 3ем"; +"GENERATION_NXT" = "в %ldом"; +"OK" = "Хорошо"; +"MATCH_REATCHED" = "Полное совпадение достигнуто %@ поколении"; +"WANT_QUIT" = "Вы действительно хотите выйти из приложения?"; +"LOAD_DATA" = "Загрузить данные из файла?"; +"_YES_" = "Да"; +"_NO_" = "Нет"; \ No newline at end of file diff --git a/iDNA3/iDNA3/ru.lproj/MainMenu.xib b/iDNA3/iDNA3/ru.lproj/MainMenu.xib new file mode 100644 index 0000000..92d8e51 --- /dev/null +++ b/iDNA3/iDNA3/ru.lproj/MainMenu.xib @@ -0,0 +1,3291 @@ + + + + 1080 + 12C60 + 2844 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2844 + + + IBNSLayoutConstraint + NSBox + NSButton + NSButtonCell + NSCustomObject + NSLevelIndicator + NSLevelIndicatorCell + NSMenu + NSMenuItem + NSNumberFormatter + NSScrollView + NSScroller + NSSlider + NSSliderCell + NSTextField + NSTextFieldCell + NSTextView + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + iDNA3 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + iDNA3 + + + + О iDNA3 + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Спрятать iDNA3 + h + 1048576 + 2147483647 + + + + + + Спрятать остальные + h + 1572864 + 2147483647 + + + + + + Отобразить все + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Выйти из iDNA3 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Файл + + 1048576 + 2147483647 + + + submenuAction: + + Файл + + + + Открыть… + o + 1048576 + 2147483647 + + + + + + Сохранить… + s + 1048576 + 2147483647 + + + + + + + + + Окно + + 1048576 + 2147483647 + + + submenuAction: + + Окно + + + + Минимизировать + m + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Помощь + + 2147483647 + + + submenuAction: + + Помощь + + + + Помощь по iDNA3 + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + 271 + 2 + {{335, 390}, {500, 420}} + 1954021376 + iDNA + NSWindow + + + {345, 282} + + + 256 + + + + 268 + {{20, 18}, {129, 25}} + + + _NS:22 + YES + + -2080374784 + 134217728 + Начать эволюцию + + LucidaGrande + 13 + 1044 + + _NS:22 + + -2038153216 + 163 + + + 400 + 75 + + NO + + + + 268 + {{320, 18}, {160, 25}} + + _NS:22 + YES + + -2080374784 + 134217728 + Загрузка целевой ДНК + + _NS:22 + + -2038153216 + 163 + + + 400 + 75 + + NO + + + + 268 + {{157, 18}, {51, 25}} + + + _NS:22 + YES + + -2080374784 + 134217728 + Пауза + + _NS:22 + + -2038153216 + 163 + + + 400 + 75 + + NO + + + + 268 + {{17, 378}, {125, 22}} + + + _NS:1535 + YES + + 68157504 + 272630784 + Размер популяции + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + + 268 + {{17, 348}, {77, 22}} + + + _NS:1535 + YES + + 68157504 + 272630784 + Длина ДНК + + _NS:1535 + + + + + NO + + + + 268 + {{17, 318}, {126, 22}} + + + _NS:1535 + YES + + 68157504 + 272630784 + Частота мутаций % + + _NS:1535 + + + + + NO + + + + 268 + {{148, 378}, {71, 22}} + + + _NS:9 + YES + + -1804599231 + 71337024 + + + + + + + + + + + -∞ + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + 1 + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + NO + + + + 268 + {{148, 348}, {71, 22}} + + + _NS:9 + YES + + -1804599231 + 71336960 + + + + + + + + + -∞ + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + 1 + + + + NO + + + + 268 + {{148, 318}, {71, 22}} + + + _NS:9 + YES + + -1804599231 + 71336960 + + + + + + + + + -∞ + + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + 1 + + + + NO + + + + 268 + {{225, 379}, {257, 21}} + + + _NS:9 + YES + + -2080112384 + 32768 + + _NS:9 + + 10000 + 4 + 3000 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{225, 349}, {257, 21}} + + + _NS:9 + YES + + -2080112384 + 32768 + + _NS:9 + + 1000 + 5 + 820.46113742618104 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{225, 319}, {257, 21}} + + + _NS:9 + YES + + 67371264 + 32768 + + _NS:9 + + 99 + 1 + 19.722364050196848 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{17, 293}, {466, 17}} + + + _NS:1535 + YES + + 68157504 + 138413056 + Поколение: 1 + + LucidaGrande-Bold + 13 + 16 + + _NS:1535 + + + + + NO + + + + 268 + {{17, 268}, {466, 17}} + + + _NS:1535 + YES + + 68157504 + 138413056 + Лучшее совпадение - 0% + + LucidaGrande + 13 + 16 + + _NS:1535 + + + + + NO + + + + 268 + {{20, 244}, {460, 16}} + + + _NS:9 + YES + + 524288 + 131072 + _NS:9 + + 100 + 100 + 1 + + NO + + + + 12 + + + + 274 + + + + 268 + {{14, 150}, {434, 17}} + + + _NS:1535 + YES + + 68157504 + 138413056 + Целевая ДНК + + _NS:1535 + + + + + NO + + + + 256 + + + + 2304 + + + + 2322 + {436, 127} + + + _NS:13 + + + + + + + + + + + + 166 + + + + 436 + 1 + + + 67119173 + 0 + + + + + 6 + System + selectedTextBackgroundColor + + + + 6 + System + selectedTextColor + + + + + + + 1 + MCAwIDEAA + + + {8, -8} + 13 + + + + + + 1 + + 6 + {463, 10000000} + + + + {{1, 1}, {436, 127}} + + + _NS:11 + + + + {4, 5} + + 12582912 + + + + + + TU0AKgAAEAj///8A////qwAAAP8AAAD/AwMD/BYWFtIFBQVuAAAABv///wD///8E6+vrTGhoaLYtLS3p +BAQE/QAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/AAAA/wAAAP8EBATSX19fK9HR0ZciIiLv +AAAA/wAAAP8AAAD/AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////CsPDw0CRkZG1FxcX9AAAAP8bGxvr +ICAg8AAAAP8ICAjlFRUVVQAAAA////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wrm5uab +FxcX9AAAAP8AAAD/AQEB3wAAAA////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///zaXl5fGAAAA/wAAAP8AAABR////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////CO7u7q8AAAD/AAAA/wAAAAz///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/ +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+r +AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/AAAA/wAAAP8AAAD/ +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/ +AAAA/wAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/ +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+r +AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////CO7u7q8AAAD/AAAA/wAAAAz///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///80mpqaxQAAAP8AAAD/AAAATv///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////CuXl5ZYeHh7xAAAA/wAAAP8CAgLXAAAAD////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////EKurq0mOjo63FxcX9AAAAP8bGxvrICAg8AAAAP8ICAjlHh4eXAAAABj///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qwAAAP8AAAD/AAAA/wAAAP8AAAD/BAQE1V9fXyvS0tKZICAg8AAAAP8AAAD/ +AAAA/wAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/FBQU1AUFBXEAAAAG////AP///wTr6+tO +ZWVluC4uLuoAAAD/AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8AABABAAADAAAAAQAgAAABAQADAAAAAQAgAAABAgADAAAABAAA +EM4BAwADAAAAAQABAAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAE +AAABFgADAAAAAQAgAAABFwAEAAAAAQAAEAABGgAFAAAAAQAAENYBGwAFAAAAAQAAEN4BHAADAAAAAQAB +AAABKAADAAAAAQACAAABUgADAAAAAQACAAABUwADAAAABAAAEOYAAAAAAAgACAAIAAgSAAAAACAAABIA +AAAAIAAAAAEAAQABAAE + + + + + + + + TU0AKgAABAj///9VQ0ND/wAAAP////8A////AP///6pDQ0P/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+qAAAA/////6oAAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///6oAAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+qAAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6oAAAD/////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+qAAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP////8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP8AAAD/ +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+q +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////qgAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///6oAAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///+qAAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qgAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qgAAAP////+qAAAA/////wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///9VQ0ND/wAAAP////8A////AP///6pDQ0P/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8AAA4BAAADAAAAAQAQAAABAQADAAAAAQAQAAABAgADAAAABAAABLYBAwADAAAAAQAB +AAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQAQ +AAABFwAEAAAAAQAABAABHAADAAAAAQABAAABUgADAAAAAQACAAABUwADAAAABAAABL6HcwAHAAAHqAAA +BMYAAAAAAAgACAAIAAgAAQABAAEAAQAAB6hhcHBsAiAAAG1udHJSR0IgWFlaIAfZAAIAGQALABoAC2Fj +c3BBUFBMAAAAAGFwcGwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2Rlc2MAAAEIAAAAb2RzY20AAAF4AAAFbGNw +cnQAAAbkAAAAOHd0cHQAAAccAAAAFHJYWVoAAAcwAAAAFGdYWVoAAAdEAAAAFGJYWVoAAAdYAAAAFHJU +UkMAAAdsAAAADmNoYWQAAAd8AAAALGJUUkMAAAdsAAAADmdUUkMAAAdsAAAADmRlc2MAAAAAAAAAFEdl +bmVyaWMgUkdCIFByb2ZpbGUAAAAAAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAB4AAAAMc2tTSwAA +ACgAAAF4aHJIUgAAACgAAAGgY2FFUwAAACQAAAHIcHRCUgAAACYAAAHsdWtVQQAAACoAAAISZnJGVQAA +ACgAAAI8emhUVwAAABYAAAJkaXRJVAAAACgAAAJ6bmJOTwAAACYAAAKia29LUgAAABYAAALIY3NDWgAA +ACIAAALeaGVJTAAAAB4AAAMAZGVERQAAACwAAAMeaHVIVQAAACgAAANKc3ZTRQAAACYAAAKiemhDTgAA +ABYAAANyamFKUAAAABoAAAOIcm9STwAAACQAAAOiZWxHUgAAACIAAAPGcHRQTwAAACYAAAPobmxOTAAA +ACgAAAQOZXNFUwAAACYAAAPodGhUSAAAACQAAAQ2dHJUUgAAACIAAARaZmlGSQAAACgAAAR8cGxQTAAA +ACwAAASkcnVSVQAAACIAAATQYXJFRwAAACYAAATyZW5VUwAAACYAAAUYZGFESwAAAC4AAAU+AFYBYQBl +AG8AYgBlAGMAbgD9ACAAUgBHAEIAIABwAHIAbwBmAGkAbABHAGUAbgBlAHIAaQENAGsAaQAgAFIARwBC +ACAAcAByAG8AZgBpAGwAUABlAHIAZgBpAGwAIABSAEcAQgAgAGcAZQBuAOgAcgBpAGMAUABlAHIAZgBp +AGwAIABSAEcAQgAgAEcAZQBuAOkAcgBpAGMAbwQXBDAEMwQwBDsETAQ9BDgEOQAgBD8EQAQ+BEQEMAQ5 +BDsAIABSAEcAQgBQAHIAbwBmAGkAbAAgAGcA6QBuAOkAcgBpAHEAdQBlACAAUgBWAEKQGnUoACAAUgBH +AEIAIIJyX2ljz4/wAFAAcgBvAGYAaQBsAG8AIABSAEcAQgAgAGcAZQBuAGUAcgBpAGMAbwBHAGUAbgBl +AHIAaQBzAGsAIABSAEcAQgAtAHAAcgBvAGYAaQBsx3y8GAAgAFIARwBCACDVBLhc0wzHfABPAGIAZQBj +AG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwF5AXoBdUF5AXZBdwAIABSAEcAQgAgBdsF3AXcBdkAQQBs +AGwAZwBlAG0AZQBpAG4AZQBzACAAUgBHAEIALQBQAHIAbwBmAGkAbADBAGwAdABhAGwA4QBuAG8AcwAg +AFIARwBCACAAcAByAG8AZgBpAGxmbpAaACAAUgBHAEIAIGPPj/Blh072TgCCLAAgAFIARwBCACAw1zDt +MNUwoTCkMOsAUAByAG8AZgBpAGwAIABSAEcAQgAgAGcAZQBuAGUAcgBpAGMDkwO1A70DuQO6A8wAIAPA +A8EDvwPGA68DuwAgAFIARwBCAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDpAHIAaQBjAG8AQQBs +AGcAZQBtAGUAZQBuACAAUgBHAEIALQBwAHIAbwBmAGkAZQBsDkIOGw4jDkQOHw4lDkwAIABSAEcAQgAg +DhcOMQ5IDicORA4bAEcAZQBuAGUAbAAgAFIARwBCACAAUAByAG8AZgBpAGwAaQBZAGwAZQBpAG4AZQBu +ACAAUgBHAEIALQBwAHIAbwBmAGkAaQBsAGkAVQBuAGkAdwBlAHIAcwBhAGwAbgB5ACAAcAByAG8AZgBp +AGwAIABSAEcAQgQeBDEESQQ4BDkAIAQ/BEAEPgREBDgEOwRMACAAUgBHAEIGRQZEBkEAIAYqBjkGMQZK +BkEAIABSAEcAQgAgBicGRAY5BicGRQBHAGUAbgBlAHIAaQBjACAAUgBHAEIAIABQAHIAbwBmAGkAbABl +AEcAZQBuAGUAcgBlAGwAIABSAEcAQgAtAGIAZQBzAGsAcgBpAHYAZQBsAHMAZXRleHQAAAAAQ29weXJp +Z2h0IDIwMDcgQXBwbGUgSW5jLiwgYWxsIHJpZ2h0cyByZXNlcnZlZC4AWFlaIAAAAAAAAPNSAAEAAAAB +Fs9YWVogAAAAAAAAdE0AAD3uAAAD0FhZWiAAAAAAAABadQAArHMAABc0WFlaIAAAAAAAACgaAAAVnwAA +uDZjdXJ2AAAAAAAAAAEBzQAAc2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L///2jAAAD3AAA +wGw + + + + + + 3 + MCAwAA + + + + 2 + + + + -2147483392 + {{412, 1}, {15, 128}} + + + _NS:83 + NO + + _doScroller: + 1 + 0.85256409645080566 + 2 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + + _NS:33 + NO + 1 + + _doScroller: + 1 + 0.94565218687057495 + 2 + + + {{12, 13}, {438, 129}} + + + _NS:9 + 133650 + + + + 2 + 0.25 + 4 + 1 + + + {{2, 2}, {462, 174}} + + + _NS:11 + + + {{17, 60}, {466, 178}} + + + _NS:9 + {0, 0} + + 67108864 + 0 + Box + + LucidaGrande + 11 + 3100 + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 3 + 0 + 0 + NO + + + {500, 420} + + + {{0, 0}, {1920, 1058}} + {345, 304} + {10000000000000, 10000000000000} + YES + + + AppDelegate + + + NSFontManager + + + + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + + + + performMiniaturize: + + + + 37 + + + + saveDocument: + + + + 362 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + openDocument: + + + + 374 + + + + showHelp: + + + + 493 + + + + window + + + + 532 + + + + startEvolution: + + + + 699 + + + + pause: + + + + 700 + + + + loadGoal: + + + + 701 + + + + currentGeneration + + + + 702 + + + + bestMatch + + + + 703 + + + + viewGoalDNA + + + + 704 + + + + matchIndicator + + + + 705 + + + + startEvolution + + + + 721 + + + + pause + + + + 722 + + + + loadGoalDNA + + + + 723 + + + + populationField + + + + 724 + + + + lenthField + + + + 725 + + + + rateField + + + + 726 + + + + populationSlider + + + + 727 + + + + lenthSlider + + + + 728 + + + + rateSlider + + + + 729 + + + + indicatorCell + + + + 732 + + + + textViewGoalDNA + + + + 768 + + + + value: self.populationSize + + + + + + value: self.populationSize + value + self.populationSize + 2 + + + 709 + + + + value: self.DNALength + + + + + + value: self.DNALength + value + self.DNALength + 2 + + + 788 + + + + value: self.mutationRate + + + + + + value: self.mutationRate + value + self.mutationRate + 2 + + + 720 + + + + value: self.populationSize + + + + + + value: self.populationSize + value + self.populationSize + 2 + + + 707 + + + + value: self.DNALength + + + + + + value: self.DNALength + value + self.DNALength + 2 + + + 786 + + + + value: self.mutationRate + + + + + + value: self.mutationRate + value + self.mutationRate + 2 + + + 718 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + 19 + + + + + + + + 56 + + + + + + + + 83 + + + + + + + + 81 + + + + + + + + + 75 + + + + + 72 + + + + + 57 + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 236 + + + + + 149 + + + + + 145 + + + + + 24 + + + + + + + + 23 + + + + + 371 + + + + + + + + 372 + + + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 64 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + + + + + + + + + + + + + + + + + + 420 + + + + + 490 + + + + + + + + 491 + + + + + + + + 492 + + + + + 494 + + + + + 536 + + + + + + + + 537 + + + + + 539 + + + + + 540 + + + + + 542 + + + + + + + + 543 + + + + + 544 + + + + + 545 + + + + + 546 + + + + + + + + 547 + + + + + 548 + + + + + 549 + + + + + 550 + + + + + + + + 551 + + + + + 554 + + + + + + + + 555 + + + + + 559 + + + + + + + + 560 + + + + + 563 + + + + + + 7 + 0 + + 0 + 1 + + 71 + + 1000 + + 9 + 40 + 1 + + + + + + 564 + + + + + + + + 567 + + + + + 569 + + + + + 584 + + + + + 7 + 0 + + 0 + 1 + + 71 + + 1000 + + 9 + 40 + 1 + + + + + + + 585 + + + + + 586 + + + + + + + + 588 + + + + + 589 + + + + + + 7 + 0 + + 0 + 1 + + 71 + + 1000 + + 9 + 40 + 1 + + + + + + 590 + + + + + + + + 591 + + + + + 593 + + + + + 596 + + + + + 599 + + + + + 602 + + + + + 603 + + + + + 606 + + + + + 608 + + + + + 609 + + + + + + + + 610 + + + + + 614 + + + + + 617 + + + + + 618 + + + + + + + + 619 + + + + + 620 + + + + + 621 + + + + + 626 + + + + + + + + 627 + + + + + 628 + + + + + 633 + + + + + 634 + + + + + + + + 635 + + + + + 637 + + + + + 640 + + + + + 641 + + + + + 642 + + + + + 643 + + + + + 644 + + + + + + + + 645 + + + + + 646 + + + + + 647 + + + + + 648 + + + + + 649 + + + + + + + + 650 + + + + + 652 + + + + + 653 + + + + + 654 + + + + + 655 + + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 11 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 11 + + 1000 + + 9 + 40 + 3 + + + + 4 + 0 + + 4 + 1 + + 11 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 7 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + + + + + 656 + + + + + 658 + + + + + 659 + + + + + 660 + + + + + 662 + + + + + 663 + + + + + 664 + + + + + 669 + + + + + + + + 670 + + + + + 674 + + + + + 676 + + + + + 679 + + + + + 682 + + + + + + + + + + 683 + + + + + 684 + + + + + 685 + + + + + 686 + + + + + 688 + + + + + 690 + + + + + 691 + + + + + 696 + + + + + 697 + + + + + 698 + + + + + 790 + + + + + 805 + + + + + 806 + + + + + 809 + + + + + 810 + + + + + 813 + + + + + 814 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{380, 496}, {480, 360}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 817 + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + +