From d686a0dadf678c2eac8fdf4e4bcc12a68531e178 Mon Sep 17 00:00:00 2001 From: daboe01 Date: Wed, 30 Jul 2014 21:09:41 +0200 Subject: [PATCH 01/26] reverseSetValuesFor: handle multiple selection --- AppKit/CPTextField.j | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index 899c460b9..0b85ef76c 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -1957,6 +1957,23 @@ var CPTextFieldIsEditableKey = "CPTextFieldIsEditableKey", [_source setObjectValue:aValue]; } +- (void)reverseSetValueFor:(CPString)aBinding +{ + var destination = [_info objectForKey:CPObservedObjectKey], + keyPath = [_info objectForKey:CPObservedKeyPathKey], + options = [_info objectForKey:CPOptionsKey], + newValue = [self valueForBinding:aBinding], + value = [destination valueForKeyPath:keyPath]; + + if (CPIsControllerMarker(value) && newValue == nil) return; + + newValue = [self reverseTransformValue:newValue withOptions:options]; + + [self suppressSpecificNotificationFromObject:destination keyPath:keyPath]; + [destination setValue:newValue forKeyPath:keyPath]; + [self unsuppressSpecificNotificationFromObject:destination keyPath:keyPath]; +} + @end @implementation _CPTextFieldPatternValueBinder : CPValueWithPatternBinding From 1767cf8ad4e5419fba40453eb1565b77ce91ca58 Mon Sep 17 00:00:00 2001 From: daboe01 Date: Thu, 14 Aug 2014 22:41:59 +0200 Subject: [PATCH 02/26] formatting+nil equality --- AppKit/CPTextField.j | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index 0b85ef76c..43f83d8ea 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -1960,12 +1960,12 @@ var CPTextFieldIsEditableKey = "CPTextFieldIsEditableKey", - (void)reverseSetValueFor:(CPString)aBinding { var destination = [_info objectForKey:CPObservedObjectKey], - keyPath = [_info objectForKey:CPObservedKeyPathKey], - options = [_info objectForKey:CPOptionsKey], - newValue = [self valueForBinding:aBinding], - value = [destination valueForKeyPath:keyPath]; + keyPath = [_info objectForKey:CPObservedKeyPathKey], + options = [_info objectForKey:CPOptionsKey], + newValue = [self valueForBinding:aBinding], + value = [destination valueForKeyPath:keyPath]; - if (CPIsControllerMarker(value) && newValue == nil) return; + if (CPIsControllerMarker(value) && newValue === nil) return; newValue = [self reverseTransformValue:newValue withOptions:options]; From ba20936c17eec7e6f6ee87f4ebb2b176234cb7f2 Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Wed, 29 Oct 2014 15:04:55 -0700 Subject: [PATCH 03/26] Fixed: unable to chain sheet in a window Previously when chaining sheet on the same window, Cappuccino crashed. Now chaining a sheet in the delegate method of the method endSheet: will open the next sheet. Now when opening a sheet, we check if another sheet is currently closing. If yes, we wait till we get the notification of the closing of the previous sheet. And then we open the next sheet. Fixed #2159 Test app in Tests/Manual/AttachedSheet2/SheetWindowController.j --- AppKit/CPApplication.j | 4 +- AppKit/CPWindow/CPWindow.j | 49 +++++++++++++++---- .../AttachedSheet2/SheetWindowController.j | 11 +++-- 3 files changed, 51 insertions(+), 13 deletions(-) diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index f3783c75a..90d87c5c3 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -986,7 +986,9 @@ var CPMainCibFile = @"CPMainCibFile", return; } - [aSheet._windowView _enableSheet:YES inWindow:aWindow]; + if (![aWindow attachedSheet]) + [aSheet._windowView _enableSheet:YES inWindow:aWindow]; + [aWindow _attachSheet:aSheet modalDelegate:aModalDelegate didEndSelector:didEndSelector contextInfo:contextInfo]; } diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index f770fc642..baafd32a4 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -2679,6 +2679,23 @@ CPTexturedBackgroundWindowMask [attachedSheet setFrame:sheetFrame display:YES animate:NO]; } +- (void)_previousSheetIsClosedNotification:(CPNotification)aNotification +{ + [[CPNotificationCenter defaultCenter] removeObserver:self name:CPWindowDidEndSheetNotification object:self]; + + var sheet = _sheetContext[@"nextSheet"], + modalDelegate =_sheetContext[@"nextModalDelegate"], + endSelector = _sheetContext[@"nextEndSelector"], + contextInfo = _sheetContext[@"nextContextInfo"]; + + // Needed, becauwe when the notification CPWindowDidEndSheetNotification is sent, the sheetContext is not up to date... + setTimeout(function() + { + [sheet._windowView _enableSheet:YES inWindow:self]; + [self _attachSheet:sheet modalDelegate:modalDelegate didEndSelector:endSelector contextInfo:contextInfo]; + }, 0) +} + /* Starting point for sheet session, called from CPApplication beginSheet: */ @@ -2687,9 +2704,24 @@ CPTexturedBackgroundWindowMask { if (_sheetContext) { - [CPException raise:CPInternalInconsistencyException - reason:@"The target window of beginSheet: already has a sheet, did you forget orderOut: ?"]; - return; + // Here we wait till the current sheet is closed + if (_sheetContext[@"isClosing"]) + { + // Here we save the next sheet to open + _sheetContext[@"nextSheet"] = aSheet; + _sheetContext[@"nextModalDelegate"] = aModalDelegate; + _sheetContext[@"nextEndSelector"] = didEndSelector; + _sheetContext[@"nextContextInfo"] = contextInfo; + + [[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(_previousSheetIsClosedNotification:) name:CPWindowDidEndSheetNotification object:self]; + return; + } + else + { + [CPException raise:CPInternalInconsistencyException + reason:@"The target window of beginSheet: already has a sheet, did you forget orderOut: ?"]; + return; + } } _sheetContext = { @@ -2741,7 +2773,12 @@ CPTexturedBackgroundWindowMask */ - (void)_detachSheetWindow { + if (_sheetContext["isClosing"]) + return; + _sheetContext["isAttached"] = NO; + _sheetContext["isClosing"] = YES; + _sheetContext["opened"] = NO; // A timer seems to be necessary for the animation to work correctly. // It would be ideal to block here and spin the event loop, until attach is complete. @@ -2874,12 +2911,6 @@ CPTexturedBackgroundWindowMask return; } - if (_sheetContext["isClosing"]) - return; - - _sheetContext["opened"] = NO; - _sheetContext["isClosing"] = YES; - // The parent window can be orderedOut to disable the sheet animate out, as in Cocoa if ([self isVisible]) { diff --git a/Tests/Manual/AttachedSheet2/SheetWindowController.j b/Tests/Manual/AttachedSheet2/SheetWindowController.j index 096beec68..41866b38f 100644 --- a/Tests/Manual/AttachedSheet2/SheetWindowController.j +++ b/Tests/Manual/AttachedSheet2/SheetWindowController.j @@ -399,9 +399,6 @@ _returnCode = 77; [CPApp endSheet:[self window] returnCode:_returnCode]; - - if (orderOutAfter) - [[self window] orderOut:nil]; } // @@ -519,7 +516,15 @@ // test sheet chaining. it should be possible to start another sheet from didEndSheet, // but only if we orderOut: the sheet before we called endSheet: This is how cocoa works too. if (returnCode == 77) + { + var orderOutAfter = [_orderOutAfterCheckbox state]; + + if (orderOutAfter) + [[self window] orderOut:self]; + [self runSheetForWindow:parentWindow]; + } + //[self runAlertSheet:parentWindow]; } From bfd0ceac53896ae933782de941f2ea6648a9766b Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Wed, 29 Oct 2014 21:50:46 -0700 Subject: [PATCH 04/26] Typo: becauwe instead of because --- AppKit/CPWindow/CPWindow.j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index baafd32a4..7a9c20217 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -2688,7 +2688,7 @@ CPTexturedBackgroundWindowMask endSelector = _sheetContext[@"nextEndSelector"], contextInfo = _sheetContext[@"nextContextInfo"]; - // Needed, becauwe when the notification CPWindowDidEndSheetNotification is sent, the sheetContext is not up to date... + // Needed, because when the notification CPWindowDidEndSheetNotification is sent, the sheetContext is not up to date... setTimeout(function() { [sheet._windowView _enableSheet:YES inWindow:self]; From 9621d76faa68c52b8c323c92ca8ef8779f1be652 Mon Sep 17 00:00:00 2001 From: Andrew Hankinson Date: Sat, 1 Nov 2014 12:10:23 -0400 Subject: [PATCH 05/26] Fixed: NativeHost is no longer built by default This commit removes NativeHost from the 'Tools' Jakefile, ensuring that it does not get built by default. Fixes #2239 --- Tools/Jakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools/Jakefile b/Tools/Jakefile index d57ab7c6c..b0f0b52a8 100644 --- a/Tools/Jakefile +++ b/Tools/Jakefile @@ -2,6 +2,6 @@ require("../common.jake"); // nib2cib uses fontinfo and imagesize and capp uses nib2cib -subtasks(["fontinfo", "imagesize", "nib2cib", "capp", "capp_lint", "dump_theme", "NativeHost", "XcodeCapp"], ["build"/*, "clean", "clobber"*/]); +subtasks(["fontinfo", "imagesize", "nib2cib", "capp", "capp_lint", "dump_theme", "XcodeCapp"], ["build", /*"clean", "clobber"*/]); subtasks(["fontinfo", "imagesize"], ["clean", "clobber"]); From c37f0cfaa9bae48269f06fbc3889613964893f75 Mon Sep 17 00:00:00 2001 From: Andrew Hankinson Date: Sat, 1 Nov 2014 12:20:03 -0400 Subject: [PATCH 06/26] Fixed: Removed old CI scripts from the Tools directory The Tools directory contained some old scripts for a previous continuous integration system. Since we're using Travis now, these are no longer needed. --- Tools/Scripts/ci-extra-nightlies.sh | 10 -------- Tools/Scripts/ci.sh | 36 ----------------------------- Tools/Scripts/cruise_config.rb | 6 ----- Tools/Scripts/githooks/pre-commit | 3 --- 4 files changed, 55 deletions(-) delete mode 100644 Tools/Scripts/ci-extra-nightlies.sh delete mode 100755 Tools/Scripts/ci.sh delete mode 100644 Tools/Scripts/cruise_config.rb delete mode 100755 Tools/Scripts/githooks/pre-commit diff --git a/Tools/Scripts/ci-extra-nightlies.sh b/Tools/Scripts/ci-extra-nightlies.sh deleted file mode 100644 index b0726ab50..000000000 --- a/Tools/Scripts/ci-extra-nightlies.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -PACKAGE_BRANCH="nightly" jake push-packages -code=$? -if [ $code -ne 0 ]; then - echo "NIGHTLY BUILD PUSH FAILED ($code)" - exit $code -else - echo "NIGHTLY BUILD PUSH SUCCEEDED" -fi diff --git a/Tools/Scripts/ci.sh b/Tools/Scripts/ci.sh deleted file mode 100755 index 4cce6225e..000000000 --- a/Tools/Scripts/ci.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash - -project_home="$(dirname "$PWD")" -extras="$project_home/ci-extra.sh" - -export PATH="$HOME/narwhal/bin:$PATH" -export CAPP_AUTO_UPGRADE="yes" - -export CAPP_BUILD="$project_home/build_incremental" -time jake CommonJS test-only -code=$? -if [ $code -ne 0 ]; then - echo "INCREMENTAL BUILD FAILED ($code)" - exit $code -else - echo "INCREMENTAL BUILD SUCCEEDED" -fi - -export CAPP_BUILD="$project_home/build_clean" -rm -rf "$CAPP_BUILD" - -time jake CommonJS test-only -code=$? -if [ $code -ne 0 ]; then - echo "CLEAN BUILD FAILED ($code)" - exit $code -else - echo "CLEAN BUILD SUCCEEDED" -fi - -# run any additional ci commands not common to all branches (like nightly builds) -if [ -f "$extras" ]; then - source "$extras" -fi - -exit 0 diff --git a/Tools/Scripts/cruise_config.rb b/Tools/Scripts/cruise_config.rb deleted file mode 100644 index 17c14a20d..000000000 --- a/Tools/Scripts/cruise_config.rb +++ /dev/null @@ -1,6 +0,0 @@ -Project.configure do |project| - - project.email_notifier.emails = ['objjbuild@googlegroups.com'] - project.build_command = 'Tools/Scripts/ci.sh' - -end diff --git a/Tools/Scripts/githooks/pre-commit b/Tools/Scripts/githooks/pre-commit deleted file mode 100755 index e5f2f4587..000000000 --- a/Tools/Scripts/githooks/pre-commit +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -jake test-only From 491b5dcd6f0b598d432bb6b35bbf1c62568cc2c7 Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Wed, 5 Nov 2014 14:13:08 -0800 Subject: [PATCH 07/26] Fixed: text cursor for CPTextField class doesn't take content-inset in account Previously, the text cursor of the CPTextField didn't take in account the content-inset. This raised issue with class as the CPComboBox, when the mouse was over the popUpButton, there was still the text cursor instead of the default one. Now it works as in Cocoa. --- AppKit/CPTextField.j | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index 5f11f1d6e..fc3d833d9 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -350,8 +350,6 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); _sendActionOn = CPKeyUpMask | CPKeyDownMask; [self setValue:CPLeftTextAlignment forThemeAttribute:@"alignment"]; - - [self _updateCursor]; } return self; @@ -373,8 +371,6 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); if (shouldBeEditable) _isSelectable = YES; - [self _updateCursor]; - if (_isEditable) [self setThemeState:CPThemeStateEditable]; else @@ -405,7 +401,6 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); - (void)setEnabled:(BOOL)shouldBeEnabled { [super setEnabled:shouldBeEnabled]; - [self _updateCursor]; // We only allow first responder status if the field is enabled. if (!shouldBeEnabled && [[self window] firstResponder] === self) @@ -419,8 +414,6 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); - (void)setSelectable:(BOOL)aFlag { _isSelectable = aFlag; - - [self _updateCursor]; } /*! @@ -930,6 +923,12 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [self textDidChange:[CPNotification notificationWithName:CPControlTextDidChangeNotification object:self userInfo:nil]]; } +- (void)mouseMoved:(CPEvent)anEvent +{ + [super mouseMoved:anEvent]; + [self _updateCursorForEvent:anEvent]; +} + - (void)mouseDown:(CPEvent)anEvent { // Don't track! (ever?) @@ -1140,9 +1139,14 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [super textDidChange:note]; } -- (void)_updateCursor +- (void)_updateCursorForEvent:(CPEvent)anEvent { - if ([self isEnabled] && ([self isSelectable] || [self isEditable])) + var frame = CGRectMakeCopy([self frame]), + contentInset = [self currentValueForThemeAttribute:@"content-inset"]; + + frame = [[self superview] convertRectToBase:CGRectInsetByInset(frame, contentInset)]; + + if ([self isEnabled] && ([self isSelectable] || [self isEditable]) && CGRectContainsPoint(frame, [anEvent locationInWindow])) { #if PLATFORM(DOM) self._DOMElement.style.cursor = "text"; @@ -1966,8 +1970,6 @@ var CPTextFieldIsEditableKey = "CPTextFieldIsEditableKey", [self setAlignment:[aCoder decodeIntForKey:CPTextFieldAlignmentKey]]; [self setPlaceholderString:[aCoder decodeObjectForKey:CPTextFieldPlaceholderStringKey]]; - - [self _updateCursor]; } return self; From fc43ec818596c5410f0bc5ee362f5dc2bb027afa Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Wed, 5 Nov 2014 14:26:34 -0800 Subject: [PATCH 08/26] Fixed: wrong content-inset for CPComboBox Previously, the content-inset of a CPComboBox was wrong, the text of the controller was over the popUPButton. --- AppKit/Themes/Aristo/ThemeDescriptors.j | 4 ++-- AppKit/Themes/Aristo2/ThemeDescriptors.j | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index 3cc69832c..efbbb1c23 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -1820,8 +1820,8 @@ var themedButtonValues = nil, // The right border inset has to make room for the focus ring and popup button [@"content-inset", CGInsetMake(8.0, 27.0, 7.0, 8.0), [CPThemeStateBezeled, CPComboBoxStateButtonBordered]], - [@"content-inset", CGInsetMake(8.0, 24.0, 7.0, 8.0), CPThemeStateBezeled], - [@"content-inset", CGInsetMake(8.0, 24.0, 7.0, 8.0), [CPThemeStateBezeled, CPThemeStateEditing]], + [@"content-inset", CGInsetMake(8.0, 27.0, 7.0, 8.0), CPThemeStateBezeled], + [@"content-inset", CGInsetMake(8.0, 27.0, 7.0, 8.0), [CPThemeStateBezeled, CPThemeStateEditing]], [@"popup-button-size", CGSizeMake(21.0, 23.0), [CPThemeStateBezeled, CPComboBoxStateButtonBordered]], [@"popup-button-size", CGSizeMake(17.0, 23.0), CPThemeStateBezeled], diff --git a/AppKit/Themes/Aristo2/ThemeDescriptors.j b/AppKit/Themes/Aristo2/ThemeDescriptors.j index c669539b5..f5f11c7f5 100644 --- a/AppKit/Themes/Aristo2/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo2/ThemeDescriptors.j @@ -1312,9 +1312,9 @@ var themedButtonValues = nil, [@"bezel-inset", CGInsetMake(3.0, 5.0, 3.0, 4.0), [CPThemeStateBezeled, CPThemeStateDisabled]], // The right border inset has to make room for the focus ring and popup button - [@"content-inset", CGInsetMake(9.0, 26.0, 7.0, 10.0), [CPThemeStateBezeled, CPComboBoxStateButtonBordered]], - [@"content-inset", CGInsetMake(9.0, 26.0, 7.0, 10.0), CPThemeStateBezeled], - [@"content-inset", CGInsetMake(9.0, 24.0, 7.0, 10.0), [CPThemeStateBezeled, CPThemeStateEditing]], + [@"content-inset", CGInsetMake(9.0, 30.0, 7.0, 10.0), [CPThemeStateBezeled, CPComboBoxStateButtonBordered]], + [@"content-inset", CGInsetMake(9.0, 30.0, 7.0, 10.0), CPThemeStateBezeled], + [@"content-inset", CGInsetMake(9.0, 28.0, 7.0, 10.0), [CPThemeStateBezeled, CPThemeStateEditing]], [@"popup-button-size", CGSizeMake(21.0, 23.0), [CPThemeStateBezeled, CPComboBoxStateButtonBordered]], [@"popup-button-size", CGSizeMake(17.0, 23.0), CPThemeStateBezeled], From ea0c5e291fa8469ecd6e1a8dae6fce12c990032f Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Thu, 6 Nov 2014 09:38:30 -0800 Subject: [PATCH 09/26] Fixed: notification xib converted wasn't displayed anymore Previously, the notification xib converted didn't show up. Now it does again. This PR fixes another issue. Now when checking the the compilation issues, we only pass objj file to the command objj. --- .../XcodeCapp/ProcessSourceOperation.m | 10 +++----- Tools/XcodeCapp/XcodeCapp/XcodeCapp.m | 25 +++++++++++++++---- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m b/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m index 2c4858f2b..f41ffbddf 100644 --- a/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m +++ b/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m @@ -158,20 +158,16 @@ } else if (!self.xcc.isLoadingProject) { - BOOL showFinalNotification = NO; + BOOL showFinalNotification = YES; // At this point, we should only detect warnings - if ([self.xcc shouldProcessWithObjjWarnings]) + if ([self.xcc shouldProcessWithObjjWarnings] && ![self.xcc isXibFile:self.sourcePath]) { showFinalNotification = [self.xcc checkObjjWarningsForPath:[NSArray arrayWithObject:self.sourcePath]]; [self.xcc showObjjWarnings]; } - else - { - showFinalNotification = YES; - } - if ([self.xcc shouldProcessWithCappLint]) + if ([self.xcc shouldProcessWithCappLint] && ![self.xcc isXibFile:self.sourcePath]) { showFinalNotification = [self.xcc checkCappLintForPath:[NSArray arrayWithObject:self.sourcePath]] && showFinalNotification; [self.xcc showCappLintWarnings]; diff --git a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m index 52f3920f6..f3998a0a3 100644 --- a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m +++ b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m @@ -1852,15 +1852,26 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, DDLogVerbose(@"Checking path %@ with objj", paths); NSUInteger numberOfFiles = [paths count]; + NSUInteger i = 0; + NSMutableArray *objjPaths = [NSMutableArray array]; - if (!numberOfFiles) + // We only want the objj files + for (i = 0; i < numberOfFiles; i++) + { + NSString *path = [paths objectAtIndex:i]; + + if ([self isObjjFile:path]) + [objjPaths addObject:path]; + } + + if (![objjPaths count]) return YES; [[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidStartNotification object:self]; [[NSNotificationCenter defaultCenter] postNotificationName:XCCObjjDidStartNotification object:self]; NSMutableArray *arguments = [NSMutableArray arrayWithObjects:@"-I", [self _getObjjIncludePaths], @"-m", nil]; - [arguments addObjectsFromArray:paths]; + [arguments addObjectsFromArray:objjPaths]; NSDictionary *taskResult = [self runTaskWithLaunchPath:self.executablePaths[@"objj"] arguments:arguments @@ -1879,7 +1890,7 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, NSMutableArray *errors = [NSMutableArray arrayWithArray:[response componentsSeparatedByString:@"\n\n"]]; NSInteger numberOfErrors = [errors count]; - NSInteger i = 0; + i = 0; NSMutableArray *dicts = [NSMutableArray array]; // When checking of the entire project, we have to be ready to find errors @@ -1906,8 +1917,12 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, if (![matches count]) { - DDLogVerbose(@"Error %@ has been ignored by xCodeCapp, the error doesn't respect any pattern", error); - continue; + // This shouldn't happen + DDLogVerbose(@"Error %@ doesn't respect any pattern", error); + + path = @""; + line = 0; + messageError = [NSString stringWithFormat:@"Compiling issue at line %@ of file %@:\n%@", line, path.lastPathComponent, error]; } for (NSTextCheckingResult *match in matches) From 26223bb38344f8751b43ffa7aa1f9db14ad08184 Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Thu, 6 Nov 2014 09:52:40 -0800 Subject: [PATCH 10/26] Fixed: include path doesn't take the absolute path --- Tools/XcodeCapp/XcodeCapp/XcodeCapp.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m index f3998a0a3..f326c2654 100644 --- a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m +++ b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m @@ -1842,9 +1842,9 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, NSArray *matches = [regulareExpressionFramework matchesInString:response options:0 range:NSMakeRange(0, [response length])]; for (NSTextCheckingResult *match in matches) - return [response substringWithRange:[match rangeAtIndex:1]]; + return [NSString stringWithFormat:@"%@/%@", self.projectPath, [response substringWithRange:[match rangeAtIndex:1]]]; - return @"Frameworks/"; + return [NSString stringWithFormat:@"%@/%@", self.projectPath ,@"Frameworks/"]; } - (BOOL)checkObjjWarningsForPath:(NSArray*)paths From 9a5afb70b51e7fca2b2c5000095f72c5e1583bd9 Mon Sep 17 00:00:00 2001 From: Andrew Hankinson Date: Thu, 6 Nov 2014 13:40:47 -0500 Subject: [PATCH 11/26] Fixed: Environment configuration in Jakefile templates Previously the Jakefile template for the capp utility would emit a template where the "configuration" build environment parameter could have multiple values. At the head of the file, the configuration parameter could be an environment variable composed of ENV['CONFIG'], ENV['CONFIGURATION'] or ENV['c']. It would default to "Debug". However, other locations in this file did not use the detected configuration, and only looked at ENV['CONFIGURATION'] for the environment variable. This commit fixes this by using the detected configuration environment variable as the build environment. --- Tools/capp/Resources/Templates/Application/Jakefile | 12 ++++++------ .../capp/Resources/Templates/NibApplication/Jakefile | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Tools/capp/Resources/Templates/Application/Jakefile b/Tools/capp/Resources/Templates/Application/Jakefile index 6207c9b34..08a8c0c8b 100644 --- a/Tools/capp/Resources/Templates/Application/Jakefile +++ b/Tools/capp/Resources/Templates/Application/Jakefile @@ -55,13 +55,13 @@ task ("build", ["default"], function() task ("debug", function() { - ENV["CONFIGURATION"] = "Debug"; + configuration = ENV["CONFIGURATION"] = "Debug"; JAKE.subjake(["."], "build", ENV); }); task ("release", function() { - ENV["CONFIGURATION"] = "Release"; + configuration = ENV["CONFIGURATION"] = "Release"; JAKE.subjake(["."], "build", ENV); }); @@ -105,7 +105,7 @@ function updateApplicationSize() { print("Calculating application file sizes..."); - var contents = FILE.read(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), { charset:"UTF-8" }), + var contents = FILE.read(FILE.join("Build", configuration, projectName, "Info.plist"), { charset:"UTF-8" }), format = CFPropertyList.sniffedFormatOfString(contents), plist = CFPropertyList.propertyListFromString(contents), totalBytes = {executable:0, data:0, mhtml:0}; @@ -113,7 +113,7 @@ function updateApplicationSize() // Get the size of all framework executables and sprite data var frameworksDir = "Frameworks"; - if (ENV["CONFIGURATION"] === "Debug") + if (configuration === "Debug") frameworksDir = FILE.join(frameworksDir, "Debug"); var frameworks = FILE.list(frameworksDir); @@ -137,7 +137,7 @@ function updateApplicationSize() addBundleFileSizes(themePath, totalBytes); // Add sizes for the app - addBundleFileSizes(FILE.join("Build", ENV["CONFIGURATION"], projectName), totalBytes); + addBundleFileSizes(FILE.join("Build", configuration, projectName), totalBytes); print("Executables: " + totalBytes.executable + ", sprite data: " + totalBytes.data + ", total: " + (totalBytes.executable + totalBytes.data)); @@ -149,7 +149,7 @@ function updateApplicationSize() plist.setValueForKey("CPApplicationSize", dict); - FILE.write(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); + FILE.write(FILE.join("Build", configuration, projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); } function addBundleFileSizes(bundlePath, totalBytes) diff --git a/Tools/capp/Resources/Templates/NibApplication/Jakefile b/Tools/capp/Resources/Templates/NibApplication/Jakefile index 6207c9b34..08a8c0c8b 100644 --- a/Tools/capp/Resources/Templates/NibApplication/Jakefile +++ b/Tools/capp/Resources/Templates/NibApplication/Jakefile @@ -55,13 +55,13 @@ task ("build", ["default"], function() task ("debug", function() { - ENV["CONFIGURATION"] = "Debug"; + configuration = ENV["CONFIGURATION"] = "Debug"; JAKE.subjake(["."], "build", ENV); }); task ("release", function() { - ENV["CONFIGURATION"] = "Release"; + configuration = ENV["CONFIGURATION"] = "Release"; JAKE.subjake(["."], "build", ENV); }); @@ -105,7 +105,7 @@ function updateApplicationSize() { print("Calculating application file sizes..."); - var contents = FILE.read(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), { charset:"UTF-8" }), + var contents = FILE.read(FILE.join("Build", configuration, projectName, "Info.plist"), { charset:"UTF-8" }), format = CFPropertyList.sniffedFormatOfString(contents), plist = CFPropertyList.propertyListFromString(contents), totalBytes = {executable:0, data:0, mhtml:0}; @@ -113,7 +113,7 @@ function updateApplicationSize() // Get the size of all framework executables and sprite data var frameworksDir = "Frameworks"; - if (ENV["CONFIGURATION"] === "Debug") + if (configuration === "Debug") frameworksDir = FILE.join(frameworksDir, "Debug"); var frameworks = FILE.list(frameworksDir); @@ -137,7 +137,7 @@ function updateApplicationSize() addBundleFileSizes(themePath, totalBytes); // Add sizes for the app - addBundleFileSizes(FILE.join("Build", ENV["CONFIGURATION"], projectName), totalBytes); + addBundleFileSizes(FILE.join("Build", configuration, projectName), totalBytes); print("Executables: " + totalBytes.executable + ", sprite data: " + totalBytes.data + ", total: " + (totalBytes.executable + totalBytes.data)); @@ -149,7 +149,7 @@ function updateApplicationSize() plist.setValueForKey("CPApplicationSize", dict); - FILE.write(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); + FILE.write(FILE.join("Build", configuration, projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); } function addBundleFileSizes(bundlePath, totalBytes) From 0f791be1956666ed131652a521b7c3ba3a16aec9 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Thu, 6 Nov 2014 12:20:56 -0800 Subject: [PATCH 12/26] FIXED: config warning issues --- Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj index dce859d69..3449e0637 100644 --- a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj +++ b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj @@ -19,7 +19,7 @@ E164FE181720F44B00263CE3 /* parser.j in Resources */ = {isa = PBXBuildFile; fileRef = E164FE171720F44B00263CE3 /* parser.j */; }; E164FE1A1720F49A00263CE3 /* Growl Registration Ticket.growlRegDict in Resources */ = {isa = PBXBuildFile; fileRef = E164FE191720F49A00263CE3 /* Growl Registration Ticket.growlRegDict */; }; E164FE1F1720F51E00263CE3 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E164FE1D1720F50100263CE3 /* CoreServices.framework */; }; - E164FE211720F55600263CE3 /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = E164FDF61720EBD600263CE3 /* Growl.framework */; }; + E164FE211720F55600263CE3 /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = E164FDF61720EBD600263CE3 /* Growl.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; E164FE2F1721A34900263CE3 /* icon-active.png in Resources */ = {isa = PBXBuildFile; fileRef = E164FE2C1721A34900263CE3 /* icon-active.png */; }; E164FE301721A34900263CE3 /* icon-inactive.png in Resources */ = {isa = PBXBuildFile; fileRef = E164FE2D1721A34900263CE3 /* icon-inactive.png */; }; E164FE311721A34900263CE3 /* icon-working.png in Resources */ = {isa = PBXBuildFile; fileRef = E164FE2E1721A34900263CE3 /* icon-working.png */; }; @@ -34,7 +34,7 @@ E171D25F173C168C00210893 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E171D25E173C168C00210893 /* Foundation.framework */; }; E171D262173C168C00210893 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E171D261173C168C00210893 /* main.m */; }; E171D26A173C1ADD00210893 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E164FE1D1720F50100263CE3 /* CoreServices.framework */; }; - E171D26C173C1C8300210893 /* xcc in CopyFiles */ = {isa = PBXBuildFile; fileRef = E171D25D173C168C00210893 /* xcc */; }; + E171D26C173C1C8300210893 /* xcc in CopyFiles */ = {isa = PBXBuildFile; fileRef = E171D25D173C168C00210893 /* xcc */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; E17A822D172700B90095CD83 /* XcodeCapp.iconset in Resources */ = {isa = PBXBuildFile; fileRef = E17A822C172700B90095CD83 /* XcodeCapp.iconset */; }; E17B55411732F57700809FFB /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E17B55401732F57700809FFB /* Quartz.framework */; }; E1A5594A172C5EE20088FB61 /* FindSourceFilesOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E1A55949172C5EE20088FB61 /* FindSourceFilesOperation.m */; }; @@ -389,7 +389,7 @@ E164FDC71720E77100263CE3 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0460; + LastUpgradeCheck = 0610; ORGANIZATIONNAME = "Cappuccino Project"; }; buildConfigurationList = E164FDCA1720E77100263CE3 /* Build configuration list for PBXProject "XcodeCapp" */; @@ -501,6 +501,7 @@ baseConfigurationReference = E164FDEF1720E7FA00263CE3 /* Debug.xcconfig */; buildSettings = { DSTROOT = /; + ONLY_ACTIVE_ARCH = YES; }; name = Debug; }; @@ -540,7 +541,6 @@ 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; @@ -576,7 +576,6 @@ 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; From aee89b1f63f2175d15b3ed115a0980a7479e9807 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Thu, 6 Nov 2014 12:21:23 -0800 Subject: [PATCH 13/26] NEW: option to define if the reporting window should stay on top --- Tools/XcodeCapp/XcodeCapp/AppController.m | 3 +- Tools/XcodeCapp/XcodeCapp/UserDefaults.h | 1 + Tools/XcodeCapp/XcodeCapp/UserDefaults.m | 3 +- Tools/XcodeCapp/XcodeCapp/XcodeCapp.m | 11 +- .../XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib | 159 ++++++++++++++---- 5 files changed, 140 insertions(+), 37 deletions(-) diff --git a/Tools/XcodeCapp/XcodeCapp/AppController.m b/Tools/XcodeCapp/XcodeCapp/AppController.m index e72307bd3..4647a079f 100644 --- a/Tools/XcodeCapp/XcodeCapp/AppController.m +++ b/Tools/XcodeCapp/XcodeCapp/AppController.m @@ -154,7 +154,8 @@ AppController *SharedAppControllerInstance = nil; kDefaultAutoOpenXcodeProject: @YES, kDefaultUseSymlinkWhenCreatingProject: @YES, kDefaultXCCUseDebugFrameworkWithObjj: @YES, - kDefaultXCCShouldProcessObjj: @YES + kDefaultXCCShouldProcessObjj: @YES, + kDefaultXCCPanelStyleUtility: @NO }; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; diff --git a/Tools/XcodeCapp/XcodeCapp/UserDefaults.h b/Tools/XcodeCapp/XcodeCapp/UserDefaults.h index 2843e57c7..9e5d5b804 100644 --- a/Tools/XcodeCapp/XcodeCapp/UserDefaults.h +++ b/Tools/XcodeCapp/XcodeCapp/UserDefaults.h @@ -31,5 +31,6 @@ extern NSString * const kDefaultLogLevel; extern NSString * const kDefaultAutoOpenXcodeProject; extern NSString * const kDefaultUseSymlinkWhenCreatingProject; extern NSString * const kDefaultUpdateCappuccinoWithLastVersionOfMasterBranch; +extern NSString * const kDefaultXCCPanelStyleUtility; #endif diff --git a/Tools/XcodeCapp/XcodeCapp/UserDefaults.m b/Tools/XcodeCapp/XcodeCapp/UserDefaults.m index 18e976581..d88657a6f 100644 --- a/Tools/XcodeCapp/XcodeCapp/UserDefaults.m +++ b/Tools/XcodeCapp/XcodeCapp/UserDefaults.m @@ -28,4 +28,5 @@ NSString * const kDefaultMaxRecentProjects = @"maxRecentProjects"; NSString * const kDefaultLogLevel = @"logLevel"; NSString * const kDefaultAutoOpenXcodeProject = @"autoOpenXcodeProject"; NSString * const kDefaultUseSymlinkWhenCreatingProject = @"useSymlinkWhenCreatingProject"; -NSString * const kDefaultUpdateCappuccinoWithLastVersionOfMasterBranch = @"updateCappuccinoWithLastVersionOfMasterBranch"; \ No newline at end of file +NSString * const kDefaultUpdateCappuccinoWithLastVersionOfMasterBranch = @"updateCappuccinoWithLastVersionOfMasterBranch"; +NSString * const kDefaultXCCPanelStyleUtility = @"XCCPanelStyleUtility"; \ No newline at end of file diff --git a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m index f326c2654..3037b6651 100644 --- a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m +++ b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m @@ -1566,18 +1566,21 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, - (IBAction)openErrorsPanel:(id)aSender { [[NSApplication sharedApplication] activateIgnoringOtherApps:YES]; + [self.errorsPanel setFloatingPanel:[[NSUserDefaults standardUserDefaults] boolForKey:kDefaultXCCPanelStyleUtility]]; [self.errorsPanel makeKeyAndOrderFront:nil]; } - (IBAction)openErrorInEditor:(id)sender { id info = self.errorListController.selection; - - NSString *path = [info valueForKey:@"path"]; - + + NSString *path = [info valueForKey:@"realPath"] ? [info valueForKey:@"realPath"] : [info valueForKey:@"path"]; + + NSLog(@"09090900 %@", info); + if (path == NSNoSelectionMarker) return; - + if ([self isObjjFile:path]) { [self openObjjFile:path line:[[info valueForKey:@"line"] intValue]]; diff --git a/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib b/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib index 239798b27..28098a798 100644 --- a/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib +++ b/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib @@ -2,9 +2,9 @@ 1060 - 14A389 + 14B17 6250 - 1343.14 + 1343.15 755.00 6250 @@ -243,7 +243,7 @@ - + 256 @@ -251,6 +251,8 @@ 268 {{164, 20}, {203, 143}} + + YES 68157504 @@ -287,6 +289,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 266 {{164, 171}, {221, 74}} + YES @@ -334,6 +337,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {{17, 108}, {128, 128}} + YES @@ -353,24 +357,26 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {402, 247} + + - {{0, 0}, {1440, 877}} + {{0, 0}, {1440, 900}} {10000000000000, 10000000000000} NO 15 2 - {{1826, 825}, {550, 237}} - 1618478080 + {{890, 663}, {550, 237}} + 1613759488 Reporting NSPanel {315, 77} - + 256 @@ -386,6 +392,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 256 {550, 201} + YES NO @@ -462,6 +469,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {{1, 1}, {550, 201}} + @@ -473,6 +481,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ -2147483392 {{1, 273}, {512, 16}} + NO _doScroller: @@ -486,6 +495,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ -2147483392 {{535, 1}, {16, 45}} + NO _doScroller: @@ -496,6 +506,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {{-1, 35}, {552, 203}} + 133682 @@ -511,6 +522,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 289 {{352, 8}, {85, 19}} + {250, 750} YES @@ -539,6 +551,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 292 {{20, 8}, {85, 19}} + {250, 750} YES @@ -563,6 +576,8 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 289 {{445, 8}, {85, 19}} + + {250, 750} YES @@ -583,19 +598,21 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {550, 237} + + - {{1440, -180}, {1920, 1057}} + {{0, 0}, {1440, 900}} {315, 99} {10000000000000, 10000000000000} - errorPanel + YES 3 2 - {{1964, 505}, {369, 473}} - 1618478080 + {{534, 231}, {369, 510}} + 1613235200 Preferences NSWindow @@ -615,7 +632,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 268 - {{16, 81}, {271, 18}} + {{16, 118}, {271, 18}} @@ -649,10 +666,10 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 268 - {{16, 51}, {241, 18}} + {{16, 88}, {241, 18}} - + YES -2080374784 @@ -671,10 +688,35 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ NO + + + 268 + {{16, 58}, {260, 18}} + + + + YES + + -2080374784 + 0 + Errors & Warnings panel always on top + + + 1211912448 + 2 + + + + + 400 + 75 + + NO + 268 - {{16, 109}, {298, 18}} + {{16, 146}, {298, 18}} @@ -699,7 +741,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 268 - {{15, 20}, {106, 17}} + {{16, 17}, {106, 17}} @@ -719,7 +761,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 268 - {{124, 14}, {56, 26}} + {{125, 11}, {56, 26}} @@ -794,13 +836,13 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ NO - {{1, 1}, {330, 139}} + {{1, 1}, {330, 176}} - {{17, 303}, {332, 155}} + {{17, 303}, {332, 192}} @@ -1144,12 +1186,12 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ NO - {369, 473} + {369, 510} - {{1440, -180}, {1920, 1057}} + {{0, 0}, {1440, 900}} {10000000000000, 10000000000000} xcc-prefs YES @@ -1164,7 +1206,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ - + 256 @@ -1176,8 +1218,6 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {{0, 8}, {716, 654}} - - YES 1 NO @@ -1186,11 +1226,9 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {716, 662} - - - {{0, 0}, {1440, 877}} + {{0, 0}, {1440, 900}} {10000000000000, 10000000000000} YES @@ -1291,7 +1329,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ _NS:21 - {{0, 0}, {1440, 877}} + {{0, 0}, {1440, 900}} {10000000000000, 10000000000000} updatingCappuccinoPanel YES @@ -1564,6 +1602,14 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ HyN-S0-KXD + + + save: + + + + A92-fj-Uci + openXcodeProject: @@ -2030,6 +2076,26 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ dP2-Fc-one + + + value: values.XCCPanelStyleUtility + + + + + + value: values.XCCPanelStyleUtility + value + values.XCCPanelStyleUtility + + NSValidatesImmediately + + + 2 + + + uUW-Ro-3aA + value: values.updateCappuccinoWithLastVersionOfMasterBranch @@ -2488,6 +2554,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ + @@ -2854,6 +2921,19 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ + + GDP-7Q-0W5 + + + + + + + + QpC-n8-rmF + + + @@ -2885,6 +2965,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ com.apple.InterfaceBuilder.CocoaPlugin + {182, 582.5} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -2895,11 +2976,12 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ + {239, 248.5} com.apple.InterfaceBuilder.CocoaPlugin - - - {-243.5, 329.5} + + + {-183.5, 363} com.apple.InterfaceBuilder.CocoaPlugin @@ -3063,6 +3145,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -3084,6 +3167,18 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + If this is checked, when a Cappuccino project is opened, the project’s Xcode support project will be opened automatically + + + + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip @@ -3116,6 +3211,8 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin From 1ce6a630d2ac186e8daaaffaa00d5b050b1fc15d Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Thu, 6 Nov 2014 13:29:16 -0800 Subject: [PATCH 14/26] Fixed: warnings from objj were displayed several times --- Tools/XcodeCapp/XcodeCapp/XcodeCapp.m | 39 ++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m index f326c2654..081f44db4 100644 --- a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m +++ b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m @@ -1573,8 +1573,8 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, { id info = self.errorListController.selection; - NSString *path = [info valueForKey:@"path"]; - + NSString *path = [info valueForKey:@"realPath"] ? [info valueForKey:@"realPath"] : [info valueForKey:@"path"]; + if (path == NSNoSelectionMarker) return; @@ -1890,7 +1890,6 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, NSMutableArray *errors = [NSMutableArray arrayWithArray:[response componentsSeparatedByString:@"\n\n"]]; NSInteger numberOfErrors = [errors count]; - i = 0; NSMutableArray *dicts = [NSMutableArray array]; // When checking of the entire project, we have to be ready to find errors @@ -1901,6 +1900,8 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, if ([paths count] == 1) filePath = [paths firstObject]; + i = 0; + for (i = 0; i < numberOfErrors; i++) { NSMutableString *error = (NSMutableString*)[errors objectAtIndex:i]; @@ -1965,10 +1966,36 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, path , @"realPath", nil]; - // Compiler can show several times the same errors - if (![dicts containsObject:dict] && ![self.errorList containsObject:dict]) - [dicts addObject:dict]; + // Block to compare dicts + BOOL (^dictComparaison)(id obj, NSUInteger idx, BOOL *stop) = ^(id obj, NSUInteger idx, BOOL *stop){ + if ([obj valueForKey:@"line"] == [dict valueForKey:@"line"]) + { + // For an unknown reason, trim doesn't work + NSString *messsageObj = [obj valueForKey:@"message"]; + NSString *messsageDict = [dict valueForKey:@"message"]; + + messsageDict = [messsageDict stringByReplacingOccurrencesOfString:@" " withString:@""]; + messsageDict = [messsageDict stringByReplacingOccurrencesOfString:@"\n" withString:@""]; + + messsageObj = [messsageObj stringByReplacingOccurrencesOfString:@" " withString:@""]; + messsageObj = [messsageObj stringByReplacingOccurrencesOfString:@"\n" withString:@""]; + + if ([messsageDict isEqualToString:messsageObj]) + { + *stop = YES; + return YES; + } + } + + return NO; + }; + NSUInteger isInDict = [dicts indexOfObjectPassingTest:dictComparaison]; + NSUInteger isInList = [self.errorList indexOfObjectPassingTest:dictComparaison]; + + // Compiler can show several times the same errors + if (isInDict == NSNotFound && isInList == NSNotFound) + [dicts addObject:dict]; } [self performSelectorOnMainThread:@selector(objjCompilerDidGenerateError:) withObject:dicts waitUntilDone:YES]; From 57d435b6db378a1681f861b4f269838e4a5d5d5e Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Thu, 6 Nov 2014 14:59:40 -0800 Subject: [PATCH 15/26] NEW: .gitignore ignores .tm_properties --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9d53e1758..11a5e1abf 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ xcuserdata/ Tests/Manual/**/*.xcodeproj *.sublime-project *.sublime-workspace +*.tm_properties From 9a307269ca6d8f7a3c680b5e0fe5d31584857875 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Fri, 7 Nov 2014 14:25:35 -0800 Subject: [PATCH 16/26] FIXED: CPButtonBar was not removing old button set from the view This patch ensure that when we are using setButtons: old buttons are actually removed from the superview --- AppKit/CPButtonBar.j | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/AppKit/CPButtonBar.j b/AppKit/CPButtonBar.j index c524a2fcb..024924830 100644 --- a/AppKit/CPButtonBar.j +++ b/AppKit/CPButtonBar.j @@ -133,7 +133,11 @@ - (void)setButtons:(CPArray)buttons { for (var i = [_buttons count] - 1; i >= 0; i--) + { + [_buttons[i] removeFromSuperview]; [_buttons[i] removeObserver:self forKeyPath:@"hidden"]; + } + _buttons = [CPArray arrayWithArray:buttons]; From 664d5777fd95d442aaf7325fb8b6d8369ad5a598 Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Fri, 7 Nov 2014 15:43:18 -0800 Subject: [PATCH 17/26] Fixed: CPWindow doesn't take the event when moving from another platformWindow Previously, when moving from platformWindow to another platformWindow, the targeted window didn't get the new event because the keyWindow of the application was still set to the other platformWindow. This PR fixes another issue about opening panel in a platformWindow. When opening a panel in a platformWindow, cappuccino set the new key window to the wrong platformWindow. --- AppKit/CPWindow/CPWindow.j | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index f770fc642..969d9fad7 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -1846,6 +1846,12 @@ CPTexturedBackgroundWindowMask if (_leftMouseDownView !== _firstResponder && [_leftMouseDownView acceptsFirstResponder]) [self makeFirstResponder:_leftMouseDownView]; + var keyWindow = [CPApp keyWindow]; + + // This is only when we move from a platform to another one + if ([keyWindow platformWindow] != [self platformWindow]) + [self makeKeyAndOrderFront:self]; + [CPApp activateIgnoringOtherApps:YES]; var theWindow = [anEvent window], @@ -2477,7 +2483,7 @@ CPTexturedBackgroundWindowMask if (currentWindow === self || currentWindow === menuWindow) continue; - if ([currentWindow isVisible] && [currentWindow canBecomeKeyWindow]) + if ([currentWindow isVisible] && [currentWindow canBecomeKeyWindow] && [currentWindow platformWindow] == [keyWindow platformWindow]) { [currentWindow makeKeyWindow]; break; From 0cafb3fac53df9b338940322845db5142d622065 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Mon, 10 Nov 2014 17:03:34 -0800 Subject: [PATCH 18/26] FIXED: CPViewController coming from a XIB could call viewDidLoad two times This patch ensure that CPViewController is never calling viewDidLoad more than one time. --- AppKit/CPViewController.j | 1 + 1 file changed, 1 insertion(+) diff --git a/AppKit/CPViewController.j b/AppKit/CPViewController.j index 2ea3a05de..0c9bec99e 100644 --- a/AppKit/CPViewController.j +++ b/AppKit/CPViewController.j @@ -210,6 +210,7 @@ var CPViewControllerCachedCibs; [cibOwner viewControllerDidLoadCib:self]; _isLoading = NO; + _isLazy = NO; [self _viewDidLoad]; } else if (_isLazy) From 0c7b2ae7023ba18a59f75cbf868f28e0d53917f9 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 12 Nov 2014 23:59:46 -0800 Subject: [PATCH 19/26] NEW: Support for multiline mode in CPTextField This patch adds support for CPTextField with multiline content. It uses a DOM textarea when needed, instead of DOM input. It also disable the spellchecking, fixes a bug where the input element was not correctly resized when the frame changed, and refactor some code --- AppKit/CPTextField.j | 282 ++++++++++++--------- AppKit/Platform/DOM/CPPlatformWindow+DOM.j | 2 +- 2 files changed, 164 insertions(+), 120 deletions(-) diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index fc3d833d9..63ea80fe2 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -47,9 +47,10 @@ CPTextFieldRoundedBezel = 1; /*! A textfield bezel with rounded corne CPTextFieldDidFocusNotification = @"CPTextFieldDidFocusNotification"; CPTextFieldDidBlurNotification = @"CPTextFieldDidBlurNotification"; -var CPTextFieldDOMInputElement = nil, - CPTextFieldDOMPasswordInputElement = nil, +var CPTextFieldDOMCurrentElement = nil, + CPTextFieldDOMTextAreaElement = nil, CPTextFieldDOMStandardInputElement = nil, + CPTextFieldDOMPasswordInputElement = nil, CPTextFieldInputOwner = nil, CPTextFieldTextDidChangeValue = nil, CPTextFieldInputResigning = NO, @@ -142,6 +143,9 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); // NS-style Display Properties CPTextFieldBezelStyle _bezelStyle; BOOL _isBordered; + BOOL _usesSingleLineMode; + BOOL _wraps; + BOOL _scrolls; } + (Class)_binderClassForBinding:(CPString)aBinding @@ -246,95 +250,106 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); #if PLATFORM(DOM) - (DOMElement)_inputElement { - if (!CPTextFieldDOMInputElement) + if (!CPTextFieldDOMTextAreaElement) { - CPTextFieldDOMInputElement = document.createElement("input"); - CPTextFieldDOMInputElement.style.position = "absolute"; - CPTextFieldDOMInputElement.style.border = "0px"; - CPTextFieldDOMInputElement.style.padding = "0px"; - CPTextFieldDOMInputElement.style.margin = "0px"; - CPTextFieldDOMInputElement.style.whiteSpace = "pre"; - CPTextFieldDOMInputElement.style.background = "transparent"; - CPTextFieldDOMInputElement.style.outline = "none"; + CPTextFieldDOMTextAreaElement = document.createElement("textarea"); + CPTextFieldDOMTextAreaElement.style.position = "absolute"; + CPTextFieldDOMTextAreaElement.style.border = "0px"; + CPTextFieldDOMTextAreaElement.style.padding = "0px"; + CPTextFieldDOMTextAreaElement.style.margin = "0px"; + CPTextFieldDOMTextAreaElement.style.background = "transparent"; + CPTextFieldDOMTextAreaElement.style.outline = "none"; + CPTextFieldDOMTextAreaElement.style.resize = "none"; + CPTextFieldDOMTextAreaElement.style.overflow = "hidden"; + CPTextFieldDOMTextAreaElement.spellcheck = NO; + } + if (!CPTextFieldDOMStandardInputElement) + { + CPTextFieldDOMStandardInputElement = document.createElement("input"); + CPTextFieldDOMStandardInputElement.style.position = "absolute"; + CPTextFieldDOMStandardInputElement.style.border = "0px"; + CPTextFieldDOMStandardInputElement.style.padding = "0px"; + CPTextFieldDOMStandardInputElement.style.margin = "0px"; + CPTextFieldDOMStandardInputElement.style.whiteSpace = "pre"; + CPTextFieldDOMStandardInputElement.style.background = "transparent"; + CPTextFieldDOMStandardInputElement.style.outline = "none"; + CPTextFieldDOMStandardInputElement.spellcheck = NO; + } + + if (!CPTextFieldDOMPasswordInputElement) + { + CPTextFieldDOMPasswordInputElement = document.createElement("input"); + CPTextFieldDOMPasswordInputElement.style.position = "absolute"; + CPTextFieldDOMPasswordInputElement.style.border = "0px"; + CPTextFieldDOMPasswordInputElement.style.padding = "0px"; + CPTextFieldDOMPasswordInputElement.style.margin = "0px"; + CPTextFieldDOMPasswordInputElement.style.whiteSpace = "pre"; + CPTextFieldDOMPasswordInputElement.style.background = "transparent"; + CPTextFieldDOMPasswordInputElement.style.outline = "none"; + CPTextFieldDOMPasswordInputElement.type = "password"; + CPTextFieldDOMPasswordInputElement.spellcheck = NO; + } + + if (!CPTextFieldBlurHandler) + { CPTextFieldBlurHandler = function(anEvent) { return CPTextFieldBlurFunction( anEvent, CPTextFieldInputOwner, CPTextFieldInputOwner ? CPTextFieldInputOwner._DOMElement : nil, - CPTextFieldDOMInputElement, + CPTextFieldDOMCurrentElement, CPTextFieldInputResigning, @ref(CPTextFieldInputDidBlur)); }; + } - if (CPFeatureIsCompatible(CPInputOnInputEventFeature)) + if (!CPTextFieldInputFunction) + { + if (!CPFeatureIsCompatible(CPInputOnInputEventFeature)) + return; + + CPTextFieldInputFunction = function(anEvent) { - CPTextFieldInputFunction = function(anEvent) - { - if (!CPTextFieldInputOwner) - return; + if (!CPTextFieldInputOwner) + return; - var cappEvent = [CPEvent keyEventWithType:CPKeyUp - location:CGPointMakeZero() - modifierFlags:0 - timestamp:[CPEvent currentTimestamp] - windowNumber:[[CPApp keyWindow] windowNumber] - context:nil - characters:nil - charactersIgnoringModifiers:nil - isARepeat:NO - keyCode:nil]; + var cappEvent = [CPEvent keyEventWithType:CPKeyUp + location:CGPointMakeZero() + modifierFlags:0 + timestamp:[CPEvent currentTimestamp] + windowNumber:[[CPApp keyWindow] windowNumber] + context:nil + characters:nil + charactersIgnoringModifiers:nil + isARepeat:NO + keyCode:nil]; - [CPTextFieldInputOwner keyUp:cappEvent]; + [CPTextFieldInputOwner keyUp:cappEvent]; - [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; - } - - CPTextFieldDOMInputElement.oninput = CPTextFieldInputFunction; + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; } - // FIXME make this not onblur - CPTextFieldDOMInputElement.onblur = CPTextFieldBlurHandler; + CPTextFieldDOMPasswordInputElement.oninput = CPTextFieldInputFunction; + CPTextFieldDOMPasswordInputElement.onblur = CPTextFieldBlurHandler; - CPTextFieldDOMStandardInputElement = CPTextFieldDOMInputElement; + CPTextFieldDOMStandardInputElement.oninput = CPTextFieldInputFunction; + CPTextFieldDOMPasswordInputElement.onblur = CPTextFieldBlurHandler; + + CPTextFieldDOMTextAreaElement.oninput = CPTextFieldInputFunction; + CPTextFieldDOMTextAreaElement.onblur = CPTextFieldBlurHandler; } - if (CPFeatureIsCompatible(CPInputTypeCanBeChangedFeature)) - { - if ([self isSecure]) - CPTextFieldDOMInputElement.type = "password"; - else - CPTextFieldDOMInputElement.type = "text"; - - return CPTextFieldDOMInputElement; - } if ([self isSecure]) - { - if (!CPTextFieldDOMPasswordInputElement) - { - CPTextFieldDOMPasswordInputElement = document.createElement("input"); - CPTextFieldDOMPasswordInputElement.style.position = "absolute"; - CPTextFieldDOMPasswordInputElement.style.border = "0px"; - CPTextFieldDOMPasswordInputElement.style.padding = "0px"; - CPTextFieldDOMPasswordInputElement.style.margin = "0px"; - CPTextFieldDOMPasswordInputElement.style.whiteSpace = "pre"; - CPTextFieldDOMPasswordInputElement.style.background = "transparent"; - CPTextFieldDOMPasswordInputElement.style.outline = "none"; - CPTextFieldDOMPasswordInputElement.type = "password"; - - CPTextFieldDOMPasswordInputElement.onblur = CPTextFieldBlurHandler; - } - - CPTextFieldDOMInputElement = CPTextFieldDOMPasswordInputElement; - } + CPTextFieldDOMCurrentElement = CPTextFieldDOMPasswordInputElement; + else if (_usesSingleLineMode) + CPTextFieldDOMCurrentElement = CPTextFieldDOMStandardInputElement; else - { - CPTextFieldDOMInputElement = CPTextFieldDOMStandardInputElement; - } + CPTextFieldDOMCurrentElement = CPTextFieldDOMTextAreaElement; - return CPTextFieldDOMInputElement; + return CPTextFieldDOMCurrentElement; } #endif @@ -553,6 +568,24 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); return _textFieldBackgroundColor; } +/*! @ignore */ +- (void)_setUsesSingleLineMode:(BOOL)aFlag +{ + _usesSingleLineMode = aFlag; +} + +/*! @ignore */ +- (void)_setWraps:(BOOL)aFlag +{ + _wraps = aFlag; +} + +/*! @ignore */ +- (void)_setScrolls:(BOOL)aFlag +{ + _scrolls = aFlag; +} + /*! @ignore */ - (BOOL)acceptsFirstResponder { @@ -608,28 +641,10 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [self _setCSSStyleForInputElement]; - var element = [self _inputElement], - font = [self currentValueForThemeAttribute:@"font"], - contentRect = [self contentRectForBounds:[self bounds]], - left = CGRectGetMinX(contentRect); - + var element = [self _inputElement]; element.value = _stringValue; - - // If the browser has a built in left padding, compensate for it. We need the input text to be exactly on top of the original text. - if (CPFeatureIsCompatible(CPInput1PxLeftPadding)) - left -= 1; - - element.style.left = left + "px"; - element.style.width = CGRectGetWidth(contentRect) + "px"; - element.style.verticalAlign = "top"; - element.style.cursor = "auto"; - _DOMElement.appendChild(element); - // The font change above doesn't work for some browsers if the element isn't already appendChild'ed. - if (!CPFeatureIsCompatible(CPInputSetFontOutsideOfDOM)) - element.style.font = [font cssString]; - CPTextFieldInputIsActive = YES; if (document.attachEvent) @@ -673,37 +688,18 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); */ - (void)_setCSSStyleForInputElement { - #if PLATFORM(DOM) - var element = [self _inputElement], - font = [self currentValueForThemeAttribute:@"font"], - lineHeight = [font defaultLineHeightForFont], - contentRect = [self contentRectForBounds:[self bounds]], - verticalAlign = [self currentValueForThemeAttribute:"vertical-alignment"]; - if ([self hasThemeState:CPTextFieldStatePlaceholder]) - element.style.color = [[self valueForThemeAttribute:@"text-color" inState:CPTextFieldStatePlaceholder] cssString]; - else - element.style.color = [[self valueForThemeAttribute:@"text-color" inState:CPThemeStateEditing] cssString]; + var element = [self _inputElement], + font = [self currentValueForThemeAttribute:@"font"], + lineHeight = [font defaultLineHeightForFont], + contentRect = [self contentRectForBounds:[self bounds]], + verticalAlign = [self currentValueForThemeAttribute:"vertical-alignment"], + left = CGRectGetMinX(contentRect); - if (CPFeatureIsCompatible(CPInputSetFontOutsideOfDOM)) - element.style.font = [font cssString]; - - element.style.zIndex = 1000; - - switch ([self alignment]) - { - case CPCenterTextAlignment: - element.style.textAlign = "center"; - break; - - case CPRightTextAlignment: - element.style.textAlign = "right"; - break; - - default: - element.style.textAlign = "left"; - } + // If the browser has a built in left padding, compensate for it. We need the input text to be exactly on top of the original text. + if (CPFeatureIsCompatible(CPInput1PxLeftPadding)) + left -= 1; switch (verticalAlign) { @@ -724,12 +720,41 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); break; } - element.style.top = topPoint; - element.style.height = ROUND(lineHeight) + "px"; - element.style.lineHeight = ROUND(lineHeight) + "px"; + if ([self hasThemeState:CPTextFieldStatePlaceholder]) + element.style.color = [[self valueForThemeAttribute:@"text-color" inState:CPTextFieldStatePlaceholder] cssString]; + else + element.style.color = [[self valueForThemeAttribute:@"text-color" inState:CPThemeStateEditing] cssString]; + + switch ([self alignment]) + { + case CPCenterTextAlignment: + element.style.textAlign = "center"; + break; + + case CPRightTextAlignment: + element.style.textAlign = "right"; + break; + + default: + element.style.textAlign = "left"; + } + + var isTextArea = element.nodeName.toUpperCase() == "TEXTAREA"; + + element.style.zIndex = 1000; + element.style.top = topPoint; + element.style.lineHeight = ROUND(lineHeight) + "px"; + element.style.height = isTextArea ? CGRectGetHeight(contentRect) + "px" : ROUND(lineHeight) + "px";; + element.style.width = CGRectGetWidth(contentRect) + "px"; + element.style.left = left + "px"; + element.style.verticalAlign = "top"; + element.style.cursor = "auto"; + element.style.font = [font cssString]; + + if (isTextArea) + element.style.whiteSpace = _wraps ? "pre" : "nowrap"; #endif - } /*! @ignore */ @@ -1054,6 +1079,9 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [self _didEdit]; } + console.error("newValue : >" + newValue + "<") + console.error("_stringValue : >" + _stringValue + "<") + if ([self _valueIsValid:_stringValue]) { // If _isEditing == YES then the target action can also be called via @@ -1099,7 +1127,11 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); range = [self selectedRange], element = [self _inputElement]; - element.value = [element.value stringByReplacingCharactersInRange:[self selectedRange] withString:aCharacter]; + // we don't need to do this in case of textarea + // or we will end up with 2 carriage returns + if (aCharacter != CPNewlineCharacter || element.nodeName.toUpperCase() != "TEXTAREA") + element.value = [element.value stringByReplacingCharactersInRange:[self selectedRange] withString:aCharacter]; + [self _setStringValue:element.value]; // NOTE: _stringValue is now the current input element value @@ -1944,7 +1976,11 @@ var CPTextFieldIsEditableKey = "CPTextFieldIsEditableKey", CPTextFieldLineBreakModeKey = "CPTextFieldLineBreakModeKey", CPTextFieldAlignmentKey = "CPTextFieldAlignmentKey", CPTextFieldBackgroundColorKey = "CPTextFieldBackgroundColorKey", - CPTextFieldPlaceholderStringKey = "CPTextFieldPlaceholderStringKey"; + CPTextFieldPlaceholderStringKey = "CPTextFieldPlaceholderStringKey", + CPTextFieldUsesSingleLineMode = "CPTextFieldUsesSingleLineMode", + CPTextFieldWraps = "CPTextFieldWraps", + CPTextFieldScrolls = "CPTextFieldScrolls"; + @implementation CPTextField (CPCoding) @@ -1970,6 +2006,10 @@ var CPTextFieldIsEditableKey = "CPTextFieldIsEditableKey", [self setAlignment:[aCoder decodeIntForKey:CPTextFieldAlignmentKey]]; [self setPlaceholderString:[aCoder decodeObjectForKey:CPTextFieldPlaceholderStringKey]]; + + [self _setUsesSingleLineMode:[aCoder decodeBoolForKey:CPTextFieldUsesSingleLineMode]]; + [self _setWraps:[aCoder decodeBoolForKey:CPTextFieldWraps]]; + [self _setScrolls:[aCoder decodeBoolForKey:CPTextFieldScrolls]]; } return self; @@ -1994,6 +2034,10 @@ var CPTextFieldIsEditableKey = "CPTextFieldIsEditableKey", [aCoder encodeInt:[self alignment] forKey:CPTextFieldAlignmentKey]; [aCoder encodeObject:_placeholderString forKey:CPTextFieldPlaceholderStringKey]; + + [aCoder encodeBool:_usesSingleLineMode forKey:CPTextFieldUsesSingleLineMode]; + [aCoder encodeBool:_wraps forKey:CPTextFieldWraps]; + [aCoder encodeBool:_scrolls forKey:CPTextFieldScrolls]; } @end diff --git a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j index 31b1810ef..eeba3a894 100644 --- a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j +++ b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j @@ -1143,7 +1143,7 @@ var PreventScroll = true; _mouseDownIsRightClick = button == 2 || (CPBrowserIsOperatingSystem(CPMacOperatingSystem) && button == 0 && modifierFlags & CPControlKeyMask); - if (sourceElement.tagName === "INPUT" && sourceElement != _DOMFocusElement) + if ((sourceElement.tagName === "INPUT" || sourceElement.tagName === "TEXTAREA") && sourceElement != _DOMFocusElement) { if ([CPPlatform supportsDragAndDrop]) { From e7cde2ca5ff14b193243248ccace24307fb8e73d Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Thu, 13 Nov 2014 00:10:22 -0800 Subject: [PATCH 20/26] Add support for usesMultilineMode and fix wraps and scrolls in nib2cib --- Tools/nib2cib/NSCell.j | 34 ++++++++++++++++++---------------- Tools/nib2cib/NSTextField.j | 4 ++++ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/Tools/nib2cib/NSCell.j b/Tools/nib2cib/NSCell.j index 01307538a..8be4737b8 100644 --- a/Tools/nib2cib/NSCell.j +++ b/Tools/nib2cib/NSCell.j @@ -51,6 +51,7 @@ int _lineBreakMode @accessors(readonly, getter=lineBreakMode); CPFormatter _formatter @accessors(readonly, getter=formatter); int _tag @accessors(readonly, getter=tag); + BOOL _usesSingleLineMode @accessors(readonly, getter=usesSingleLineMode); } - (id)initWithCoder:(CPCoder)aCoder @@ -62,22 +63,23 @@ var flags = [aCoder decodeIntForKey:@"NSCellFlags"], flags2 = [aCoder decodeIntForKey:@"NSCellFlags2"]; - _state = (flags & 0x80000000) ? CPOnState : CPOffState; - _isHighlighted = (flags & 0x40000000) ? YES : NO; - _isEnabled = (flags & 0x20000000) ? NO : YES; - _isEditable = (flags & 0x10000000) ? YES : NO; - _isBordered = (flags & 0x00800000) ? YES : NO; - _isBezeled = (flags & 0x00400000) ? YES : NO; - _isSelectable = (flags & 0x00200000) ? YES : NO; - _isScrollable = (flags & 0x00100000) ? YES : NO; - _isContinuous = (flags & 0x00080100) ? YES : NO; - _scrolls = (flags & 0x00100000) && (flags & 0x00000040); - _wraps = (flags & 0x00100000 === 0) && (flags & 0x00000040 === 0); - _truncates = !(flags & 0x00100000) && (flags & 0x00000040); - _alignment = (flags2 & 0x1c000000) >> 26; - _lineBreakMode = (flags2 & 0x0E00) >> 9; - _controlSize = (flags2 & 0xE0000) >> 17; - _sendsActionOnEndEditing = (flags2 & 0x00400000) ? YES : NO; + _state = (flags & 0x80000000) ? CPOnState : CPOffState; + _isHighlighted = (flags & 0x40000000) ? YES : NO; + _isEnabled = (flags & 0x20000000) ? NO : YES; + _isEditable = (flags & 0x10000000) ? YES : NO; + _isBordered = (flags & 0x00800000) ? YES : NO; + _isBezeled = (flags & 0x00400000) ? YES : NO; + _isSelectable = (flags & 0x00200000) ? YES : NO; + _isScrollable = (flags & 0x00100000) ? YES : NO; + _isContinuous = (flags & 0x00080100) ? YES : NO; + _scrolls = (flags & 0x00100000) && (flags & 0x00000040) ? YES : NO; + _wraps = !(flags & 0x00100000) && !(flags & 0x00000040) ? YES : NO; + _truncates = (flags & 0x00100000) && !(flags & 0x00000040) ? YES : NO; + _alignment = (flags2 & 0x1c000000) >> 26; + _lineBreakMode = (flags2 & 0x0E00) >> 9; + _controlSize = (flags2 & 0xE0000) >> 17; + _sendsActionOnEndEditing = (flags2 & 0x00400000) ? YES : NO; + _usesSingleLineMode = (flags2 & 0xF4240) ? YES : NO; _tag = [aCoder decodeIntForKey:@"NSTag"]; diff --git a/Tools/nib2cib/NSTextField.j b/Tools/nib2cib/NSTextField.j index 711fb8f7e..cb0fa306b 100644 --- a/Tools/nib2cib/NSTextField.j +++ b/Tools/nib2cib/NSTextField.j @@ -54,6 +54,10 @@ [self setPlaceholderString:[cell placeholderString]]; + [self _setUsesSingleLineMode:[cell usesSingleLineMode]]; + [self _setWraps:[cell wraps]]; + [self _setScrolls:[cell scrolls]]; + var textColor = [cell textColor], defaultColor = [self currentValueForThemeAttribute:@"text-color"]; From de3f6d3e829cfeb8e7dd4c372651759ec82695af Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Thu, 13 Nov 2014 00:10:32 -0800 Subject: [PATCH 21/26] Add manual test --- .../CPTextFieldMultiline/AppController.j | 46 + Tests/Manual/CPTextFieldMultiline/Info.plist | 14 + Tests/Manual/CPTextFieldMultiline/Jakefile | 184 + .../Resources/MainMenu.cib | 3 + .../Resources/MainMenu.xib | 3604 +++++++++++++++++ .../CPTextFieldMultiline/index-debug.html | 191 + Tests/Manual/CPTextFieldMultiline/index.html | 161 + Tests/Manual/CPTextFieldMultiline/main.j | 18 + 8 files changed, 4221 insertions(+) create mode 100644 Tests/Manual/CPTextFieldMultiline/AppController.j create mode 100644 Tests/Manual/CPTextFieldMultiline/Info.plist create mode 100644 Tests/Manual/CPTextFieldMultiline/Jakefile create mode 100644 Tests/Manual/CPTextFieldMultiline/Resources/MainMenu.cib create mode 100644 Tests/Manual/CPTextFieldMultiline/Resources/MainMenu.xib create mode 100644 Tests/Manual/CPTextFieldMultiline/index-debug.html create mode 100644 Tests/Manual/CPTextFieldMultiline/index.html create mode 100644 Tests/Manual/CPTextFieldMultiline/main.j diff --git a/Tests/Manual/CPTextFieldMultiline/AppController.j b/Tests/Manual/CPTextFieldMultiline/AppController.j new file mode 100644 index 000000000..db6ef8162 --- /dev/null +++ b/Tests/Manual/CPTextFieldMultiline/AppController.j @@ -0,0 +1,46 @@ +/* + * AppController.j + * CPTextFielMultine + * + * Created by You on November 12, 2014. + * Copyright 2014, Your Company All rights reserved. + */ + +@import +@import + + +@implementation AppController : CPObject +{ + @outlet CPTextField field1; + @outlet CPTextField field2; + @outlet CPTextField field3; + @outlet CPWindow theWindow; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + var s = [field1 frameSize]; + s.height = 83; + [field1 setFrameSize:s] + + var s = [field2 frameSize]; + s.height = 83; + [field2 setFrameSize:s] + + var s = [field3 frameSize]; + s.height = 83; + [field3 setFrameSize:s] +} + +- (void)awakeFromCib +{ + [theWindow setFullPlatformWindow:YES]; +} + +- (IBAction)actionSent:(id)aSender +{ + CPLog.debug("action sent from " + aSender); +} + +@end diff --git a/Tests/Manual/CPTextFieldMultiline/Info.plist b/Tests/Manual/CPTextFieldMultiline/Info.plist new file mode 100644 index 000000000..4e6a94074 --- /dev/null +++ b/Tests/Manual/CPTextFieldMultiline/Info.plist @@ -0,0 +1,14 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CPTextFieldMultiline + CPBundleVersion + 1.0 + CPHumanReadableCopyright + Copyright © 2014, Your Company All rights reserved. + + diff --git a/Tests/Manual/CPTextFieldMultiline/Jakefile b/Tests/Manual/CPTextFieldMultiline/Jakefile new file mode 100644 index 000000000..6d39494ac --- /dev/null +++ b/Tests/Manual/CPTextFieldMultiline/Jakefile @@ -0,0 +1,184 @@ +/* + * Jakefile + * CPTextFielMultine + * + * Created by You on November 12, 2014. + * Copyright 2014, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"), + projectName = "CPTextFielMultine"; + +app (projectName, function(task) +{ + ENV["OBJJ_INCLUDE_PATHS"] = "Frameworks"; + + if (configuration === "Debug") + ENV["OBJJ_INCLUDE_PATHS"] = FILE.join(ENV["OBJJ_INCLUDE_PATHS"], configuration); + + task.setBuildIntermediatesPath(FILE.join("Build", "CPTextFielMultine.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPTextFielMultine"); + task.setIdentifier("com.yourcompany.CPTextFielMultine"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPTextFielMultine"); + task.setSources(new FileList("**/*.j").exclude(FILE.join("Build", "**")).exclude(FILE.join("Frameworks", "Source", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", [projectName], function() +{ + printResults(configuration); +}); + +task ("build", ["default"], function() +{ + updateApplicationSize(); +}); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", projectName, "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", projectName, "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", projectName)); + OS.system(["press", "-f", FILE.join("Build", "Release", projectName), FILE.join("Build", "Deployment", projectName)]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", projectName)); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", projectName), FILE.join("Build", "Desktop", projectName, "CPTextFielMultine.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", projectName, "CPTextFielMultine.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, projectName)); + print("----------------------------"); +} + +function updateApplicationSize() +{ + print("Calculating application file sizes..."); + + var contents = FILE.read(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), { charset:"UTF-8" }), + format = CFPropertyList.sniffedFormatOfString(contents), + plist = CFPropertyList.propertyListFromString(contents), + totalBytes = {executable:0, data:0, mhtml:0}; + + // Get the size of all framework executables and sprite data + var frameworksDir = "Frameworks"; + + if (ENV["CONFIGURATION"] === "Debug") + frameworksDir = FILE.join(frameworksDir, "Debug"); + + var frameworks = FILE.list(frameworksDir); + + frameworks.forEach(function(framework) + { + if (framework !== "Source") + addBundleFileSizes(FILE.join(frameworksDir, framework), totalBytes); + }); + + // Read in the default theme name, and attempt to get its size + var themeName = plist.valueForKey("CPDefaultTheme") || "Aristo2", + themePath = nil; + + if (themeName === "Aristo" || themeName === "Aristo2") + themePath = FILE.join(frameworksDir, "AppKit", "Resources", themeName + ".blend"); + else + themePath = FILE.join("Frameworks", "Resources", themeName + ".blend"); + + if (FILE.isDirectory(themePath)) + addBundleFileSizes(themePath, totalBytes); + + // Add sizes for the app + addBundleFileSizes(FILE.join("Build", ENV["CONFIGURATION"], projectName), totalBytes); + + print("Executables: " + totalBytes.executable + ", sprite data: " + totalBytes.data + ", total: " + (totalBytes.executable + totalBytes.data)); + + var dict = new CFMutableDictionary(); + + dict.setValueForKey("executable", totalBytes.executable); + dict.setValueForKey("data", totalBytes.data); + dict.setValueForKey("mhtml", totalBytes.mhtml); + + plist.setValueForKey("CPApplicationSize", dict); + + FILE.write(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); +} + +function addBundleFileSizes(bundlePath, totalBytes) +{ + var bundleName = FILE.basename(bundlePath), + environment = bundleName === "Foundation" ? "Objj" : "Browser", + bundlePath = FILE.join(bundlePath, environment + ".environment"); + + if (FILE.isDirectory(bundlePath)) + { + var filename = bundleName + ".sj", + filePath = new FILE.Path(FILE.join(bundlePath, filename)); + + if (filePath.exists()) + totalBytes.executable += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "dataURLs.txt")); + + if (filePath.exists()) + totalBytes.data += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLData.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLPaths.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + } +} diff --git a/Tests/Manual/CPTextFieldMultiline/Resources/MainMenu.cib b/Tests/Manual/CPTextFieldMultiline/Resources/MainMenu.cib new file mode 100644 index 000000000..9affdf898 --- /dev/null +++ b/Tests/Manual/CPTextFieldMultiline/Resources/MainMenu.cib @@ -0,0 +1,3 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;205E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;206E;E;D;K;10;$classnameS;31;CPCibRuntimeAttributesConnectorK;8;$classesA;S;31;CPCibRuntimeAttributesConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;159E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;1;0E;K;40;CPCibRuntimeAttributesConnectorObjectKeyD;K;6;CP$UIDd;3;159E;K;42;CPCibRuntimeAttributesConnectorKeyPathsKeyD;K;6;CP$UIDd;3;207E;K;40;CPCibRuntimeAttributesConnectorValuesKeyD;K;6;CP$UIDd;3;208E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;194E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;1;0E;K;40;CPCibRuntimeAttributesConnectorObjectKeyD;K;6;CP$UIDd;3;194E;K;42;CPCibRuntimeAttributesConnectorKeyPathsKeyD;K;6;CP$UIDd;3;209E;K;40;CPCibRuntimeAttributesConnectorValuesKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;188E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;1;0E;K;40;CPCibRuntimeAttributesConnectorObjectKeyD;K;6;CP$UIDd;3;188E;K;42;CPCibRuntimeAttributesConnectorKeyPathsKeyD;K;6;CP$UIDd;3;211E;K;40;CPCibRuntimeAttributesConnectorValuesKeyD;K;6;CP$UIDd;3;212E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;166E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;1;0E;K;40;CPCibRuntimeAttributesConnectorObjectKeyD;K;6;CP$UIDd;3;166E;K;42;CPCibRuntimeAttributesConnectorKeyPathsKeyD;K;6;CP$UIDd;3;213E;K;40;CPCibRuntimeAttributesConnectorValuesKeyD;K;6;CP$UIDd;3;214E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;198E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;215E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;198E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;158E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;216E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;198E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;189E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;217E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;198E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;193E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;218E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;198E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;168E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;219E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;198E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;182E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;220E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;198E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;174E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;221E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;198E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;152E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;222E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;200E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;158E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;223E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;201E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;193E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;223E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;202E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;189E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;223E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;203E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;163E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;223E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;204E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;168E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;223E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;89E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;224E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;91E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;225E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;94E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;226E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;139E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;227E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;144E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;228E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;137E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;229E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;138E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;230E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;140E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;231E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;232E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;146E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;233E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;143E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;234E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;95E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;82E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;128E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;236E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;129E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;237E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;110E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;238E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;105E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;239E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;108E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;240E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;123E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;241E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;104E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;242E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;109E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;243E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;124E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;244E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;106E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;245E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;119E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;246E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;116E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;248E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;122E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;249E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;90E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;250E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;149E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;251E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;150E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;252E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;125E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;254E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;133E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;134E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;158E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;198E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;168E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;198E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;163E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;198E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;193E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;198E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;189E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;198E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;182E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;198E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;174E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;198E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;179E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;198E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;185E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;198E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;169E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;204E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;258E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;259E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;260E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;262E;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;166E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;203E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;258E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;259E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;260E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;263E;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;188E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;202E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;258E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;259E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;260E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;194E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;201E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;258E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;259E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;260E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;265E;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;159E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;200E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;258E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;259E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;260E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;266E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;205E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;267E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;268E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;269E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;270E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;87E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;87E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;84E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;270E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;273E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;274E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;278E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;279E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;280E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;281E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;282E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;93E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;93E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;84E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;282E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;283E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;284E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;285E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;286E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;287E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;288E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;289E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;290E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;100E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;100E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;84E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;290E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;291E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;292E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;100E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;293E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;294E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;103E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;103E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;84E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;294E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;295E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;296E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;298E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;299E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;300E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;302E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;304E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;305E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;306E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;307E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;308E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;309E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;310E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;114E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;114E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;310E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;311E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;312E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;313E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;114E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;314E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;309E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;315E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;114E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;316E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;317E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;318E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;114E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;319E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;320E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;321E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;114E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;322E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;323E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;324E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;114E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;325E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;326E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;121E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;121E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;326E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;327E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;328E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;121E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;329E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;121E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;330E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;331E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;121E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;332E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;333E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;121E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;334E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;127E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;127E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;334E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;335E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;336E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;127E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;337E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;127E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;338E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;131E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;131E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;338E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;339E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;340E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;324E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;325E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;341E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;321E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;322E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;342E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;313E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;314E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;309E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;343E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;136E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;136E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;84E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;343E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;344E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;345E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;346E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;347E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;348E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;309E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;349E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;350E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;351E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;352E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;353E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;142E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;142E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;353E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;354E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;355E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;356E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;142E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;357E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;358E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;359E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;360E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;148E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;148E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;84E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;360E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;361E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;362E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;148E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;363E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;364E;E;D;K;6;$classD;K;6;CP$UIDd;2;85E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;365E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;148E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;151E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;366E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;367E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;368E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;369E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;370E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;318E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;270E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;154E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;372E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;372E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;373E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;374E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;376E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;377E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;384E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;387E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;388E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;389E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;12;$atext-colorD;K;6;CP$UIDd;3;391E;K;6;$afontD;K;6;CP$UIDd;3;392E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;393E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;324E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;394E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;395E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;396E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;276E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;275E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;397E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;398E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;399E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;400E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;401E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;402E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;377E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;403E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;404E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;405E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;406E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;10;$classnameS;17;CPSecureTextFieldK;8;$classesA;S;17;CPSecureTextFieldS;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;407E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;408E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;396E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;276E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;275E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;397E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;409E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;410E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;411E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;389E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;12;$atext-colorD;K;6;CP$UIDd;3;412E;K;6;$afontD;K;6;CP$UIDd;3;392E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;413E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;324E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;414E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;377E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;403E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;415E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;416E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;401E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;417E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;418E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;419E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;420E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;408E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;396E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;276E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;275E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;397E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;409E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;421E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;416E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;401E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;422E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;377E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;403E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;423E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;411E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;389E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;12;$atext-colorD;K;6;CP$UIDd;3;424E;K;6;$afontD;K;6;CP$UIDd;3;392E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;324E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;426E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;427E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;428E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;10;$classnameS;10;CPComboBoxK;8;$classesA;S;10;CPComboBoxS;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;173E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;429E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;430E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;431E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;432E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;276E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;275E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;397E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;K;18;CPComboBoxItemsKeyD;K;6;CP$UIDd;3;433E;K;17;CPComboBoxListKeyD;K;6;CP$UIDd;1;0E;K;21;CPComboBoxDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPComboBoxDataSourceKeyD;K;6;CP$UIDd;1;0E;K;27;CPComboBoxUsesDataSourceKeyD;K;6;CP$UIDd;3;277E;K;22;CPComboBoxCompletesKeyD;K;6;CP$UIDd;3;277E;K;33;CPComboBoxNumberOfVisibleItemsKeyD;K;6;CP$UIDd;3;434E;K;32;CPComboBoxHasVerticalScrollerKeyD;K;6;CP$UIDd;3;275E;K;27;CPComboBoxButtonBorderedKeyD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;435E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;411E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;389E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;12;$atext-colorD;K;6;CP$UIDd;3;436E;K;6;$afontD;K;6;CP$UIDd;3;392E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;324E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;437E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;427E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;438E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;439E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;411E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;389E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;12;$atext-colorD;K;6;CP$UIDd;3;440E;K;6;$afontD;K;6;CP$UIDd;3;392E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;413E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;324E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;E;D;K;10;$classnameS;13;CPSearchFieldK;8;$classesA;S;13;CPSearchFieldS;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;178E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;441E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;416E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;442E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;443E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;276E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;275E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;397E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;K;27;CPSendsWholeSearchStringKeyD;K;6;CP$UIDd;3;277E;K;33;CPSendsSearchStringImmediatelyKeyD;K;6;CP$UIDd;3;275E;K;19;CPMaximumRecentsKeyD;K;6;CP$UIDd;3;444E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;445E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;446E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;447E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;10;$classnameS;12;CPTokenFieldK;8;$classesA;S;12;CPTokenFieldS;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;181E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;448E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;408E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;449E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;450E;K;11;$aalignmentD;K;6;CP$UIDd;3;371E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;451E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;275E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;397E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;371E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;409E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;K;37;CPTokenFieldTokenizingCharacterSetKeyD;K;6;CP$UIDd;1;0E;K;27;CPTokenFieldCompletionDelayD;K;6;CP$UIDd;1;0E;K;25;CPTokenFieldButtonTypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;452E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;411E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;389E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;12;$atext-colorD;K;6;CP$UIDd;3;453E;K;6;$afontD;K;6;CP$UIDd;3;392E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;413E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;324E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;E;D;K;10;$classnameS;12;CPDatePickerK;8;$classesA;S;12;CPDatePickerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;184E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;454E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;455E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;456E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;457E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;458E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;460E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;13;CPIntervalKeyD;K;6;CP$UIDd;3;371E;K;19;CPDatePickerModeKeyD;K;6;CP$UIDd;3;371E;K;20;CPDatePickerStyleKeyD;K;6;CP$UIDd;3;371E;K;23;CPDatePickerElementsKeyD;K;6;CP$UIDd;3;461E;K;12;CPMinDateKeyD;K;6;CP$UIDd;3;462E;K;12;CPMaxDateKeyD;K;6;CP$UIDd;3;463E;K;14;CPDateValueKeyD;K;6;CP$UIDd;3;460E;K;13;CPTextFontKeyD;K;6;CP$UIDd;1;0E;K;11;CPLocaleKeyD;K;6;CP$UIDd;1;0E;K;20;CPBackgroundColorKeyD;K;6;CP$UIDd;3;456E;K;20;CPDrawsBackgroundKeyD;K;6;CP$UIDd;3;275E;K;13;CPBorderedKeyD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;464E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;465E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;466E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;467E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;411E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;389E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;12;$atext-colorD;K;6;CP$UIDd;3;468E;K;6;$afontD;K;6;CP$UIDd;3;392E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;413E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;324E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;469E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;400E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;401E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;470E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;395E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;396E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;276E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;275E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;397E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;398E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;471E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;377E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;472E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;473E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;388E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;389E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;12;$atext-colorD;K;6;CP$UIDd;3;474E;K;6;$afontD;K;6;CP$UIDd;3;392E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;475E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;324E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;476E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;377E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;403E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;477E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;395E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;396E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;276E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;275E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;275E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;397E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;409E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;478E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;400E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;401E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;479E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;405E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;480E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;481E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;388E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;389E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;371E;K;12;$atext-colorD;K;6;CP$UIDd;3;482E;K;6;$afontD;K;6;CP$UIDd;3;392E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;483E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;324E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;371E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;275E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;275E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;154E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;371E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;484E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;377E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;154E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;11;$aalignmentD;K;6;CP$UIDd;3;381E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;321E;K;6;$afontD;K;6;CP$UIDd;3;383E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;375E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;277E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;275E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;403E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;381E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;371E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;277E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;277E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;386E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;321E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;381E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;277E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;277E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;485E;E;D;K;10;$classnameS;18;CPObjectControllerK;8;$classesA;S;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;199E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;486E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;275E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;199E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;486E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;275E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;199E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;486E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;275E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;199E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;486E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;275E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;3;199E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;486E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;275E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;277E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;152E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;487E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;488E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;487E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;489E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;487E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;490E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;487E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;491E;E;E;S;8;delegateS;6;field1S;6;field2S;6;field3S;6;field5S;6;field6S;6;field7S;9;theWindowS;7;contentS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;10;terminate:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;11;actionSent:S;28;value: selection.stringValueS;5;valueS;21;selection.stringValueD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;E;E;S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;99E;E;E;S;6;WindowS;14;submenuAction:d;7;1048576S;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;E;E;T;S;0;F;S;18;Bring All to FrontS;4;ZoomS;8;MinimizeS;1;mS;14;NewApplicationS;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;95E;E;E;S;20;About NewApplicationS;19;Quit NewApplicationS;1;qS;12;Preferences…S;1;,S;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;101E;E;E;S;19;NewApplication HelpS;1;?S;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;126E;E;E;S;6;DeleteS;10;Select AllS;1;aS;4;UndoS;1;zS;3;CutS;1;xS;5;PasteS;1;vS;4;CopyS;1;cS;4;RedoS;1;Zd;7;1179648S;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;116E;E;E;S;13;Find Previousd;1;3S;1;GS;17;Jump to SelectionS;1;jS;22;Use Selection for Findd;1;7S;1;eS;9;Find Nextd;1;2S;1;gS;5;Find…d;1;1S;1;fS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;125E;E;E;S;27;Check Spelling While TypingS;14;Check SpellingS;1;;S;14;Show Spelling…S;1;:S;27;Check Grammar With SpellingS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;128E;E;E;S;13;Stop SpeakingS;14;Start SpeakingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;146E;E;E;S;4;SaveS;1;sS;8;Save As…S;1;SS;5;Open…S;1;oS;3;NewS;1;nS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;143E;E;E;S;10;Clear MenuS;5;CloseS;1;wS;15;Revert to SavedS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;E;E;S;12;Show ToolbarS;1;td;7;1572864S;18;Customize Toolbar…S;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1946157056S;24;{{335, -73}, {865, 560}}S;21;{{0, 0}, {1440, 877}}d;1;0S;20;{{0, 0}, {865, 560}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;E;E;S;6;normalS;6;{1, 1}S;21;{{20, 20}, {268, 17}}S;19;{{0, 0}, {268, 17}}d;2;36S;9;textfieldS;18;controlSizeRegulard;1;4D;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;382E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;492E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;493E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;277E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;277E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;277E;E;S;19;Scrolls, multi lineD;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;494E;E;S;21;{{21, 45}, {268, 49}}S;19;{{0, 0}, {268, 49}}S;16;controlSizeSmallD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;390E;K;4;nameD;K;6;CP$UIDd;3;495E;K;12;defaultValueD;K;6;CP$UIDd;3;496E;K;6;valuesD;K;6;CP$UIDd;3;497E;E;D;K;6;$classD;K;6;CP$UIDd;3;382E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;492E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;498E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;277E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;277E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;277E;E;S;124;Add a new line with alt+enter, if the line is bigger than the width of the field, it should continue, scrolling to the rightS;21;{{16, 99}, {276, 83}}S;19;{{0, 0}, {276, 83}}S;47;bezeled+controlSizeRegular+editable+placeholderD;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;499E;E;S;20;line 1 +line 2 +line 3S;22;{{20, 215}, {268, 83}}S;19;{{0, 0}, {268, 83}}S;5;LabelS;22;{{21, 193}, {268, 17}}S;20;String value bindingS;22;{{20, 320}, {269, 17}}S;19;{{0, 0}, {269, 17}}S;17;Secure text fieldS;22;{{16, 363}, {276, 22}}S;19;{{0, 0}, {276, 22}}S;6;Line 1S;22;{{20, 344}, {268, 14}}S;19;{{0, 0}, {268, 14}}D;K;6;$classD;K;6;CP$UIDd;3;390E;K;4;nameD;K;6;CP$UIDd;3;495E;K;12;defaultValueD;K;6;CP$UIDd;3;496E;K;6;valuesD;K;6;CP$UIDd;3;500E;E;S;40;You should not be able to alt+enter hereS;22;{{21, 396}, {268, 17}}S;22;{{20, 421}, {268, 22}}S;19;{{0, 0}, {268, 22}}S;23;{{298, 320}, {114, 17}}S;19;{{0, 0}, {114, 17}}S;19;Standard text fieldS;23;{{293, 363}, {276, 22}}S;23;{{298, 421}, {268, 22}}S;23;{{298, 396}, {268, 17}}S;23;{{298, 345}, {268, 14}}D;K;6;$classD;K;6;CP$UIDd;3;390E;K;4;nameD;K;6;CP$UIDd;3;495E;K;12;defaultValueD;K;6;CP$UIDd;3;496E;K;6;valuesD;K;6;CP$UIDd;3;501E;E;S;36;You should be able to alt+enter hereS;22;{{572, 320}, {73, 17}}S;18;{{0, 0}, {73, 17}}S;9;Combo boxS;23;{{568, 364}, {276, 26}}S;19;{{0, 0}, {276, 26}}S;8;comboboxS;63;bezeled+button-bordered+controlSizeRegular+editable+placeholderD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;502E;D;K;6;CP$UIDd;3;503E;D;K;6;CP$UIDd;3;504E;E;E;d;1;5S;23;{{572, 345}, {268, 14}}D;K;6;$classD;K;6;CP$UIDd;3;390E;K;4;nameD;K;6;CP$UIDd;3;495E;K;12;defaultValueD;K;6;CP$UIDd;3;496E;K;6;valuesD;K;6;CP$UIDd;3;505E;E;S;21;{{21, 471}, {73, 17}}S;12;Search fieldS;22;{{21, 496}, {268, 14}}D;K;6;$classD;K;6;CP$UIDd;3;390E;K;4;nameD;K;6;CP$UIDd;3;495E;K;12;defaultValueD;K;6;CP$UIDd;3;496E;K;6;valuesD;K;6;CP$UIDd;3;506E;E;S;22;{{20, 518}, {268, 22}}S;11;searchfieldS;55;bezeled+controlSizeRegular+editable+placeholder+roundedd;3;254S;22;{{296, 471}, {67, 17}}S;18;{{0, 0}, {67, 17}}S;11;Token fieldS;23;{{292, 514}, {276, 22}}S;10;tokenfieldS;35;bezeled+controlSizeRegular+editableD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;23;{{296, 496}, {268, 14}}D;K;6;$classD;K;6;CP$UIDd;3;390E;K;4;nameD;K;6;CP$UIDd;3;495E;K;12;defaultValueD;K;6;CP$UIDd;3;496E;K;6;valuesD;K;6;CP$UIDd;3;507E;E;S;23;{{572, 514}, {267, 29}}S;19;{{0, 0}, {267, 29}}D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;508E;E;S;10;datePickerS;35;bezeled+bordered+controlSizeRegularD;K;10;$classnameS;6;CPDateK;8;$classesA;S;6;CPDateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;459E;K;13;CPDateTimeKeyD;K;6;CP$UIDd;3;371E;E;d;3;224D;K;6;$classD;K;6;CP$UIDd;3;459E;K;13;CPDateTimeKeyD;K;6;CP$UIDd;3;509E;E;D;K;6;$classD;K;6;CP$UIDd;3;459E;K;13;CPDateTimeKeyD;K;6;CP$UIDd;3;510E;E;S;22;{{572, 471}, {71, 17}}S;18;{{0, 0}, {71, 17}}S;11;Date pickerS;23;{{572, 496}, {268, 14}}D;K;6;$classD;K;6;CP$UIDd;3;390E;K;4;nameD;K;6;CP$UIDd;3;495E;K;12;defaultValueD;K;6;CP$UIDd;3;496E;K;6;valuesD;K;6;CP$UIDd;3;511E;E;S;23;{{298, 215}, {268, 83}}S;22;{{294, 99}, {276, 83}}S;22;{{298, 20}, {268, 17}}S;17;Wraps, multi lineS;22;{{299, 45}, {268, 49}}D;K;6;$classD;K;6;CP$UIDd;3;390E;K;4;nameD;K;6;CP$UIDd;3;495E;K;12;defaultValueD;K;6;CP$UIDd;3;496E;K;6;valuesD;K;6;CP$UIDd;3;512E;E;S;109;Can add a new line with alt+enter, if the line is bigger than the screen, it should automatically wrap aroundS;23;{{298, 193}, {268, 17}}S;22;{{572, 99}, {276, 83}}S;23;{{576, 215}, {268, 83}}S;22;{{576, 20}, {269, 17}}S;20;Scrolls, single lineS;22;{{577, 45}, {268, 49}}D;K;6;$classD;K;6;CP$UIDd;3;390E;K;4;nameD;K;6;CP$UIDd;3;495E;K;12;defaultValueD;K;6;CP$UIDd;3;496E;K;6;valuesD;K;6;CP$UIDd;3;513E;E;S;116;Cannot add a new line, if the line is bigger than the width of the field, it should continue, scrolling to the rightS;23;{{576, 193}, {268, 17}}S;13;AppControllerS;19;CPMutableDictionaryS;15;backgroundColorD;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;514E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;515E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;516E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;517E;E;S;29;.Helvetica Neue DeskInterfaced;2;13D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;518E;D;K;6;CP$UIDd;3;518E;D;K;6;CP$UIDd;3;518E;D;K;6;CP$UIDd;3;324E;E;E;S;10;text-colorD;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;519E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;K;11;placeholderD;K;6;CP$UIDd;3;496E;K;6;normalD;K;6;CP$UIDd;3;520E;E;E;d;2;11D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;324E;D;K;6;CP$UIDd;3;324E;D;K;6;CP$UIDd;3;324E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;K;11;placeholderD;K;6;CP$UIDd;3;496E;K;6;normalD;K;6;CP$UIDd;3;521E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;K;11;placeholderD;K;6;CP$UIDd;3;496E;K;6;normalD;K;6;CP$UIDd;3;522E;E;E;S;6;Item 1S;6;Item 2S;6;Item 3D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;K;11;placeholderD;K;6;CP$UIDd;3;496E;K;6;normalD;K;6;CP$UIDd;3;523E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;K;11;placeholderD;K;6;CP$UIDd;3;496E;K;6;normalD;K;6;CP$UIDd;3;524E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;K;11;placeholderD;K;6;CP$UIDd;3;496E;K;6;normalD;K;6;CP$UIDd;3;525E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;324E;D;K;6;CP$UIDd;3;324E;D;K;6;CP$UIDd;3;324E;D;K;6;CP$UIDd;3;324E;E;E;d;15;-62135510400000d;14;64092297600000D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;K;11;placeholderD;K;6;CP$UIDd;3;496E;K;6;normalD;K;6;CP$UIDd;3;526E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;K;11;placeholderD;K;6;CP$UIDd;3;496E;K;6;normalD;K;6;CP$UIDd;3;527E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;10;CP.objectsD;K;11;placeholderD;K;6;CP$UIDd;3;496E;K;6;normalD;K;6;CP$UIDd;3;528E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;529E;D;K;6;CP$UIDd;3;324E;E;E;f;18;0.6862745098039216D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;371E;D;K;6;CP$UIDd;3;371E;D;K;6;CP$UIDd;3;371E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;530E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;531E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;532E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;533E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;534E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;535E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;536E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;537E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;538E;E;f;12;0.8509804606D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;324E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;539E;D;K;6;CP$UIDd;3;324E;E;E;f;12;0.2027027011E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPTextFieldMultiline/Resources/MainMenu.xib b/Tests/Manual/CPTextFieldMultiline/Resources/MainMenu.xib new file mode 100644 index 000000000..66031528e --- /dev/null +++ b/Tests/Manual/CPTextFieldMultiline/Resources/MainMenu.xib @@ -0,0 +1,3604 @@ + + + + 1050 + 14B23 + 6250 + 1343.16 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 6250 + + + NSComboBox + NSComboBoxCell + NSCustomObject + NSDatePicker + NSDatePickerCell + NSMenu + NSMenuItem + NSObjectController + NSSearchField + NSSearchFieldCell + NSSecureTextField + NSSecureTextFieldCell + NSTextField + NSTextFieldCell + NSTokenField + NSTokenFieldCell + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + + NewApplication + + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + + File + + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + + Open Recent + + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + Edit + + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + + Find + + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + + Spelling and Grammar + + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + + Substitutions + + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + + Speech + + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + + View + + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + Window + + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + + Help + + + + NewApplication Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + 7 + 2 + {{335, 390}, {865, 560}} + 1946157056 + Window + NSWindow + + + + + 256 + + + + 268 + {{20, 375}, {268, 83}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + YES + 13 + 1044 + + bGluZSAxCmxpbmUgMgpsaW5lIDM + _NS:9 + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + NO + 1 + + + + 268 + {{18, 262}, {272, 83}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Label + + _NS:526 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + labelColor + + + + NO + 1 + + + + 268 + {{296, 262}, {272, 83}} + + + + _NS:526 + {251, 750} + YES + + 67108864 + 272629760 + Label + + _NS:526 + + + + + NO + YES + 1 + + + + 268 + {{18, 117}, {272, 22}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Label + + _NS:526 + + + + + NO + 1 + + + + 268 + {{296, 117}, {272, 22}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Label + + _NS:526 + + + + + NO + 1 + + + + 268 + {{18, 523}, {272, 17}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Scrolls, multi line + + _NS:526 + + + + + NO + 1 + + + + 268 + {{297, 172}, {268, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + Line 1 + _NS:9 + + YES + + + + NO + 1 + + + + 268 + {{20, 172}, {268, 22}} + + + + _NS:9 + YES + + 342884416 + 272630848 + + + Line 1 + _NS:9 + + YES + + + + NSAllRomanInputSourcesLocaleIdentifier + + + NO + 1 + + + + 268 + {{298, 375}, {268, 83}} + + + + _NS:9 + YES + + -1805647871 + 272629760 + + + bGluZSAxCmxpbmUgMgpsaW5lIDM + _NS:9 + + YES + + + + NO + 1 + + + + 268 + {{296, 523}, {272, 17}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Wraps, multi line + + _NS:526 + + + + + NO + 1 + + + + 268 + {{18, 223}, {273, 17}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Secure text field + + _NS:526 + + + + + NO + 1 + + + + 268 + {{296, 223}, {118, 17}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Standard text field + + _NS:526 + + + + + NO + 1 + + + + 268 + {{19, 72}, {77, 17}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Search field + + _NS:526 + + + + + NO + 1 + + + + 268 + + NSStringPboardType + + {{296, 21}, {268, 22}} + + + + _NS:9 + YES + + 341835776 + 0 + + Line 1 + _NS:9 + + YES + + + 6 + System + controlTextColor + + + + 0.0 + 0 + + NO + 1 + 2 + + + + 268 + {{294, 72}, {71, 17}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Token field + + _NS:526 + + + + + NO + 1 + + + + 268 + {{570, 223}, {77, 17}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Combo box + + _NS:526 + + + + + NO + 1 + + + + 268 + {{572, 170}, {271, 26}} + + + + _NS:9 + YES + + 342884417 + 272630784 + + + _NS:9 + + YES + + + 5 + YES + + Item 1 + Item 2 + Item 3 + + + + + 274 + {13, 63} + + + _NS:29 + YES + NO + YES + tableViewAction: + + + + 0 + 10 + 10 + 3.4028234663852886e+38 + + 67108928 + 2048 + + + YES + 11 + 3100 + + + 6 + System + headerColor + + + + 6 + System + headerTextColor + + + + + 337641536 + 268437504 + Item 3 + + + + 6 + System + controlBackgroundColor + + + + + 3 + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 19 + tableViewAction: + -765427712 + + + + 1 + -1 + 0 + YES + 0 + 1 + + + NO + 1 + + + + 268 + {{20, 20}, {268, 22}} + + + + YES + _NS:9 + YES + + 342884416 + 268436544 + + + _NS:9 + + YES + 1 + + + + 0 + 0 + search + + _searchFieldSearch: + + 138690560 + 0 + + 400 + 75 + + + 0 + 0 + clear + + + cancel + + + + + _searchFieldCancel: + + 138690560 + 0 + + 400 + 75 + + 255 + BgAAAA + + NO + 1 + + + + 268 + {{572, 21}, {270, 27}} + + + _NS:9 + YES + + 71303168 + 0 + + -595929600 + + US/Pacific + + VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAC5AAAABAAAABCepkign7sVkKCGKqChmveQ +y4kaoNIj9HDSYSYQ1v50INiArZDa/tGg28CQENzes6DdqayQ3r6VoN+JjpDgnneg4WlwkOJ+WaDjSVKQ +5F47oOUpNJDmR1gg5xJREOgnOiDo8jMQ6gccIOrSFRDr5v4g7LH3EO3G4CDukdkQ76/8oPBxuxDxj96g +8n/BkPNvwKD0X6OQ9U+ioPY/hZD3L4Sg+CiiEPkPZqD6CIQQ+viDIPvoZhD82GUg/chIEP64RyD/qCoQ +AJgpIAGIDBACeAsgA3EokARhJ6AFUQqQBkEJoAcw7JAHjUOgCRDOkAmtvyAK8LCQC+CvoAzZzRANwJGg +DrmvEA+priAQmZEQEYmQIBJ5cxATaXIgFFlVEBVJVCAWOTcQFyk2IBgiU5AZCRggGgI1kBryNKAb4heQ +HNIWoB3B+ZAesfigH6HbkCB2KyAhgb2QIlYNICNq2hAkNe8gJUq8ECYV0SAnKp4QJ/7toCkKgBAp3s+g +KupiECu+saAs036QLZ6ToC6zYJAvfnWgMJNCkDFnkiAycySQM0d0IDRTBpA1J1YgNjLokDcHOCA4HAUQ +OOcaIDn75xA6xvwgO9vJEDywGKA9u6sQPo/6oD+bjRBAb9ygQYSpkEJPvqBDZIuQRC+goEVEbZBF89Mg +Ry2KEEfTtSBJDWwQSbOXIErtThBLnLOgTNZqkE18laBOtkyQT1x3oFCWLpBRPFmgUnYQkFMcO6BUVfKQ +VPwdoFY11JBW5TogWB7xEFjFHCBZ/tMQWqT+IFvetRBchOAgXb6XEF5kwiBfnnkQYE3eoGGHlZBiLcCg +Y2d3kGQNoqBlR1mQZe2EoGcnO5BnzWagaQcdkGmtSKBq5v+Qa5ZlIGzQHBBtdkcgbq/+EG9WKSBwj+AQ +cTYLIHJvwhBzFe0gdE+kEHT/CaB2OMCQdt7roHgYopB4vs2gefiEkHqer6B72GaQfH6RoH24SJB+XnOg +f5gqkAABAAECAwEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA +AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA + + + %Y-%m-%d %H:%M:%S %z + + + _NS:9 + + 0.0 + 224 + + + + NO + + + + 268 + {{570, 72}, {75, 17}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Date picker + + _NS:526 + + + + + NO + 1 + + + + 268 + {{19, 466}, {272, 49}} + + + + _NS:526 + {251, 750} + YES + + 67108864 + 272760832 + Add a new line with alt+enter, if the line is bigger than the width of the field, it should continue, scrolling to the right + + _NS:526 + + + + 1 + MC4yMDI3MDI3MDExIDAuMjAyNzAyNzAxMSAwLjIwMjcwMjcwMTEAA + + + NO + YES + 1 + + + + 268 + {{297, 466}, {272, 49}} + + + + _NS:526 + {251, 750} + YES + + 67108864 + 272760832 + Can add a new line with alt+enter, if the line is bigger than the screen, it should automatically wrap around + + _NS:526 + + + + 1 + MC4yMDI3MDI3MDExIDAuMjAyNzAyNzAxMSAwLjIwMjcwMjcwMTEAA + + + NO + YES + 268 + 1 + + + + 268 + {{19, 350}, {272, 17}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + String value binding + + _NS:526 + + + + + NO + 1 + + + + 268 + {{296, 350}, {272, 17}} + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + String value binding + + _NS:526 + + + + + NO + 1 + + + + 268 + {{18, 202}, {272, 14}} + + + _NS:526 + {251, 750} + YES + + 67108864 + 272760832 + You should not be able to alt+enter here + + _NS:526 + + + + 1 + MC4yMDI3MDI3MDExIDAuMjAyNzAyNzAxMSAwLjIwMjcwMjcwMTEAA + + + NO + YES + 268 + 1 + + + + 268 + {{19, 147}, {272, 17}} + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + String value binding + + _NS:526 + + + + + NO + 1 + + + + 268 + {{296, 147}, {272, 17}} + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + String value binding + + _NS:526 + + + + + NO + 1 + + + + 268 + {{296, 201}, {272, 14}} + + + _NS:526 + {251, 750} + YES + + 67108864 + 272760832 + You should be able to alt+enter here + + _NS:526 + + + + 1 + MC4yMDI3MDI3MDExIDAuMjAyNzAyNzAxMSAwLjIwMjcwMjcwMTEAA + + + NO + YES + 268 + 1 + + + + 268 + {{570, 201}, {272, 14}} + + + _NS:526 + {251, 750} + YES + + 67108864 + 272760832 + You should be able to alt+enter here + + _NS:526 + + + + 1 + MC4yMDI3MDI3MDExIDAuMjAyNzAyNzAxMSAwLjIwMjcwMjcwMTEAA + + + NO + YES + 268 + 1 + + + + 268 + {{19, 50}, {272, 14}} + + + _NS:526 + {251, 750} + YES + + 67108864 + 272760832 + You should not be able to alt+enter here + + _NS:526 + + + + 1 + MC4yMDI3MDI3MDExIDAuMjAyNzAyNzAxMSAwLjIwMjcwMjcwMTEAA + + + NO + YES + 268 + 1 + + + + 268 + {{294, 50}, {272, 14}} + + + _NS:526 + {251, 750} + YES + + 67108864 + 272760832 + You should not be able to alt+enter here + + _NS:526 + + + + 1 + MC4yMDI3MDI3MDExIDAuMjAyNzAyNzAxMSAwLjIwMjcwMjcwMTEAA + + + NO + YES + 268 + 1 + + + + 268 + {{570, 50}, {272, 14}} + + + _NS:526 + {251, 750} + YES + + 67108864 + 272760832 + You should not be able to alt+enter here + + _NS:526 + + + + 1 + MC4yMDI3MDI3MDExIDAuMjAyNzAyNzAxMSAwLjIwMjcwMjcwMTEAA + + + NO + YES + 268 + 1 + + + + 268 + {{576, 375}, {268, 83}} + + + + _NS:9 + YES + + -1804599231 + 272630848 + + + Line 1 + _NS:9 + + YES + + + + NO + 1 + + + + 268 + {{574, 262}, {272, 83}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Label + + _NS:526 + + + + + NO + 1 + + + + 268 + {{574, 523}, {273, 17}} + + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + Scrolls, single line + + _NS:526 + + + + + NO + 1 + + + + 268 + {{575, 466}, {272, 49}} + + + + _NS:526 + {251, 750} + YES + + 67108864 + 272760832 + Cannot add a new line, if the line is bigger than the width of the field, it should continue, scrolling to the right + + _NS:526 + + + + 1 + MC4yMDI3MDI3MDExIDAuMjAyNzAyNzAxMSAwLjIwMjcwMjcwMTEAA + + + NO + YES + 268 + 1 + + + + 268 + {{574, 350}, {272, 17}} + + + _NS:526 + {251, 750} + YES + + 68157504 + 272630784 + String value binding + + _NS:526 + + + + + NO + 1 + + + {865, 560} + + + + {{0, 0}, {1440, 877}} + {10000000000000, 10000000000000} + YES + + + AppController + + + YES + + + + YES + + + + YES + + + + YES + + + + YES + + + + + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 451 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + clearRecentDocuments: + + + + 127 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + theWindow + + + + 459 + + + + actionSent: + + + + 598 + + + + actionSent: + + + + 599 + + + + field5 + + + + 584 + + + + actionSent: + + + + 602 + + + + actionSent: + + + + 601 + + + + actionSent: + + + + 600 + + + + actionSent: + + + + 603 + + + + field6 + + + + 585 + + + + field7 + + + + 586 + + + + actionSent: + + + + 604 + + + + actionSent: + + + + 605 + + + + actionSent: + + + + 606 + + + + field1 + + + + 643 + + + + field2 + + + + 644 + + + + field3 + + + + 645 + + + + value: selection.stringValue + + + + + + value: selection.stringValue + value + selection.stringValue + 2 + + + 488 + + + + content + + + + 483 + + + + value: selection.stringValue + + + + + + value: selection.stringValue + value + selection.stringValue + 2 + + + 542 + + + + value: selection.stringValue + + + + + + value: selection.stringValue + value + selection.stringValue + 2 + + + 545 + + + + content + + + + 538 + + + + content + + + + 539 + + + + value: selection.stringValue + + + + + + value: selection.stringValue + value + selection.stringValue + 2 + + + 556 + + + + content + + + + 553 + + + + value: selection.stringValue + + + + + + value: selection.stringValue + value + selection.stringValue + 2 + + + 569 + + + + content + + + + 564 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 56 + + + + + + + + 103 + + + + + + + + 217 + + + + + + + + 83 + + + + + + + + 81 + + + + + + + + + + + + + + + 75 + + + + + 80 + + + + + 72 + + + + + 82 + + + + + 124 + + + + + + + + 73 + + + + + 79 + + + + + 112 + + + + + 125 + + + + + + + + 126 + + + + + 205 + + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + + + + + + 216 + + + + + + + + 200 + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + + + + + + 111 + + + + + 57 + + + + + + + + + + + + 58 + + + + + 136 + + + + + 129 + + + + + 143 + + + + + 236 + + + + + 24 + + + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + + + + + + 296 + + + + + + + + + 297 + + + + + 298 + + + + + 211 + + + + + + + + 212 + + + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + + + + + + 349 + + + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + + + + + + 372 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 450 + + + + + 480 + + + 1 + + + 533 + + + 2 + + + 535 + + + 3 + + + 551 + + + 4 + + + 562 + + + 5 + + + 460 + + + + + + + + 461 + + + + + 517 + + + + + + + + 518 + + + + + 474 + + + + + + + + 475 + + + + + 527 + + + + + + + + 528 + + + + + 530 + + + + + + + + 531 + + + + + 548 + + + + + + + + 549 + + + + + 559 + + + + + + + + 560 + + + + + 519 + + + + + + + + 520 + + + + + 521 + + + + + + + + 522 + + + + + 462 + + + + + + + + 463 + + + + + 472 + + + + + + + + 473 + + + + + 523 + + + + + + + + 526 + + + + + 524 + + + + + + + + 525 + + + + + 546 + + + + + + + + 547 + + + + + 557 + + + + + + + + 558 + + + + + 589 + + + + + + + + 590 + + + + + 570 + + + + + + + + 571 + + + + + 572 + + + + + + + + 573 + + + + + 575 + + + + + + + + 576 + + + + + 578 + + + + + + + + 579 + + + + + 587 + + + + + + + + 588 + + + + + 591 + + + + + + + + 592 + + + + + 593 + + + + + + + + 594 + + + + + 615 + + + + + + + + 616 + + + + + 617 + + + + + + + + 618 + + + + + 619 + + + + + + + + 620 + + + + + 621 + + + + + + + + 622 + + + + + 623 + + + + + + + + 624 + + + + + 625 + + + + + + + + 626 + + + + + 627 + + + + + + + + 628 + + + + + 629 + + + + + + + + 630 + + + + + 631 + + + + + + + + 632 + + + + + 633 + + + + + + + + 634 + + + + + 635 + + + + + + + + 636 + + + + + 637 + + + + + + + + 638 + + + + + 639 + + + + + + + + 640 + + + + + 641 + + + + + + + + 642 + + + + + + + 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 + {357.5, 439} + com.apple.InterfaceBuilder.CocoaPlugin + {{303, 221}, {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 + + IBUserDefinedRuntimeAttributesPlaceholderName + + IBUserDefinedRuntimeAttributesPlaceholderName + + + + com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.color + backgroundColor + + 2 + MC44NTA5ODA0NjA2IDAuODUwOTgwNDYwNiAwLjg1MDk4MDQ2MDYAA + + + + + + 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 + + IBUserDefinedRuntimeAttributesPlaceholderName + + IBUserDefinedRuntimeAttributesPlaceholderName + + + + com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.color + backgroundColor + + 2 + MC44NTA5ODA0NjA2IDAuODUwOTgwNDYwNiAwLjg1MDk4MDQ2MDYAA + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBUserDefinedRuntimeAttributesPlaceholderName + + IBUserDefinedRuntimeAttributesPlaceholderName + + + + com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.color + backgroundColor + + 2 + MC44NTA5ODA0NjA2IDAuODUwOTgwNDYwNiAwLjg1MDk4MDQ2MDYAA + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBUserDefinedRuntimeAttributesPlaceholderName + + IBUserDefinedRuntimeAttributesPlaceholderName + + + + com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.color + backgroundColor + + 2 + MC44NTA5ODA0NjA2IDAuODUwOTgwNDYwNiAwLjg1MDk4MDQ2MDYAA + + + + + + 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 + + + + + + 645 + + + 0 + IBCocoaFramework + NO + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + {12, 12} + {10, 2} + + + diff --git a/Tests/Manual/CPTextFieldMultiline/index-debug.html b/Tests/Manual/CPTextFieldMultiline/index-debug.html new file mode 100644 index 000000000..7a4693877 --- /dev/null +++ b/Tests/Manual/CPTextFieldMultiline/index-debug.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + CPTextFielMultine + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/CPTextFieldMultiline/index.html b/Tests/Manual/CPTextFieldMultiline/index.html new file mode 100644 index 000000000..cb15b05a5 --- /dev/null +++ b/Tests/Manual/CPTextFieldMultiline/index.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + CPTextFielMultine + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/CPTextFieldMultiline/main.j b/Tests/Manual/CPTextFieldMultiline/main.j new file mode 100644 index 000000000..48db81b12 --- /dev/null +++ b/Tests/Manual/CPTextFieldMultiline/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPTextFielMultine + * + * Created by You on November 12, 2014. + * Copyright 2014, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} From e2020fa7f2dfda58eba1118482a271ec82a596f5 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Thu, 13 Nov 2014 00:17:29 -0800 Subject: [PATCH 22/26] Add CPAltEnterTextAreaFeature checking. FF doesn't add a cariage return on textarea when doing alt+enter --- AppKit/CPCompatibility.j | 4 ++++ AppKit/CPTextField.j | 5 +---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/AppKit/CPCompatibility.j b/AppKit/CPCompatibility.j index c471c1408..623249cd2 100644 --- a/AppKit/CPCompatibility.j +++ b/AppKit/CPCompatibility.j @@ -78,6 +78,8 @@ CPInputOnInputEventFeature = 30; CPFileAPIFeature = 31; +CPAltEnterTextAreaFeature = 32; + /* @@ -100,6 +102,7 @@ var USER_AGENT = "", // default these features to true PLATFORM_FEATURES[CPInputTypeCanBeChangedFeature] = YES; PLATFORM_FEATURES[CPInputSetFontOutsideOfDOM] = YES; +PLATFORM_FEATURES[CPAltEnterTextAreaFeature] = YES; if (typeof window !== "undefined" && typeof window.navigator !== "undefined") USER_AGENT = window.navigator.userAgent; @@ -208,6 +211,7 @@ else if (USER_AGENT.indexOf("Gecko") !== -1) // Must follow KHTML check. // Some day this might be fixed and should be version prefixed. No known fixed version yet. PLATFORM_FEATURES[CPInput1PxLeftPadding] = YES; + PLATFORM_FEATURES[CPAltEnterTextAreaFeature] = NO; // This was supposed to be added in Firefox 22, but when testing with the latest beta as of 2013-06-14 // it does not seem to work. It seems to exhibit the CPJavaScriptPasteRequiresEditableTarget problem, // and in addition doesn't seem to work with our native copy code either. diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index 63ea80fe2..4b5f1dff6 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -1079,9 +1079,6 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [self _didEdit]; } - console.error("newValue : >" + newValue + "<") - console.error("_stringValue : >" + _stringValue + "<") - if ([self _valueIsValid:_stringValue]) { // If _isEditing == YES then the target action can also be called via @@ -1129,7 +1126,7 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); // we don't need to do this in case of textarea // or we will end up with 2 carriage returns - if (aCharacter != CPNewlineCharacter || element.nodeName.toUpperCase() != "TEXTAREA") + if (aCharacter != CPNewlineCharacter || element.nodeName.toUpperCase() != "TEXTAREA" || !CPFeatureIsCompatible(CPAltEnterTextAreaFeature)) element.value = [element.value stringByReplacingCharactersInRange:[self selectedRange] withString:aCharacter]; [self _setStringValue:element.value]; From a5283a26abc850a591b2990845412e41db684ff3 Mon Sep 17 00:00:00 2001 From: Christophe Serafin Date: Fri, 14 Nov 2014 13:49:33 -0800 Subject: [PATCH 23/26] Fixed: Enable CPTextField to have a specific height When setting controlSize, CPTextfield height was forced to min-size height. Now we check that the frame size is between the min and the max size. It allows to constrain a CPControl to have a fixed height by specifying a min-size equivalent to the maxsize. In CPTextField case, we only have a min-size which enable us to have a specific size. Changes has been made in Aristo2 only. --- AppKit/CPControl.j | 12 +++++++++++- AppKit/CPTextField.j | 2 +- AppKit/Themes/Aristo2/ThemeDescriptors.j | 4 ++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/AppKit/CPControl.j b/AppKit/CPControl.j index c2b1083ce..0c5836764 100644 --- a/AppKit/CPControl.j +++ b/AppKit/CPControl.j @@ -260,10 +260,20 @@ var CPControlBlackColor = [CPColor blackColor]; maxSize = [self currentValueForThemeAttribute:@"max-size"]; if (minSize.width > 0) + { frameSize.width = MAX(minSize.width, frameSize.width); + if (maxSize.width > 0) + frameSize.width = MIN(maxSize.width, frameSize.width); + } + if (minSize.height > 0) - frameSize.height = minSize.height; + { + frameSize.height = MAX(minSize.height, frameSize.height); + + if (maxSize.height > 0) + frameSize.height = MIN(maxSize.height, frameSize.height); + } [self setFrameSize:frameSize]; } diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index fc3d833d9..3bdb49c80 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -240,8 +240,8 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [self _sizeToControlSize]; } -#pragma mark - +#pragma mark - #if PLATFORM(DOM) - (DOMElement)_inputElement diff --git a/AppKit/Themes/Aristo2/ThemeDescriptors.j b/AppKit/Themes/Aristo2/ThemeDescriptors.j index f5f11c7f5..bf72661f3 100644 --- a/AppKit/Themes/Aristo2/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo2/ThemeDescriptors.j @@ -374,7 +374,7 @@ var themedButtonValues = nil, [@"font", [CPFont boldSystemFontOfSize:11.0]], [@"min-size", CGSizeMake(32.0, 20.0), CPThemeStateControlSizeSmall], - [@"max-size", CGSizeMake(1.0, 20.0), CPThemeStateControlSizeSmall], + [@"max-size", CGSizeMake(-1.0, 20.0), CPThemeStateControlSizeSmall], [@"nib2cib-adjustment-frame", CGRectMake(3.0, 4.0, -6.0, 0.0), CPThemeStateControlSizeSmall], // CPThemeStateControlSizeMini @@ -386,7 +386,7 @@ var themedButtonValues = nil, [@"min-size", CGSizeMake(32.0, 16.0), CPThemeStateControlSizeMini], [@"max-size", CGSizeMake(-1.0, 16.0), CPThemeStateControlSizeMini], - [@"nib2cib-adjustment-frame", CGRectMake(1.0, 10.0, -3.0, 0.0), CPThemeStateControlSizeMini] + [@"nib2cib-adjustment-frame", CGRectMake(1.0, 10.0, -3.0, 0.0), CPThemeStateControlSizeMini] ]; [self registerThemeValues:themeValues forView:button]; From d30659c37c9632f5039353eea0e913a8f8799d0e Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Wed, 19 Nov 2014 14:27:19 -0800 Subject: [PATCH 24/26] Fixed: CPMenu crash when opening a menu with items and then opening the menu without items Previously, when opening a menu with items and then opening another menu without items, Cappuccino simply crashed. Now it works ! --- AppKit/CPMenu/_CPMenuWindow.j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AppKit/CPMenu/_CPMenuWindow.j b/AppKit/CPMenu/_CPMenuWindow.j index ddf53a7dd..571e3d670 100644 --- a/AppKit/CPMenu/_CPMenuWindow.j +++ b/AppKit/CPMenu/_CPMenuWindow.j @@ -410,7 +410,7 @@ _CPMenuWindowAttachedMenuBackgroundStyle = 2; { // Don't return indexes of items that aren't visible. if (!CGRectContainsPoint([_menuClipView bounds], [_menuClipView convertPoint:aPoint fromView:nil])) - return NO; + return CPNotFound; return [_menuView itemIndexAtPoint:[_menuView convertPoint:aPoint fromView:nil]]; } From fe25dbd87296402d921c7c2cbf8c2de2ed583e8a Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Thu, 20 Nov 2014 15:21:07 -0800 Subject: [PATCH 25/26] New: added method addObserverForName:object::usingBlock: in CPNotificationCenter Previously, the method addObserverForName:object::usingBlock: didn't exist in Cappuccino. Now it does. To observe, you need to use the method - (id )addObserverForName:(CPString)aNotificationName object:(id)anObject usingBlock:(Function)block To unregister observations, you pass the object returned by this method to removeObserver:. You must invoke removeObserver: or removeObserver:name:object:. Test /Tests/Foundation/CPNotificationCenterTest.j Fixed #2259 --- Foundation/CPNotificationCenter.j | 68 ++++++++++++++++++--- Tests/Foundation/CPNotificationCenterTest.j | 45 ++++++++++++++ 2 files changed, 106 insertions(+), 7 deletions(-) diff --git a/Foundation/CPNotificationCenter.j b/Foundation/CPNotificationCenter.j index 99ab18183..0d880276e 100644 --- a/Foundation/CPNotificationCenter.j +++ b/Foundation/CPNotificationCenter.j @@ -68,7 +68,8 @@ var CPNotificationDefaultCenter = nil; _namedRegistries = @{}; _unnamedRegistry = [[_CPNotificationRegistry alloc] init]; } - return self; + + return self; } /*! @@ -81,9 +82,35 @@ var CPNotificationDefaultCenter = nil; */ - (void)addObserver:(id)anObserver selector:(SEL)aSelector name:(CPString)aNotificationName object:(id)anObject { - var registry, + var registry = [self _registryForNotificationName:aNotificationName], observer = [[_CPNotificationObserver alloc] initWithObserver:anObserver selector:aSelector]; + [registry addObserver:observer object:anObject]; +} + +/*! + Adds an entry to the receiver’s dispatch table with a block, and optional criteria: notification name and sender. + @param aNotificationName the name of the notification the observer wants to watch + @param anObject the object in the notification the observer wants to watch + @param block the block to be executed when the notification is received. +*/ +- (id )addObserverForName:(CPString)aNotificationName object:(id)anObject usingBlock:(Function)block +{ + var registry = [self _registryForNotificationName:aNotificationName], + observer = [[_CPNotificationObserver alloc] initWithBlock:block]; + + [registry addObserver:observer object:anObject]; + + return observer; +} + +/*! + @ignore +*/ +- (_CPNotificationRegistry)_registryForNotificationName:(CPString)aNotificationName +{ + var registry; + if (aNotificationName == nil) registry = _unnamedRegistry; else if (!(registry = [_namedRegistries objectForKey:aNotificationName])) @@ -92,7 +119,7 @@ var CPNotificationDefaultCenter = nil; [_namedRegistries setObject:registry forKey:aNotificationName]; } - [registry addObserver:observer object:anObject]; + return registry; } /*! @@ -129,7 +156,10 @@ var CPNotificationDefaultCenter = nil; [_unnamedRegistry removeObserver:anObserver object:anObject]; } else + { [[_namedRegistries objectForKey:aNotificationName] removeObserver:anObserver object:anObject]; + } + } /*! @@ -233,7 +263,8 @@ var _CPNotificationCenterPostNotification = function(/* CPNotificationCenter */ observersEnumerator = [observers objectEnumerator]; while ((observer = [observersEnumerator nextObject]) !== nil) - if ([observer observer] == anObserver) + if ([observer observer] == anObserver || + ([observer block] && [anObserver respondsToSelector:@selector(block)] && [observer block] == [anObserver block])) [observers removeObject:observer]; if (![observers count]) @@ -248,7 +279,8 @@ var _CPNotificationCenterPostNotification = function(/* CPNotificationCenter */ observersEnumerator = [observers objectEnumerator]; while ((observer = [observersEnumerator nextObject]) !== nil) - if ([observer observer] == anObserver) + if ([observer observer] == anObserver || + ([observer block] && [anObserver respondsToSelector:@selector(block)] && [observer block] == [anObserver block])) [observers removeObject:observer]; if (![observers count]) @@ -312,8 +344,9 @@ var _CPNotificationCenterPostNotification = function(/* CPNotificationCenter */ /* @ignore */ @implementation _CPNotificationObserver : CPObject { - id _observer; - SEL _selector; + id _observer; + Function _block; + SEL _selector; } - (id)initWithObserver:(id)anObserver selector:(SEL)aSelector @@ -327,13 +360,34 @@ var _CPNotificationCenterPostNotification = function(/* CPNotificationCenter */ return self; } +- (id)initWithBlock:(Function)aBlock +{ + if (self) + { + _block = aBlock; + } + + return self; +} + - (id)observer { return _observer; } +- (id)block +{ + return _block; +} + - (void)postNotification:(CPNotification)aNotification { + if (_block) + { + _block(aNotification); + return; + } + [_observer performSelector:_selector withObject:aNotification]; } diff --git a/Tests/Foundation/CPNotificationCenterTest.j b/Tests/Foundation/CPNotificationCenterTest.j index b1f3b8bf5..e630e4064 100644 --- a/Tests/Foundation/CPNotificationCenterTest.j +++ b/Tests/Foundation/CPNotificationCenterTest.j @@ -52,6 +52,51 @@ var TestNotification = @"TestNotification"; [self assert:8 equals:notificationCount message:@"observer should not be notified"]; } +- (void)testNotifyWithBlocks +{ + var center = [CPNotificationCenter defaultCenter]; + + notificationCount = 0; + + var notificationBlock = function(notification){ + notificationCount += 1; + }; + + var observer2 = [center addObserverForName:TestNotification object:2 usingBlock:notificationBlock], + observer25 = [center addObserverForName:TestNotification object:25 usingBlock:notificationBlock]; + + [center postNotificationName:TestNotification object:self]; + [self assert:0 equals:notificationCount message:@"observer should only be notified for object '2'"]; + + [center postNotificationName:TestNotification object:2]; + [self assert:1 equals:notificationCount message:@"observer should be notified for object '2'"]; + + var observerNil = [center addObserverForName:TestNotification object:nil usingBlock:notificationBlock]; + + [center postNotificationName:TestNotification object:2]; + [self assert:3 equals:notificationCount message:@"observer should be notified for object '2' and for any object"]; + + [center removeObserver:observer2 name:TestNotification object:2]; + [center postNotificationName:TestNotification object:2]; + [self assert:4 equals:notificationCount message:@"observer should be notified only for any object"]; + + // At this point we have TestNofication:nil observer and a TestNotification:25 observer. + observer2 = [center addObserverForName:nil object:2 usingBlock:notificationBlock]; + + [center postNotificationName:TestNotification object:2]; + [self assert:6 equals:notificationCount message:@"observer should be notified for TestNofication and for object '2' (TestNotification)"]; + [center postNotificationName:@"RandomNotification" object:2]; + [self assert:7 equals:notificationCount message:@"observer should be notified for object '2' (RandomNotification)"]; + + [center removeObserver:observer2]; + [center removeObserver:observer25]; + [center removeObserver:observerNil]; + [center postNotificationName:TestNotification object:nil]; + [center postNotificationName:TestNotification object:2]; + [center postNotificationName:TestNotification object:25]; + [self assert:7 equals:notificationCount message:@"observer should not be notified"]; +} + - (void)testAddObserversDuringNotification { var center = [CPNotificationCenter defaultCenter]; From d481d9cca5348df486203e1954822547157bd1bb Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Thu, 20 Nov 2014 23:38:53 -0800 Subject: [PATCH 26/26] Fixed: added queue to the method addObserverForName:(CPString)aNotificationName object:(id)anObject queue:(id)queue usingBlock:(Function)block --- Foundation/CPNotificationCenter.j | 6 ++---- Tests/Foundation/CPNotificationCenterTest.j | 8 ++++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Foundation/CPNotificationCenter.j b/Foundation/CPNotificationCenter.j index 0d880276e..78cd7d354 100644 --- a/Foundation/CPNotificationCenter.j +++ b/Foundation/CPNotificationCenter.j @@ -92,9 +92,10 @@ var CPNotificationDefaultCenter = nil; Adds an entry to the receiver’s dispatch table with a block, and optional criteria: notification name and sender. @param aNotificationName the name of the notification the observer wants to watch @param anObject the object in the notification the observer wants to watch + @param queue is ignored for the moment @param block the block to be executed when the notification is received. */ -- (id )addObserverForName:(CPString)aNotificationName object:(id)anObject usingBlock:(Function)block +- (id )addObserverForName:(CPString)aNotificationName object:(id)anObject queue:(id)queue usingBlock:(Function)block { var registry = [self _registryForNotificationName:aNotificationName], observer = [[_CPNotificationObserver alloc] initWithBlock:block]; @@ -156,10 +157,7 @@ var CPNotificationDefaultCenter = nil; [_unnamedRegistry removeObserver:anObserver object:anObject]; } else - { [[_namedRegistries objectForKey:aNotificationName] removeObserver:anObserver object:anObject]; - } - } /*! diff --git a/Tests/Foundation/CPNotificationCenterTest.j b/Tests/Foundation/CPNotificationCenterTest.j index e630e4064..47aab1e0f 100644 --- a/Tests/Foundation/CPNotificationCenterTest.j +++ b/Tests/Foundation/CPNotificationCenterTest.j @@ -62,8 +62,8 @@ var TestNotification = @"TestNotification"; notificationCount += 1; }; - var observer2 = [center addObserverForName:TestNotification object:2 usingBlock:notificationBlock], - observer25 = [center addObserverForName:TestNotification object:25 usingBlock:notificationBlock]; + var observer2 = [center addObserverForName:TestNotification object:2 queue:nil usingBlock:notificationBlock], + observer25 = [center addObserverForName:TestNotification object:25 queue:nil usingBlock:notificationBlock]; [center postNotificationName:TestNotification object:self]; [self assert:0 equals:notificationCount message:@"observer should only be notified for object '2'"]; @@ -71,7 +71,7 @@ var TestNotification = @"TestNotification"; [center postNotificationName:TestNotification object:2]; [self assert:1 equals:notificationCount message:@"observer should be notified for object '2'"]; - var observerNil = [center addObserverForName:TestNotification object:nil usingBlock:notificationBlock]; + var observerNil = [center addObserverForName:TestNotification object:nil queue:nil usingBlock:notificationBlock]; [center postNotificationName:TestNotification object:2]; [self assert:3 equals:notificationCount message:@"observer should be notified for object '2' and for any object"]; @@ -81,7 +81,7 @@ var TestNotification = @"TestNotification"; [self assert:4 equals:notificationCount message:@"observer should be notified only for any object"]; // At this point we have TestNofication:nil observer and a TestNotification:25 observer. - observer2 = [center addObserverForName:nil object:2 usingBlock:notificationBlock]; + observer2 = [center addObserverForName:nil object:2 queue:nil usingBlock:notificationBlock]; [center postNotificationName:TestNotification object:2]; [self assert:6 equals:notificationCount message:@"observer should be notified for TestNofication and for object '2' (TestNotification)"];