From b7ff643a344bf723d1f6eea9ca5c7de97b406a1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Wallstro=CC=88m?= Date: Wed, 27 Feb 2013 22:26:52 +0100 Subject: [PATCH 01/78] Fixed: when clicking and dragging inside a menu, mouseEntered and mouseExited was mixed up for custom views. --- AppKit/CPMenu/_CPMenuManager.j | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AppKit/CPMenu/_CPMenuManager.j b/AppKit/CPMenu/_CPMenuManager.j index 45c8ac321..4093c76a0 100644 --- a/AppKit/CPMenu/_CPMenuManager.j +++ b/AppKit/CPMenu/_CPMenuManager.j @@ -221,9 +221,9 @@ var STICKY_TIME_INTERVAL = 0.4, if (_lastMouseOverMenuView != mouseOverMenuView) { - [mouseOverMenuView mouseExited:anEvent]; + [_lastMouseOverMenuView mouseExited:anEvent]; // FIXME: Possibly multiple of these? - [_lastMouseOverMenuView mouseEntered:anEvent]; + [mouseOverMenuView mouseEntered:anEvent]; _lastMouseOverMenuView = mouseOverMenuView; } From 2bf244209637608b00adf36780d3f1fbd2f9901c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Wallstro=CC=88m?= Date: Sun, 10 Mar 2013 17:38:08 +0100 Subject: [PATCH 02/78] Fixed: Using keyboard navigation in empty CPCollectionView threw exception. --- AppKit/CPCollectionView.j | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/AppKit/CPCollectionView.j b/AppKit/CPCollectionView.j index caa414c96..98a2ea69b 100644 --- a/AppKit/CPCollectionView.j +++ b/AppKit/CPCollectionView.j @@ -1217,7 +1217,10 @@ Not supported. Use -collectionView:dataForItemsAtIndexes:fortype: - (void)_modifySelectionWithNewIndex:(int)anIndex direction:(int)aDirection expand:(BOOL)shouldExpand { - anIndex = MIN(MAX(anIndex, 0), [[self items] count] - 1); + var count = [[self items] count]; + if (count === 0) + return; + anIndex = MIN(MAX(anIndex, 0), count - 1); if (_allowsMultipleSelection && shouldExpand) { From abadc6298d6625b13e2dc5db575a2f2dff3a7750 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sun, 10 Mar 2013 22:29:48 +0000 Subject: [PATCH 03/78] Test: refactor token field test to not rely on ivars. This will make it easier to extend the test with token fields in windows or popovers. --- Tests/Manual/CPTokenFieldTest/AppController.j | 141 ++++++++++-------- 1 file changed, 79 insertions(+), 62 deletions(-) diff --git a/Tests/Manual/CPTokenFieldTest/AppController.j b/Tests/Manual/CPTokenFieldTest/AppController.j index 55050d116..fdd830477 100644 --- a/Tests/Manual/CPTokenFieldTest/AppController.j +++ b/Tests/Manual/CPTokenFieldTest/AppController.j @@ -12,18 +12,11 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad @implementation AppController : CPObject { - CPTokenField tokenFieldD; - - CPArray allPersons; - CPButton manipulateTokenInsertionButton; } -- (void)applicationDidFinishLaunching:(CPNotification)aNotification ++ (void)createTokenfieldContents:(CPView)contentView withDelegate:(id)aDelegate { - var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask], - contentView = [theWindow contentView], - - tokenFieldA = [[CPTokenField alloc] initWithFrame:CGRectMake(15, 40, 500, 30)], + var tokenFieldA = [[CPTokenField alloc] initWithFrame:CGRectMake(15, 40, 500, 30)], label = [[CPTextField alloc] initWithFrame:CGRectMake(15, 15, 500, 24)]; [label setStringValue:"This token field has no auto suggestions and uses space to separate tokens."]; @@ -47,16 +40,17 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad [tokenFieldB setPlaceholderString:"Edit me!"]; [tokenFieldB setObjectValue:["Missouri", "California"]]; - [tokenFieldB setDelegate:self]; + [tokenFieldB setDelegate:aDelegate]; [tokenFieldB setAction:@selector(tokenFieldAction:)]; - [tokenFieldB setTarget:self]; + [tokenFieldB setTarget:aDelegate]; [contentView addSubview:tokenFieldB]; - manipulateTokenInsertionButton = [CPCheckBox checkBoxWithTitle:"Token transformations"]; + var manipulateTokenInsertionButton = [CPCheckBox checkBoxWithTitle:"Token transformations"]; [manipulateTokenInsertionButton setFrame:CGRectMake(525, 110, 200, 50)]; [contentView addSubview:manipulateTokenInsertionButton]; + tokenFieldB.manipulateTokenInsertionButton = manipulateTokenInsertionButton; var tokenFieldC = [[CPTokenField alloc] initWithFrame:CGRectMake(15, 170, 500, 30)], labelC = [[CPTextField alloc] initWithFrame:CGRectMake(15, 150, 500, 24)]; @@ -68,16 +62,19 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad [tokenFieldC setPlaceholderString:"Edit me!"]; [tokenFieldC setObjectValue:['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado']]; - [tokenFieldC setDelegate:self]; + [tokenFieldC setDelegate:aDelegate]; [contentView addSubview:tokenFieldC]; [tokenFieldC setSendsActionOnEndEditing:YES]; [tokenFieldC setAction:@selector(tokenFieldAction:)]; - [tokenFieldC setTarget:self]; + [tokenFieldC setTarget:aDelegate]; - tokenFieldD = [[CPTokenField alloc] initWithFrame:CGRectMake(15, 230, 500, 30)], - labelD = [[CPTextField alloc] initWithFrame:CGRectMake(15, 210, 500, 24)]; + var tokenFieldD = [[CPTokenField alloc] initWithFrame:CGRectMake(15, 230, 500, 30)], + labelD = [[CPTextField alloc] initWithFrame:CGRectMake(15, 210, 500, 24)], + tokenFieldDController = [TokenFieldOptionsController new]; + + tokenFieldDController.tokenField = tokenFieldD; [labelD setStringValue:"This token field contains represented objects."]; [contentView addSubview:labelD]; @@ -85,7 +82,7 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad [tokenFieldD setEditable:YES]; // Delegate must be set before objectValue - [tokenFieldD setDelegate:self]; + [tokenFieldD setDelegate:aDelegate]; var tokenFieldDEditable = [CPCheckBox checkBoxWithTitle:"Editable"]; [tokenFieldDEditable sizeToFit]; @@ -96,70 +93,47 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad var tokenFieldDMenus = [CPCheckBox checkBoxWithTitle:"Menus"]; [tokenFieldDMenus sizeToFit]; [tokenFieldDMenus setFrameOrigin:CGPointMake(CGRectGetMaxX([tokenFieldDEditable frame]) + 5, 5 + CGRectGetMinY([tokenFieldD frame]))]; - [tokenFieldDMenus bind:CPValueBinding toObject:self withKeyPath:@"tokenFieldDHasMenus" options:nil]; + [tokenFieldDMenus bind:CPValueBinding toObject:tokenFieldDController withKeyPath:@"tokenFieldHasMenus" options:nil]; [contentView addSubview:tokenFieldDMenus]; var tokenFieldDClose = [CPCheckBox checkBoxWithTitle:"Close Buttons"]; [tokenFieldDClose sizeToFit]; [tokenFieldDClose setFrameOrigin:CGPointMake(CGRectGetMaxX([tokenFieldDMenus frame]) + 5, 5 + CGRectGetMinY([tokenFieldD frame]))]; - [tokenFieldDClose bind:CPValueBinding toObject:self withKeyPath:@"tokenFieldDHasCloseButtons" options:nil]; + [tokenFieldDClose bind:CPValueBinding toObject:tokenFieldDController withKeyPath:@"tokenFieldHasCloseButtons" options:nil]; [contentView addSubview:tokenFieldDClose]; - allPersons = [ + tokenFieldD._testCompletions = [ [Person personWithFirstName:@"Luc" lastName:@"Vauvillier"], [Person personWithFirstName:@"John" lastName:@"Doe"], [Person personWithFirstName:@"Amélie" lastName:@"Poulain"], [Person personWithFirstName:@"Jean" lastName:@"Valjean"] ]; - [tokenFieldD setObjectValue:[allPersons copy]]; + [tokenFieldD setObjectValue:[tokenFieldD._testCompletions copy]]; + + var tokenFieldDEditable = [CPCheckBox checkBoxWithTitle:"Editable"]; + [tokenFieldDEditable sizeToFit]; + [tokenFieldDEditable setFrameOrigin:CGPointMake(525, 5 + CGRectGetMinY([tokenFieldD frame]))]; + [tokenFieldDEditable bind:CPValueBinding toObject:tokenFieldD withKeyPath:@"editable" options:nil]; + [contentView addSubview:tokenFieldDEditable]; [contentView addSubview:tokenFieldD]; var button = [[CPButton alloc] initWithFrame:CGRectMake(15, 270, 0, 0)]; [button setTitle:"Get Object Values"]; [button sizeToFit]; - [button setTarget:self]; + [button setTarget:tokenFieldDController]; [button setAction:@selector(getObjectValues:)]; [contentView addSubview:button]; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask], + contentView = [theWindow contentView]; + + [[self class] createTokenfieldContents:contentView withDelegate:self]; [theWindow orderFront:self]; - -} - -- (void)setTokenFieldDHasMenus:(BOOL)shouldHaveMenus -{ - if (shouldHaveMenus) - { - [[tokenFieldD objectValue] enumerateObjectsUsingBlock:function(aPerson) - { - var menu = [CPMenu new]; - for (var i = 0; i < 3; i++) - [menu addItem:[[CPMenuItem alloc] initWithTitle:[CPString stringWithFormat:@"%@ Item %i", aPerson, i] action:nil keyEquivalent:nil]]; - aPerson.menu = menu; - }]; - } - else - [[tokenFieldD objectValue] makeObjectsPerformSelector:@selector(setMenu:) withObject:nil]; -} - -- (BOOL)tokenFieldDHasMenus -{ - return !![[[tokenFieldD objectValue] firstObject] menu]; -} - -- (void)setTokenFieldDHasCloseButtons:(BOOL)shouldHaveCloseButtons -{ - [tokenFieldD setButtonType:shouldHaveCloseButtons ? CPTokenFieldDeleteButtonType : CPTokenFieldDisclosureButtonType]; -} - -- (BOOL)tokenFieldDHasCloseButtons -{ - return !![tokenFieldD buttonType] === CPTokenFieldDeleteButtonType; -} - -- (void)getObjectValues:(id)sender -{ - alert([tokenFieldD objectValue]); } - (CPArray)tokenField:(CPTokenField)aTokenField completionsForSubstring:(CPString)substring indexOfToken:(int)tokenIndex indexOfSelectedItem:(int)selectedIndex @@ -170,8 +144,7 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad if (!substring) return r; - - if (aTokenField !== tokenFieldD) + if (!aTokenField['_testCompletions']) { for (var i = 0; i < STATES.length; i++) if (STATES[i].toLowerCase().indexOf(substring.toLowerCase()) == 0) @@ -179,6 +152,7 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad } else { + var allPersons = aTokenField._testCompletions; for (var i = 0; i < allPersons.length; i++) if ([allPersons[i] fullname].toLowerCase().indexOf(substring.toLowerCase()) == 0) r.push(allPersons[i]); @@ -208,7 +182,7 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad // Texas -> Utah, Michigan -> Michigan & Arkansas, Washington -> nil - if ([manipulateTokenInsertionButton intValue]) + if (tokenField['manipulateTokenInsertionButton'] && [tokenField['manipulateTokenInsertionButton'] intValue]) { if (tokens[0] == "Texas") return ["Utah"]; @@ -233,6 +207,49 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad @end +@implementation TokenFieldOptionsController : CPObject +{ + CPTokenField tokenField; +} + +- (BOOL)tokenFieldHasMenus +{ + return !![[[tokenField objectValue] firstObject] menu]; +} + +- (void)setTokenFieldHasCloseButtons:(BOOL)shouldHaveCloseButtons +{ + [tokenField setButtonType:shouldHaveCloseButtons ? CPTokenFieldDeleteButtonType : CPTokenFieldDisclosureButtonType]; +} + +- (BOOL)tokenFieldHasCloseButtons +{ + return !![tokenField buttonType] === CPTokenFieldDeleteButtonType; +} + +- (void)setTokenFieldHasMenus:(BOOL)shouldHaveMenus +{ + if (shouldHaveMenus) + { + [[tokenField objectValue] enumerateObjectsUsingBlock:function(aPerson) + { + var menu = [CPMenu new]; + for (var i = 0; i < 3; i++) + [menu addItem:[[CPMenuItem alloc] initWithTitle:[CPString stringWithFormat:@"%@ Item %i", aPerson, i] action:nil keyEquivalent:nil]]; + aPerson.menu = menu; + }]; + } + else + [[tokenField objectValue] makeObjectsPerformSelector:@selector(setMenu:) withObject:nil]; +} + +- (void)getObjectValues:(id)sender +{ + alert([tokenField objectValue]); +} + +@end + // A sample of a custom Object @implementation Person : CPObject From ff15f11927d4573d19abd4413ca184680f3df555 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sun, 10 Mar 2013 22:48:26 +0000 Subject: [PATCH 04/78] Fixed: transient popover windows would close on mouse interaction with certain controls. Without this fix, a transient popover would close if the autocomplete menu of a token field contained in it was clicked. This happened because the popover considered the click to be on a different window. Although not tested, it's likely the same thing would happen if the menu of a combo pop or a pop up button was clicked. This fix makes it so that any child window of a popover can be clicked without the popover closing. --- AppKit/CPWindow/CPWindow.j | 16 ++++++++++++++++ AppKit/_CPPopoverWindow.j | 4 +++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index c1f8a677e..48ee6c6b8 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -2453,6 +2453,22 @@ CPTexturedBackgroundWindowMask return _parentWindow; } +/*! + Return YES if anAncestor is the parent or a higher ancestor of the receiver. + + @ignore +*/ +- (BOOL)_hasAncestorWindow:(CPWindow)anAncestor +{ + if (!_parentWindow || !anAncestor) + return NO; + + if (anAncestor === _parentWindow) + return YES; + + return [_parentWindow _hasAncestorWindow:anAncestor]; +} + - (CPWindow)setParentWindow:(CPWindow)parentWindow { _parentWindow = parentWindow; diff --git a/AppKit/_CPPopoverWindow.j b/AppKit/_CPPopoverWindow.j index d3e2b16e9..914af3b3d 100644 --- a/AppKit/_CPPopoverWindow.j +++ b/AppKit/_CPPopoverWindow.j @@ -569,7 +569,9 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, var mouseWindow = [anEvent window]; - if (mouseWindow === self) + // Consider clicks in child windows to be "inside". This keeps a transient popover from + // closing if e.g. the window containing the menu of a token field is clicked. + if (mouseWindow === self || [mouseWindow _hasAncestorWindow:self]) [self _trapNextMouseDown]; else { From 09ea8c32415e4947343dd16ad43b898f3bf881d2 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sun, 10 Mar 2013 22:49:09 +0000 Subject: [PATCH 05/78] Test: manual test for most token field behaviour when in a popover. --- Tests/Manual/CPTokenFieldTest/AppController.j | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Tests/Manual/CPTokenFieldTest/AppController.j b/Tests/Manual/CPTokenFieldTest/AppController.j index fdd830477..0b226e2d6 100644 --- a/Tests/Manual/CPTokenFieldTest/AppController.j +++ b/Tests/Manual/CPTokenFieldTest/AppController.j @@ -133,9 +133,29 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad [[self class] createTokenfieldContents:contentView withDelegate:self]; + var popoverButton = [[CPButton alloc] initWithFrame:CGRectMake(15, 310, 0, 0)]; + [popoverButton setTitle:"Token Field in a Popover"]; + [popoverButton sizeToFit]; + [popoverButton setTarget:self]; + [popoverButton setAction:@selector(openPopover:)]; + [contentView addSubview:popoverButton]; + [theWindow orderFront:self]; } +- (@action)openPopover:(id)sender +{ + var aPopover = [CPPopover new], + controller = [CPViewController new]; + + [aPopover setContentViewController:controller]; + [aPopover setContentSize:CGSizeMake(800, 315)]; + [[self class] createTokenfieldContents:[controller view] withDelegate:self]; + [aPopover setAnimates:YES]; + [aPopover showRelativeToRect:[sender bounds] ofView:sender preferredEdge:CPMaxXEdge]; + [aPopover setBehavior:CPPopoverBehaviorTransient]; +} + - (CPArray)tokenField:(CPTokenField)aTokenField completionsForSubstring:(CPString)substring indexOfToken:(int)tokenIndex indexOfSelectedItem:(int)selectedIndex { var r = []; From 969f56911aa988fe1abc28e646549f28e88dff0b Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Mon, 11 Mar 2013 12:58:36 +0000 Subject: [PATCH 06/78] Test: popovers in attached sheet 2 test. The popover test now added exposes a bug: 1. Click Modal Window to open a modal window. 2. Click Popover to open a popover. 3. Click on the first window. It should not be possible to interact with this window since a modal window is open, but a bug in the modal event handling when transient popovers are open will allow the event to incorrectly pass through to the window. AttachedSheet2 is turning into a complete window/modality/sheets/alerts/popover interaction test. --- .../AttachedSheet2/Resources/Window.cib | 2 +- .../AttachedSheet2/Resources/Window.xib | 68 +++++++++++++++++-- .../AttachedSheet2/SheetWindowController.j | 22 ++++++ 3 files changed, 87 insertions(+), 5 deletions(-) diff --git a/Tests/Manual/AttachedSheet2/Resources/Window.cib b/Tests/Manual/AttachedSheet2/Resources/Window.cib index 27a095ed4..66c6ffe0b 100644 --- a/Tests/Manual/AttachedSheet2/Resources/Window.cib +++ b/Tests/Manual/AttachedSheet2/Resources/Window.cib @@ -1 +1 @@ -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;19E;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;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;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;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;1;0E;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;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;68E;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;2;69E;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;2;70E;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;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;61E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;71E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;50E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;72E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;60E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;73E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;74E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;53E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;75E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;59E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;76E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;52E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;77E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;57E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;78E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;58E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;79E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;80E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;49E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;81E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;84E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;39E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;39E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;62E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;86E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;64E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;87E;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;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;66E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;62E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;43E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;90E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;45E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;91E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;44E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;94E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;95E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;96E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;2;97E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;98E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;2;99E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;100E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;101E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;41E;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;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;103E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;103E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;104E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;106E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;107E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;6;$afontD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;101E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;117E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;102E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;119E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;107E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;6;$afontD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;120E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;117E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;102E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;121E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;107E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;6;$afontD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;122E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;117E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;102E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;123E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;107E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;6;$afontD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;124E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;117E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;102E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;125E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;107E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;6;$afontD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;126E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;117E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;102E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;132E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;133E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;134E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;132E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;135E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;136E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;137E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;132E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;138E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;139E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;140E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;132E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;141E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;142E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;143E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;144E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;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;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;145E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;146E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;147E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;148E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;118E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;149E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;150E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;116E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;116E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;116E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;152E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;102E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;114E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;143E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;154E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;155E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;143E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;156E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;157E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;143E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;158E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;159E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;160E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;161E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;6;$afontD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;162E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;117E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;102E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;163E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;164E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;161E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;6;$afontD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;165E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;117E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;102E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;24;CPButtonKeyEquivalentKeyD;K;6;CP$UIDd;3;166E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;167E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;168E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;161E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;6;$afontD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;169E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;117E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;102E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;170E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;171E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;172E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;147E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;173E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;118E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;115E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;150E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;118E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;118E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;118E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;174E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;113E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;114E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;175E;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;2;63E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;176E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;171E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;177E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;178E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;179E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;150E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;118E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;118E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;118E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;174E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;102E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;102E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;180E;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;10;$classnameS;8;CPSliderK;8;$classesA;S;8;CPSliderS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;181E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;182E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;172E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;183E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;184E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;185E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;102E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;187E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;102E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;188E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;189E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;190E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;102E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;191E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;132E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;133E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;115E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;S;21;SheetWindowControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;15;_altCloseButtonS;19;_closableMaskButtonS;12;_closeButtonS;25;_miniaturizableMaskButtonS;22;_orderOutAfterCheckboxS;17;_otherCloseButtonS;20;_resizableMaskButtonS;17;_shadeContentViewS;18;_shadeParentWindowS;16;_shadeWindowViewS;17;_titledMaskButtonD;K;10;$classnameS;12;CPRadioGroupK;8;$classesA;S;12;CPRadioGroupS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;192E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;194E;E;S;17;_windowTypeMatrixS;6;windowS;21;initialFirstResponderS;8;delegateS;20;takeDoubleValueFrom:S;14;newModalSheet:S;10;newWindow:S;9;newSheet:S;15;newModalWindow:S;14;newAlertSheet:S;13;CPApplicationS;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1946157056S;23;{{71, 196}, {468, 455}}S;22;{{0, 0}, {2560, 1418}}d;2;15S;6;Windowd;1;0S;20;{{0, 0}, {468, 455}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;53E;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;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;64E;E;E;S;6;normalS;21;{{20, 17}, {138, 25}}S;19;{{0, 0}, {138, 25}}d;2;36S;6;buttonS;8;borderedD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;195E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;196E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;118E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;118E;E;d;1;2d;1;4S;0;F;d;2;14T;S;21;{{20, 49}, {138, 25}}S;12;Modal WindowS;21;{{20, 81}, {138, 25}}S;5;SheetS;22;{{20, 113}, {138, 25}}S;11;Modal SheetS;22;{{20, 145}, {138, 25}}S;11;Alert SheetS;23;{{193, 156}, {174, 21}}S;19;{{0, 0}, {174, 21}}S;9;check-boxS;8;selectedD;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;195E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;196E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;118E;E;d;1;1S;18;CPTitledWindowMaskS;23;{{193, 176}, {174, 21}}S;20;CPClosableWindowMaskS;23;{{192, 196}, {210, 21}}S;19;{{0, 0}, {210, 21}}S;26;CPMiniaturizableWindowMaskS;23;{{192, 216}, {180, 21}}S;19;{{0, 0}, {180, 21}}S;21;CPResizableWindowMaskS;22;{{18, 247}, {329, 21}}S;19;{{0, 0}, {329, 21}}S;25;orderOut: after endSheet:S;22;{{33, 274}, {362, 26}}S;19;{{0, 0}, {362, 26}}S;9;textfieldD;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;195E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;197E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;118E;E;S;140;It is not specified if endSheet: or orderOut: on sheet should be called first. However, cannot call orderOut: after endSheet: when chaining.d;4;3072D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;151E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;198E;E;S;22;{{18, 303}, {329, 21}}S;36;Shade Window View of Non-CIB WindowsS;22;{{18, 323}, {329, 21}}S;36;Shade Content View of Non-CIB WindowS;22;{{18, 343}, {329, 21}}S;44;Shade Parent Window on windowWillBeginSheet:S;22;{{20, 411}, {110, 25}}S;19;{{0, 0}, {110, 25}}d;1;9S;12;Chain SheetsS;22;{{387, 411}, {68, 25}}S;18;{{0, 0}, {68, 25}}S;5;CloseS;4;CgA=S;23;{{240, 411}, {135, 25}}S;19;{{0, 0}, {135, 25}}S;16;Close Parent TooS;23;{{162, 377}, {104, 29}}S;19;{{0, 0}, {104, 29}}d;2;45S;28;bezeled+editable+placeholderD;K;6;$classD;K;6;CP$UIDd;3;151E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;199E;E;S;11;CPTextFieldS;23;{{271, 377}, {104, 29}}S;10;tokenfieldS;16;bezeled+editableD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;12;CPTokenFieldS;21;{{61, 381}, {92, 21}}S;18;{{0, 0}, {92, 21}}S;6;sliderD;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;200E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;191E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;116E;E;d;2;50d;2;68d;3;100S;23;{{193, 20}, {261, 136}}S;20;{{0, 0}, {261, 136}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;194E;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;D;K;6;CP$UIDd;3;205E;E;E;d;2;12D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;206E;E;D;K;10;$classnameS;7;CPRadioK;8;$classesA;S;7;CPRadioS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;132E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;207E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;207E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;208E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;209E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;210E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;211E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;113E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;132E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;212E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;213E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;214E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;83E;E;S;28;_CPFontSystemFacePlaceholderd;2;-1d;2;10D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;132E;E;E;D;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;132E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;132E;E;E;S;9;HelveticaD;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;113E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;216E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;207E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;208E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;209E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;210E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;113E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;217E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;213E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;214E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;83E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;218E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;219E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;207E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;208E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;209E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;210E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;113E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;220E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;213E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;214E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;83E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;114E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;221E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;207E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;208E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;209E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;210E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;113E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;222E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;213E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;214E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;83E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;223E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;224E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;207E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;208E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;209E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;210E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;113E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;225E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;213E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;214E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;83E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;226E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;207E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;208E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;209E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;210E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;113E;K;16;$aimage-positionD;K;6;CP$UIDd;3;113E;K;6;$afontD;K;6;CP$UIDd;3;131E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;102E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;102E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;227E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;132E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;132E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;118E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;113E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;102E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;213E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;214E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;83E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;194E;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;D;K;6;CP$UIDd;3;205E;E;E;S;19;{{0, 0}, {261, 21}}d;2;18D;K;6;$classD;K;6;CP$UIDd;3;151E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;228E;E;S;5;radioS;17;selected+borderedS;10;CIB Windowf;3;0.5f;4;0.05f;18;0.6862745098039216S;20;{{0, 23}, {261, 21}}S;25;CPHUDBackgroundWindowMaskd;1;3S;20;{{0, 46}, {261, 21}}S;22;CPBorderlessWindowMaskS;20;{{0, 69}, {261, 21}}S;30;CPTexturedBackgroundWindowMaskd;1;5S;20;{{0, 92}, {261, 21}}S;20;CPDocModalWindowMaskS;21;{{0, 115}, {261, 21}}S;14;CIB HUD WindowD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file +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;19E;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;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;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;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;38E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;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;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;70E;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;2;71E;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;2;72E;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;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;62E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;73E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;74E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;61E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;75E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;52E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;76E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;54E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;77E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;60E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;78E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;53E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;79E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;58E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;80E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;59E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;81E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;57E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;82E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;50E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;83E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;85E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;86E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;40E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;87E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;40E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;63E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;65E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;89E;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;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;67E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;63E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;90E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;91E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;44E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;45E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;94E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;48E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;69E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;96E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;97E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;39E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;98E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;99E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;100E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;101E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;102E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;103E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;104E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;42E;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;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;106E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;106E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;109E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;110E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;104E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;120E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;105E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;122E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;110E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;123E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;120E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;105E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;124E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;110E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;125E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;120E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;105E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;110E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;127E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;120E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;105E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;110E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;129E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;120E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;105E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;49E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;130E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;131E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;132E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;133E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;135E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;136E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;49E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;137E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;131E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;132E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;133E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;135E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;138E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;49E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;139E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;140E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;132E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;133E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;135E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;141E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;49E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;142E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;143E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;132E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;133E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;135E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;144E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;49E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;145E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;146E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;132E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;147E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;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;2;55E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;148E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;149E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;150E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;151E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;121E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;152E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;119E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;119E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;119E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;154E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;105E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;117E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;49E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;155E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;146E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;132E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;156E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;49E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;157E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;146E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;132E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;158E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;49E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;159E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;146E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;132E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;160E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;161E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;162E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;163E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;164E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;120E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;105E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;165E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;166E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;163E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;167E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;120E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;105E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;24;CPButtonKeyEquivalentKeyD;K;6;CP$UIDd;3;168E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;169E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;170E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;163E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;171E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;120E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;105E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;172E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;173E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;174E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;150E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;175E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;121E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;118E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;121E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;121E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;121E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;176E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;114E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;117E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;177E;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;2;64E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;178E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;173E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;180E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;181E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;121E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;121E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;121E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;176E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;105E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;105E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;182E;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;10;$classnameS;8;CPSliderK;8;$classesA;S;8;CPSliderS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;66E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;183E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;184E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;174E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;185E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;186E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;187E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;188E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;105E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;189E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;105E;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;190E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;191E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;192E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;193E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;110E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;194E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;120E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;105E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;49E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;105E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;131E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;131E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;132E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;133E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;135E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;136E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;118E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;S;21;SheetWindowControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;15;_altCloseButtonS;19;_closableMaskButtonS;12;_closeButtonS;25;_miniaturizableMaskButtonS;22;_orderOutAfterCheckboxS;17;_otherCloseButtonS;20;_resizableMaskButtonS;17;_shadeContentViewS;18;_shadeParentWindowS;16;_shadeWindowViewS;17;_titledMaskButtonD;K;10;$classnameS;12;CPRadioGroupK;8;$classesA;S;12;CPRadioGroupS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;196E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;198E;E;S;17;_windowTypeMatrixS;6;windowS;21;initialFirstResponderS;8;delegateS;20;takeDoubleValueFrom:S;14;newModalSheet:S;10;newWindow:S;9;newSheet:S;15;newModalWindow:S;14;newAlertSheet:S;11;newPopover:S;13;CPApplicationS;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1946157056S;23;{{71, 196}, {468, 455}}S;22;{{0, 0}, {2560, 1418}}d;2;15S;6;Windowd;1;0S;20;{{0, 0}, {468, 455}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;54E;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;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;69E;E;E;S;6;normalS;21;{{20, 17}, {138, 25}}S;19;{{0, 0}, {138, 25}}d;2;36S;6;buttonS;8;borderedd;1;2D;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;115E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;199E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;200E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;121E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;119E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;121E;E;d;1;4S;0;F;d;2;14T;S;21;{{20, 49}, {138, 25}}S;12;Modal WindowS;21;{{20, 81}, {138, 25}}S;5;SheetS;22;{{20, 113}, {138, 25}}S;11;Modal SheetS;22;{{20, 145}, {138, 25}}S;11;Alert SheetS;23;{{193, 156}, {174, 21}}S;19;{{0, 0}, {174, 21}}S;9;check-boxS;8;selectedD;K;6;$classD;K;6;CP$UIDd;3;115E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;199E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;200E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;119E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;119E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;121E;E;d;1;1S;18;CPTitledWindowMaskS;23;{{193, 176}, {174, 21}}S;20;CPClosableWindowMaskS;23;{{192, 196}, {210, 21}}S;19;{{0, 0}, {210, 21}}S;26;CPMiniaturizableWindowMaskS;23;{{192, 216}, {180, 21}}S;19;{{0, 0}, {180, 21}}S;21;CPResizableWindowMaskS;22;{{18, 247}, {329, 21}}S;19;{{0, 0}, {329, 21}}S;25;orderOut: after endSheet:S;22;{{33, 274}, {362, 26}}S;19;{{0, 0}, {362, 26}}S;9;textfieldD;K;6;$classD;K;6;CP$UIDd;3;115E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;199E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;201E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;119E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;119E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;121E;E;S;140;It is not specified if endSheet: or orderOut: on sheet should be called first. However, cannot call orderOut: after endSheet: when chaining.D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;202E;E;S;22;{{18, 303}, {329, 21}}S;36;Shade Window View of Non-CIB WindowsS;22;{{18, 323}, {329, 21}}S;36;Shade Content View of Non-CIB WindowS;22;{{18, 343}, {329, 21}}S;44;Shade Parent Window on windowWillBeginSheet:S;22;{{20, 411}, {110, 25}}S;19;{{0, 0}, {110, 25}}d;1;9S;12;Chain SheetsS;22;{{387, 411}, {68, 25}}S;18;{{0, 0}, {68, 25}}S;5;CloseS;4;CgA=S;23;{{240, 411}, {135, 25}}S;19;{{0, 0}, {135, 25}}S;16;Close Parent TooS;23;{{162, 377}, {104, 29}}S;19;{{0, 0}, {104, 29}}d;2;45S;28;bezeled+editable+placeholderD;K;6;$classD;K;6;CP$UIDd;3;153E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;203E;E;S;11;CPTextFieldS;23;{{271, 377}, {104, 29}}S;10;tokenfieldS;16;bezeled+editableD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;12;CPTokenFieldS;21;{{61, 381}, {92, 21}}S;18;{{0, 0}, {92, 21}}S;6;sliderD;K;6;$classD;K;6;CP$UIDd;3;115E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;204E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;195E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;119E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;119E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;119E;E;d;2;50d;2;68d;3;100S;23;{{193, 20}, {261, 136}}S;20;{{0, 0}, {261, 136}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;E;E;S;22;{{20, 178}, {138, 25}}S;7;Popoverd;2;12D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;E;E;D;K;10;$classnameS;7;CPRadioK;8;$classesA;S;7;CPRadioS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;197E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;68E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;135E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;210E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;210E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;68E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;211E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;212E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;213E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;214E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;135E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;215E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;216E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;217E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;85E;E;S;28;_CPFontSystemFacePlaceholderd;2;-1d;2;10D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;135E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;135E;E;E;S;9;HelveticaD;K;6;$classD;K;6;CP$UIDd;3;197E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;68E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;114E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;219E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;210E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;68E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;211E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;212E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;213E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;220E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;216E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;217E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;3;197E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;68E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;221E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;222E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;210E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;68E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;211E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;212E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;213E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;223E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;216E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;217E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;3;197E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;68E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;117E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;224E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;210E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;68E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;211E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;212E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;213E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;225E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;216E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;217E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;3;197E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;68E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;226E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;227E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;210E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;68E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;211E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;212E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;213E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;228E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;216E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;217E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;3;197E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;68E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;229E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;210E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;68E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;211E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;212E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;213E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;113E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;117E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;230E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;135E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;135E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;121E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;216E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;217E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;2;85E;E;S;19;{{0, 0}, {261, 21}}d;2;18D;K;6;$classD;K;6;CP$UIDd;3;153E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;231E;E;S;5;radioS;17;selected+borderedS;10;CIB Windowf;3;0.5f;4;0.05f;18;0.6862745098039216S;20;{{0, 23}, {261, 21}}S;25;CPHUDBackgroundWindowMaskd;1;3S;20;{{0, 46}, {261, 21}}S;22;CPBorderlessWindowMaskS;20;{{0, 69}, {261, 21}}S;30;CPTexturedBackgroundWindowMaskd;1;5S;20;{{0, 92}, {261, 21}}S;20;CPDocModalWindowMaskS;21;{{0, 115}, {261, 21}}S;14;CIB HUD WindowD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/AttachedSheet2/Resources/Window.xib b/Tests/Manual/AttachedSheet2/Resources/Window.xib index 25ee97717..9bf735547 100644 --- a/Tests/Manual/AttachedSheet2/Resources/Window.xib +++ b/Tests/Manual/AttachedSheet2/Resources/Window.xib @@ -443,7 +443,7 @@ {{193, 278}, {174, 18}} - + _NS:9 YES @@ -810,6 +810,31 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NO 2 + + + 268 + {{14, 246}, {150, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Popover + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + {468, 455} @@ -991,6 +1016,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 223 + + + newPopover: + + + + 232 + initialFirstResponder @@ -1075,6 +1108,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + @@ -1400,6 +1434,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + 229 + + + + + + + + 230 + + + @@ -1451,7 +1498,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1467,13 +1516,24 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - 228 + 232 SheetWindowController NSWindowController + + newPopover: + id + + + newPopover: + + newPopover: + id + + NSButton NSButton @@ -1487,7 +1547,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSButton NSButton NSButton - CPRadioGroup + NSMatrix @@ -1540,7 +1600,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA _windowTypeMatrix - CPRadioGroup + NSMatrix diff --git a/Tests/Manual/AttachedSheet2/SheetWindowController.j b/Tests/Manual/AttachedSheet2/SheetWindowController.j index 18d3f039c..298eefada 100644 --- a/Tests/Manual/AttachedSheet2/SheetWindowController.j +++ b/Tests/Manual/AttachedSheet2/SheetWindowController.j @@ -449,6 +449,28 @@ contextInfo:parentWindow]; } +// +// Test popover +// +- (@action)newPopover:(id)sender +{ + [[self allocController] runPopoverForWindow:[self window] withSender:sender]; +} + +- (void)runPopoverForWindow:(CPWindow)parentWindow withSender:(id)sender +{ + var aPopover = [CPPopover new], + viewController = [CPViewController new]; + + [aPopover setContentViewController:viewController]; + [[self window] close]; + [viewController setView:[[self window] contentView]]; + [aPopover setContentSize:[[[self window] contentView] boundsSize]]; + [aPopover setAnimates:YES]; + [aPopover showRelativeToRect:[sender bounds] ofView:sender preferredEdge:CPMaxXEdge]; + [aPopover setBehavior:CPPopoverBehaviorTransient]; +} + // // Test notifications/delegate methods // From 6327d8c92e9f67956fe5b520f046f3472950b702 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Mon, 11 Mar 2013 13:14:18 +0000 Subject: [PATCH 07/78] Fixed: transient popovers broke modal windows. Without this fix, opening a transient popover would allow windows other than the modal window (or its children) to be interacted with. In general, setCallback:forNextEventMatchingMask: did not work right if more than 1 callback was installed. In the popover case the modal window would install its "any event" callback to control the event loop, but then the popover would add a second callback for mouse down to detect clicks outside of it. This would disrupt the modal event handling and allow mouse clicks (and presumably other events) to escape the modal event catcher. This fix makes multiple nextEvent callbacks work as one would expect, with later ones taking priority over older ones and reinserted callbacks remaining at a stable priority. This allows the modal window callback to be at the "bottom" of the handler stack and the popover event handler to be "on top" of that, and to remain that way. In theory more layers of event handling could be layered on top such as 2 simultaneous popovers. This fix also fixes the dequeue argument in forNextEvent callbacks. --- AppKit/CPApplication.j | 50 ++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index 01132ecd4..4ea496474 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -87,6 +87,7 @@ CPRunContinuesResponse = -1002; @implementation CPApplication : CPResponder { CPArray _eventListeners; + int _eventListenerInsertionIndex; CPEvent _currentEvent; CPWindow _lastMouseMoveWindow; @@ -144,6 +145,7 @@ CPRunContinuesResponse = -1002; if (self) { _eventListeners = []; + _eventListenerInsertionIndex = 0; _windows = [[CPNull null]]; } @@ -509,6 +511,8 @@ CPRunContinuesResponse = -1002; if (_eventListeners[count]._callback === _CPRunModalLoop) { _eventListeners.splice(count, 1); + if (count <= _eventListenerInsertionIndex) + _eventListenerInsertionIndex--; return; } @@ -625,25 +629,32 @@ CPRunContinuesResponse = -1002; _lastMouseMoveWindow = theWindow; } - if (_eventListeners.length) + /* + Event listeners are processed from back to front so that newer event listeners normally take + precedence. If during the execution of a callback a new event listener is added, it should + be inserted after the current callback but before any higher priority callbacks. This makes + repeating event listeners (those that reinsert themselves) stable relative to each other. + */ + for (var i = _eventListeners.length - 1; i >= 0; i--) { - var listener = _eventListeners[_eventListeners.length - 1]; + var listener = _eventListeners[i]; if (listener._mask & (1 << [anEvent type])) { - _eventListeners.pop(); + _eventListeners.splice(i, 1); + // In case the callback wants to add more listeners. + _eventListenerInsertionIndex = i; listener._callback(anEvent); - } - /* - FIXME: This does not match Cocoa documented behavior for the dequeue - flag. Cocoa says the event is dequeued only if it matches the mask. - Unfortunately event handling code in Cappuccino is depending - on an event being dequeued even if it does not match. - */ - if (listener._dequeue) - return; + if (listener._dequeue) + { + // Don't process the event normally and don't send it to any other listener. + _eventListenerInsertionIndex = _eventListeners.length; + return; + } + } } + _eventListenerInsertionIndex = _eventListeners.length; if (theWindow) [theWindow sendEvent:anEvent]; @@ -923,6 +934,12 @@ CPRunContinuesResponse = -1002; /*! Fires a callback function when an event matching a given mask occurs. + + If multiple callbacks are set which match the same event, later callbacks + take priority over earlier callbacks, unless a new callback is set while + an existing callback is being processed in which case it's given the same + priority as the currently processing callback. + @param aCallback A js function to be fired. @prarm aMask An event mask for the next event. @param anExpiration The date for which this callback expires (not implemented). @@ -932,13 +949,18 @@ CPRunContinuesResponse = -1002; */ - (void)setCallback:(Function)aCallback forNextEventMatchingMask:(unsigned int)aMask untilDate:(CPDate)anExpiration inMode:(CPString)aMode dequeue:(BOOL)shouldDequeue { - _eventListeners.push(_CPEventListenerMake(aMask, aCallback, shouldDequeue)); + _eventListeners.splice(_eventListenerInsertionIndex++, 0, _CPEventListenerMake(aMask, aCallback, shouldDequeue)); } /*! Assigns a target and action for the next event matching a given event mask. The callback method called will be passed the CPEvent when it fires. + If multiple callbacks are set which match the same event, later callbacks + take priority over earlier callbacks, unless a new callback is set while + an existing callback is being processed in which case it's given the same + priority as the currently processing callback. + @param aTarget The target object for the callback. @param aSelector The selector which should be called on the target object. @param aMask The mask for a given event which should trigger the callback. @@ -949,7 +971,7 @@ CPRunContinuesResponse = -1002; */ - (void)setTarget:(id)aTarget selector:(SEL)aSelector forNextEventMatchingMask:(unsigned int)aMask untilDate:(CPDate)anExpiration inMode:(CPString)aMode dequeue:(BOOL)shouldDequeue { - _eventListeners.push(_CPEventListenerMake(aMask, function (anEvent) { objj_msgSend(aTarget, aSelector, anEvent); }, shouldDequeue)); + _eventListeners.splice(_eventListenerInsertionIndex++, 0, _CPEventListenerMake(aMask, function (anEvent) { objj_msgSend(aTarget, aSelector, anEvent); }, shouldDequeue)); } /*! From 59b766eb9351f21107cc2a1a698f2a64a90e43c8 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Mon, 11 Mar 2013 16:41:06 +0000 Subject: [PATCH 08/78] Fixed: token field autocomplete menu not receiving mouse events in presence of modal window. Without this fix, the presence of a modal ancestor window to a token field would lock down the autocomplete menu from mouse interaction. This fix ensures the token field autocomplete menu accepts mouse events even during the presence of modal widows, just like other auxiliary windows such as pop up menus. --- AppKit/_CPAutocompleteMenu.j | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/AppKit/_CPAutocompleteMenu.j b/AppKit/_CPAutocompleteMenu.j index ebd174944..ed9b4a8bc 100644 --- a/AppKit/_CPAutocompleteMenu.j +++ b/AppKit/_CPAutocompleteMenu.j @@ -275,6 +275,12 @@ var _CPAutocompleteMenuMaximumHeight = 307; return YES; } +- (BOOL)worksWhenModal +{ + // Windows which serve as auxiliary controls should work when modal. + return YES; +} + @end @implementation _CPNonFirstResponderTableView : CPTableView From 5f086b11b837793ab3466ef71b7672771bd7a0c3 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Mon, 11 Mar 2013 17:40:11 +0000 Subject: [PATCH 09/78] Fixed: platform windows resizable. Without this fix, a platform window could be resized by clicking just under the menu bar and dragging downwards, even that platform windows are supposed to be the size of the browser window by definition. --- AppKit/CPWindow/_CPWindowView.j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AppKit/CPWindow/_CPWindowView.j b/AppKit/CPWindow/_CPWindowView.j index 9b49f8624..805d8c885 100644 --- a/AppKit/CPWindow/_CPWindowView.j +++ b/AppKit/CPWindow/_CPWindowView.j @@ -178,7 +178,7 @@ _CPWindowViewResizeSlop = 3; - (void)mouseDown:(CPEvent)anEvent { var theWindow = [self window], - couldResize = _styleMask & CPResizableWindowMask; + couldResize = _styleMask & CPResizableWindowMask && ![theWindow isFullPlatformWindow]; couldResize = couldResize && ( (CPWindowResizeStyle === CPWindowResizeStyleModern) || From a549c191da02e732afc560d9b4f45c8c82b29423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Wallstro=CC=88m?= Date: Mon, 11 Mar 2013 21:09:22 +0100 Subject: [PATCH 10/78] lint --- AppKit/CPCollectionView.j | 2 ++ 1 file changed, 2 insertions(+) diff --git a/AppKit/CPCollectionView.j b/AppKit/CPCollectionView.j index 98a2ea69b..58f39bd1f 100644 --- a/AppKit/CPCollectionView.j +++ b/AppKit/CPCollectionView.j @@ -1218,8 +1218,10 @@ Not supported. Use -collectionView:dataForItemsAtIndexes:fortype: - (void)_modifySelectionWithNewIndex:(int)anIndex direction:(int)aDirection expand:(BOOL)shouldExpand { var count = [[self items] count]; + if (count === 0) return; + anIndex = MIN(MAX(anIndex, 0), count - 1); if (_allowsMultipleSelection && shouldExpand) From 2dca00c4a039f5d844d6d0487fa7c7fd8754369b Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Mon, 11 Mar 2013 00:29:05 -0400 Subject: [PATCH 11/78] Fixed: sheets should not be resizable from the top Previously, sheets could be resized from the top, which would destroy the illusion of being attached to the top of the parent window. With this commit, sheets are prevented from being resized by the user from the top edge. --- AppKit/CPWindow/_CPWindowView.j | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/AppKit/CPWindow/_CPWindowView.j b/AppKit/CPWindow/_CPWindowView.j index 9b49f8624..5d837516e 100644 --- a/AppKit/CPWindow/_CPWindowView.j +++ b/AppKit/CPWindow/_CPWindowView.j @@ -245,6 +245,8 @@ _CPWindowViewResizeSlop = 3; rects are the same size. So to save calculations, we can just create 3 rects and move them around to do hit testing. Start with the corners and then do left/right and top/bottom. + + NOTE: If the window is a sheet, the top is never eligible for resizing. */ var wind = [self window], frame = [wind frame], @@ -252,7 +254,8 @@ _CPWindowViewResizeSlop = 3; minSize = [wind minSize], maxSize = [wind maxSize], isFixedWidth = minSize.width === maxSize.width, - isFixedHeight = minSize.height === maxSize.height; + isFixedHeight = minSize.height === maxSize.height, + isSheet = wind._isSheet; if (isFixedWidth) { @@ -262,7 +265,7 @@ _CPWindowViewResizeSlop = 3; _CPWindowViewResizeSlop * 2); if (_CGRectContainsPoint(rect, aPoint)) - return _CPWindowViewResizeRegionTop; + return isSheet ? _CPWindowViewResizeRegionNone : _CPWindowViewResizeRegionTop; rect.origin.y = _CGRectGetMaxY(frame) - _CPWindowViewResizeSlop; @@ -292,12 +295,12 @@ _CPWindowViewResizeSlop = 3; _CPWindowViewCornerResizeRectWidth + _CPWindowViewResizeSlop); if (_CGRectContainsPoint(rect, aPoint)) - return _CPWindowViewResizeRegionTopLeft; + return isSheet ? _CPWindowViewResizeRegionNone : _CPWindowViewResizeRegionTopLeft; rect.origin.x = _CGRectGetMaxX(frame) - _CPWindowViewCornerResizeRectWidth; if (_CGRectContainsPoint(rect, aPoint)) - return _CPWindowViewResizeRegionTopRight; + return isSheet ? _CPWindowViewResizeRegionNone : _CPWindowViewResizeRegionTopRight; rect.origin.y = _CGRectGetMaxY(frame) - _CPWindowViewCornerResizeRectWidth; @@ -328,7 +331,7 @@ _CPWindowViewResizeSlop = 3; _CPWindowViewResizeSlop * 2); if (_CGRectContainsPoint(rect, aPoint)) - return _CPWindowViewResizeRegionTop; + return isSheet ? _CPWindowViewResizeRegionNone : _CPWindowViewResizeRegionTop; rect.origin.y = _CGRectGetMaxY(frame) - _CPWindowViewResizeSlop; From f208ff52fde6645574d863cf32c6d38bd21f5467 Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Mon, 11 Mar 2013 00:48:03 -0400 Subject: [PATCH 12/78] Fixed: attached sheet shadow had extra width, was too dark Previously the attached sheet shadow (that appears below the title bar of the window a sheet is attached to) was 9x8, and it was quite dark. With this commit the width has been reduced to 1 (to reduce the image size) and it has been lightened up. Also changed "height-shadow" theme attribute to "shadow-height". --- AppKit/CPWindow/_CPDocModalWindowView.j | 6 +++--- .../Resources/window-attached-sheet-shadow.png | Bin 106 -> 616 bytes AppKit/Themes/Aristo/ThemeDescriptors.j | 10 +++++----- .../Artwork/window-attached-sheet-shadow.psd | Bin 0 -> 20078 bytes .../Resources/window-attached-sheet-shadow.png | Bin 106 -> 616 bytes AppKit/Themes/Aristo2/ThemeDescriptors.j | 11 +++-------- 6 files changed, 11 insertions(+), 16 deletions(-) create mode 100644 AppKit/Themes/Aristo2/Artwork/window-attached-sheet-shadow.psd diff --git a/AppKit/CPWindow/_CPDocModalWindowView.j b/AppKit/CPWindow/_CPDocModalWindowView.j index 5a420b986..186af01fa 100644 --- a/AppKit/CPWindow/_CPDocModalWindowView.j +++ b/AppKit/CPWindow/_CPDocModalWindowView.j @@ -38,7 +38,7 @@ { return @{ @"body-color": [CPColor whiteColor], - @"height-shadow": 8, + @"shadow-height": 8, }; } @@ -68,7 +68,7 @@ [self addSubview:_bodyView]; - _shadowView = [[CPView alloc] initWithFrame:CGRectMake(0, 0, _CGRectGetWidth(bounds), [self valueForThemeAttribute:@"height-shadow"])]; + _shadowView = [[CPView alloc] initWithFrame:CGRectMake(0, 0, _CGRectGetWidth(bounds), [self valueForThemeAttribute:@"shadow-height"])]; [_shadowView setAutoresizingMask:CPViewWidthSizable]; [self addSubview:_shadowView]; } @@ -99,7 +99,7 @@ [_bodyView setBackgroundColor:[self valueForThemeAttribute:@"body-color"]]; - [_shadowView setFrame:CGRectMake(0,0, _CGRectGetWidth(bounds), [self valueForThemeAttribute:@"height-shadow"])]; + [_shadowView setFrame:CGRectMake(0, 0, _CGRectGetWidth(bounds), [self valueForThemeAttribute:@"shadow-height"])]; [_shadowView setBackgroundColor:[self valueForThemeAttribute:@"attached-sheet-shadow-color"]]; } diff --git a/AppKit/Themes/Aristo/Resources/window-attached-sheet-shadow.png b/AppKit/Themes/Aristo/Resources/window-attached-sheet-shadow.png index b39cae110a6c09f758fd59b5c678add45437af14..eeab7d517030c9ef1937992a0d6e1bbd443eac15 100644 GIT binary patch literal 616 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 Uhv)w``_{3>O@Wges>{ef0RY>PYybcN literal 0 HcmV?d00001 diff --git a/AppKit/Themes/Aristo2/Resources/window-attached-sheet-shadow.png b/AppKit/Themes/Aristo2/Resources/window-attached-sheet-shadow.png index b39cae110a6c09f758fd59b5c678add45437af14..eeab7d517030c9ef1937992a0d6e1bbd443eac15 100644 GIT binary patch literal 616 zcmV-u0+;=XP){nC#h2S^W_HwvQFXGu*7AXiM9NEFyi5Gx8#Qn zPilDc5nT7IZ`wxK3iQoZb*xWeRqK^tP9Dq%f+NIkQaBqPz_;=qWZDQ2deaHVgaArC z5`>hJ55UL7N7!9DApr|1^CNIN&_y%#BU|LfDVEbxxVE-s2<`WKZ$I_4c|s&flEH`X zPaI;>Ju6%F6V+Xf9&*ufBU>xA0)t+y^vOvIQ}q` zZ)EWA%71a||M@lKl0kos%V=^lIEd%rcglHvgmOD$+;Y4E;K2p$?v$L60000ZNkloLeXW0000 Date: Mon, 11 Mar 2013 00:58:58 -0400 Subject: [PATCH 13/78] Fixed: sheet animation was resizing the sheet to zero, causing problems Previously sheet animation was performed by sizing the sheet from zero to full height when animating in, and then back to zero height when animating out. This caused problems with the resize algorithms, which are not designed to deal with sizing from zero. Analyzing Cocoa behavior revealed that sheets slide in and out with no resizing. With this commit, a general purpose mechanism for clipping a window to a rect was added to CPDOMWindowLayer. Clipping was put in CPDOMWindowLayer because that is the class that deals with windows at the global level. CPWindow uses the clipping mechanism to slide the sheet in and out, thus avoiding all resizing problems. Fixes #1840 --- AppKit/CPWindow/CPWindow.j | 114 ++++++++++--------------- AppKit/Platform/DOM/CPDOMWindowLayer.j | 63 ++++++++++++++ 2 files changed, 108 insertions(+), 69 deletions(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index c1f8a677e..fae5232eb 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -1169,7 +1169,7 @@ CPTexturedBackgroundWindowMask if (_hasShadow && !_shadowView) { - _shadowView = [[_CPShadowWindowView alloc] initWithFrame:CGRectMakeZero()]; + _shadowView = [[_CPShadowWindowView alloc] initWithFrame:CGRectMakeZero()]; [_shadowView setWindowView:_windowView]; [_shadowView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable]; @@ -2473,7 +2473,6 @@ CPTexturedBackgroundWindowMask return CPWindowResizeTime; } -/* @ignore */ - (void)_setAttachedSheetFrameOrigin { // Position the sheet above the contentRect. @@ -2487,7 +2486,7 @@ CPTexturedBackgroundWindowMask [attachedSheet setFrame:sheetFrame display:YES animate:NO]; } -/* @ignore +/* Starting point for sheet session, called from CPApplication beginSheet: */ - (void)_attachSheet:(CPWindow)aSheet modalDelegate:(id)aModalDelegate @@ -2503,13 +2502,13 @@ CPTexturedBackgroundWindowMask var sheetFrame = [aSheet frame]; _sheetContext = {"sheet": aSheet, "modalDelegate": aModalDelegate, "endSelector": aDidEndSelector, - "contextInfo": aContextInfo, "frame": _CGRectMakeCopy(sheetFrame), "returnCode": -1, + "contextInfo": aContextInfo, "returnCode": -1, "opened": NO}; [self _attachSheetWindow]; } -/* @ignore +/* Called to animate the sheet in. The timer seems to solve a bug where sheets would be partially animated under certain conditions. */ @@ -2525,7 +2524,7 @@ CPTexturedBackgroundWindowMask repeats:NO]; } -/* @ignore +/* Called to end the sheet. Note that orderOut: is needed to animate the sheet out, as in Cocoa. The sheet isn't completely gone until _cleanupSheetWindow gets called. */ @@ -2546,7 +2545,7 @@ CPTexturedBackgroundWindowMask } } -/* @ignore +/* Called to animate the sheet out. If called while animating in, schedules an animate out at completion */ @@ -2562,26 +2561,24 @@ CPTexturedBackgroundWindowMask repeats:NO]; } -/* @ignore +/* Called to cleanup sheet, when we are definitely done with it */ - (void)_cleanupSheetWindow { var sheet = _sheetContext["sheet"], - lastFrame = _sheetContext["frame"], deferDidEnd = _sheetContext["deferDidEndSelector"]; - [sheet setFrame:lastFrame]; - [self _restoreMasksForView:[sheet contentView]]; - - // if the parent window is modal, the sheet started its own modal session + // If the parent window is modal, the sheet started its own modal session if (sheet._isModal) [CPApp stopModal]; - // restore the state of window before it was sheetified + [self _removeClipForSheet:sheet]; + + // Restore the state of window before it was sheetified [sheet._windowView _enableSheet:NO]; - // close it + // Close it sheet._isSheet = NO; [sheet orderOut:self]; @@ -2594,7 +2591,7 @@ CPTexturedBackgroundWindowMask returnCode = _sheetContext["returnCode"], contextInfo = _sheetContext["contextInfo"]; - // context must be destroyed, since didEnd might want to attach another sheet + // Context must be destroyed, since didEnd might want to attach another sheet _sheetContext = nil; sheet._parentView = nil; @@ -2622,31 +2619,20 @@ CPTexturedBackgroundWindowMask repeats:NO]; } -/* @ignore */ - (void)_sheetShouldAnimateIn:(CPTimer)timer { - // can't open sheet while opening or closing animation is going on + // Can't open sheet while opening or closing animation is going on if (_sheetContext["isOpening"] || _sheetContext["isClosing"]) return; - var sheet = _sheetContext["sheet"], - sheetFrame = [sheet frame], - frame = [self frame]; - - [self _setUpMasksForView:[sheet contentView]]; - + var sheet = _sheetContext["sheet"]; sheet._isSheet = YES; sheet._parentView = self; - var originx = frame.origin.x + FLOOR((frame.size.width - sheetFrame.size.width) / 2), - originy = frame.origin.y + [_contentView frame].origin.y, - startFrame = _CGRectMake(originx, originy, sheetFrame.size.width, 0), - endFrame = _CGRectMake(originx, originy, sheetFrame.size.width, sheetFrame.size.height); - [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowWillBeginSheetNotification object:self]; - // if sheet is attached to a modal window, the sheet runs + // If sheet is attached to a modal window, the sheet runs // as if itself and the parent window are modal sheet._isModal = NO; @@ -2656,7 +2642,17 @@ CPTexturedBackgroundWindowMask sheet._isModal = YES; } + // The sheet starts hidden just above the top of a clip rect + var sheetFrame = [sheet frame], + sheetShadowFrame = sheet._hasShadow ? [sheet._shadowView frame] : sheetFrame, + frame = [self frame], + originX = frame.origin.x + FLOOR((frame.size.width - sheetFrame.size.width) / 2), + startFrame = _CGRectMake(originX, -sheetShadowFrame.size.height, sheetFrame.size.width, sheetFrame.size.height), + endFrame = _CGRectMake(originX, 0, sheetFrame.size.width, sheetFrame.size.height); + [sheet orderFront:self]; + + [self _clipSheet:sheet]; [sheet setFrame:startFrame display:YES animate:NO]; _sheetContext["opened"] = YES; @@ -2671,16 +2667,11 @@ CPTexturedBackgroundWindowMask [sheet makeKeyWindow]; } -/* @ignore */ - (void)_sheetShouldAnimateOut:(CPTimer)timer { - var sheet = _sheetContext["sheet"], - startFrame = [sheet frame], - endFrame = _CGRectMakeCopy(startFrame); - if (_sheetContext["isOpening"]) { - // allow sheet to be closed while opening, it will close when animate in completes + // Allow sheet to be closed while opening, it will close when animate in completes _sheetContext["shouldClose"] = YES; return; } @@ -2689,14 +2680,20 @@ CPTexturedBackgroundWindowMask return; _sheetContext["opened"] = NO; - _sheetContext["frame"] = startFrame; _sheetContext["isClosing"] = YES; - // the parent window can be orderedOut to disable the sheet animate out, as in Cocoa + // The parent window can be orderedOut to disable the sheet animate out, as in Cocoa if ([self isVisible]) { - endFrame.size.height = 0; - [self _setUpMasksForView:[sheet contentView]]; + var sheet = _sheetContext["sheet"], + sheetFrame = [sheet frame], + fullHeight = sheet._hasShadow ? [sheet._shadowView frame].size.height : sheetFrame.size.height, + endFrame = _CGRectMakeCopy(sheetFrame); + + [sheet setFrameOrigin:_CGPointMake(sheetFrame.origin.x, 0)]; + [self _clipSheet:sheet]; + + endFrame.origin.y = -fullHeight; [sheet _setFrame:endFrame delegate:self duration:[self animationResizeTime:endFrame] curve:CPAnimationEaseIn]; } else @@ -2705,7 +2702,6 @@ CPTexturedBackgroundWindowMask } } -/* @ignore */ - (void)_sheetAnimationDidEnd:(CPTimer)timer { var sheet = _sheetContext["sheet"]; @@ -2715,12 +2711,11 @@ CPTexturedBackgroundWindowMask if (_sheetContext["opened"] === YES) { - // sheet is open and completely visible - [self _restoreMasksForView:[sheet contentView]]; - // we wanted to close the sheet while it animated in, do that now if (_sheetContext["shouldClose"] === YES) [self _detachSheetWindow]; + else + [self _removeClipForSheet:sheet]; } else { @@ -2729,36 +2724,17 @@ CPTexturedBackgroundWindowMask } } -- (void)_setUpMasksForView:(CPView)aView +- (void)_clipSheet:(CPWindow)aSheet { - var views = [aView subviews]; + var clipRect = [_platformWindow contentBounds]; + clipRect.origin.y = [self frame].origin.y + [[self contentView] frame].origin.y; - [views addObject:aView]; - - for (var i = 0, count = [views count]; i < count; i++) - { - var view = [views objectAtIndex:i], - mask = [view autoresizingMask], - maskToAdd = (mask & CPViewMinYMargin) ? 128 : CPViewMinYMargin; - - [view setAutoresizingMask:(mask | maskToAdd)]; - } + [[_platformWindow layerAtLevel:_level create:NO] clipWindow:aSheet toRect:clipRect]; } -- (void)_restoreMasksForView:(CPView)aView +- (void)_removeClipForSheet:(CPWindow)aSheet { - var views = [aView subviews]; - - [views addObject:aView]; - - for (var i = 0, count = [views count]; i < count; i++) - { - var view = [views objectAtIndex:i], - mask = [view autoresizingMask], - maskToRemove = (mask & 128) ? 128 : CPViewMinYMargin; - - [view setAutoresizingMask:(mask & (~ maskToRemove))]; - } + [[_platformWindow layerAtLevel:_level create:NO] removeClipForWindow:aSheet]; } /*! diff --git a/AppKit/Platform/DOM/CPDOMWindowLayer.j b/AppKit/Platform/DOM/CPDOMWindowLayer.j index 926074a3d..4336d60c8 100644 --- a/AppKit/Platform/DOM/CPDOMWindowLayer.j +++ b/AppKit/Platform/DOM/CPDOMWindowLayer.j @@ -130,4 +130,67 @@ return _windows; } +/*! + Places \c aWindow within an element that clips it to the global rect \c clipRect. + + NOTE: This is only meant for temporary usage during animation and should be balanced + with a call to removeClipForWindow:. No attempt is made to make the clipping element follow + changes to the window. +*/ +- (void)clipWindow:(CPWindow)aWindow toRect:(CGRect)clipRect +{ + // First check to see if the window is already clipped. + // If so, just update its rect. + var windowElement = aWindow._DOMElement, + clip = windowElement.parentNode, + style = clip.style, + isClipped = style.className === "cpwindowclip"; + + if (!isClipped) + { + clip = document.createElement("div"); + + style = clip.style; + style.className = "cpwindowclip"; + style.position = "absolute"; + style.overflow = "hidden"; + } + + style.left = clipRect.origin.x + "px"; + style.top = clipRect.origin.y + "px"; + style.width = clipRect.size.width + "px"; + style.height = clipRect.size.height + "px"; + + if (!isClipped) + { + // Replace the window with the clip element, then put it inside the clip + var parent = windowElement.parentNode; + CPDOMDisplayServerInsertBefore(parent, clip, windowElement); + CPDOMDisplayServerRemoveChild(parent, windowElement); + CPDOMDisplayServerAppendChild(clip, windowElement); + } +} + +/*! + Unclips a window that was previously clipped with clipWindow:toWindow:. + If the window was not clipped, a warning is logged. +*/ +- (void)removeClipForWindow:(CPWindow)aWindow +{ + var windowElement = aWindow._DOMElement, + clip = windowElement.parentNode; + + if (clip.style.className === "cpwindowclip") + { + var parent = clip.parentNode; + + CPDOMDisplayServerRemoveChild(clip, windowElement); + [aWindow setFrameOrigin:_CGPointMake([aWindow frame].origin.x, clip.offsetTop)]; + CPDOMDisplayServerInsertBefore(parent, windowElement, clip); + CPDOMDisplayServerRemoveChild(parent, clip); + } + else + CPLog.warn("%s %s was not previously clipped via clipWindow:toWindow:", _cmd, [aWindow description]); +} + @end From 3af2314a70d63d3643fe2843717b50e1a22ef4f9 Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Tue, 12 Mar 2013 00:36:19 -0400 Subject: [PATCH 14/78] Fixed: sheet resizing displayed incorrectly Previously, when a sheet was resized, there were a number of problems: - Sheets in Cocoa resize their width symmetrically, such that they always remain centered. This was not happening in Cappuccino. - When a sheet is resized wider than its parent window, the shadow at the top of the sheet was growing wider than the bounds of the parent window's title bar, which makes no sense since the shadow is supposed to be cast by the title bar. - Sheets had no top border, so when they were resized wider than the parent window, the top edge looked like it was cut off. In Cocoa, sheets have a top border that sits under the title bar of the parent window, and which is visible when the sheet is resized wider than the parent window. This commit addresses these problems as follows: - Sheet width is now resized symmetrically. - Sheet resizing is pinned to the screen bounds. - The top sheet shadow is pinned to the width of the parent window's content view. - Sheets now have a top border. In addition to these changes, a redundant sheet top shadow was eliminated from one of the _CPWindowView subclasses. Fixes #1846 --- AppKit/CPApplication.j | 2 +- AppKit/CPWindow/CPWindow.j | 22 ++- AppKit/CPWindow/_CPDocModalWindowView.j | 20 +-- AppKit/CPWindow/_CPHUDWindowView.j | 6 +- AppKit/CPWindow/_CPStandardWindowView.j | 45 +++--- AppKit/CPWindow/_CPTitleableWindowView.j | 5 + AppKit/CPWindow/_CPWindowView.j | 130 ++++++++++++++---- AppKit/Platform/DOM/CPDOMWindowLayer.j | 49 +++---- AppKit/Themes/Aristo/ThemeDescriptors.j | 9 +- .../Aristo2/Artwork/Aristo 11-06-07.psd | Bin 5295141 -> 5174036 bytes .../window-standard-bottom-center.png | Bin 75 -> 616 bytes .../Resources/window-standard-bottom-left.png | Bin 114 -> 649 bytes .../window-standard-bottom-right.png | Bin 114 -> 650 bytes .../window-standard-center-center.png | Bin 82 -> 607 bytes .../Resources/window-standard-center-left.png | Bin 76 -> 611 bytes .../window-standard-center-right.png | Bin 76 -> 611 bytes .../Resources/window-standard-top-left.png | Bin 79 -> 617 bytes .../Resources/window-standard-top-right.png | Bin 79 -> 621 bytes AppKit/Themes/Aristo2/ThemeDescriptors.j | 4 +- Tests/Manual/AttachedSheet/AppController.j | 3 +- 20 files changed, 187 insertions(+), 108 deletions(-) diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index 01132ecd4..8f2c32b00 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -978,7 +978,7 @@ CPRunContinuesResponse = -1002; return; } - [aSheet._windowView _enableSheet:YES]; + [aSheet._windowView _enableSheet:YES inWindow:aWindow]; // -dw- if a sheet is already visible, we skip this since it serves no purpose and causes // orderOut: to be called on the sheet, which is not what we want. diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index fae5232eb..bd127364b 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -2576,10 +2576,10 @@ CPTexturedBackgroundWindowMask [self _removeClipForSheet:sheet]; // Restore the state of window before it was sheetified - [sheet._windowView _enableSheet:NO]; + sheet._isSheet = NO; + [sheet._windowView _enableSheet:NO inWindow:self]; // Close it - sheet._isSheet = NO; [sheet orderOut:self]; [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidEndSheetNotification object:self]; @@ -2648,7 +2648,8 @@ CPTexturedBackgroundWindowMask frame = [self frame], originX = frame.origin.x + FLOOR((frame.size.width - sheetFrame.size.width) / 2), startFrame = _CGRectMake(originX, -sheetShadowFrame.size.height, sheetFrame.size.width, sheetFrame.size.height), - endFrame = _CGRectMake(originX, 0, sheetFrame.size.width, sheetFrame.size.height); + endY = [_windowView bodyOffset] - [[self contentView] frame].origin.y, + endFrame = _CGRectMake(originX, endY, sheetFrame.size.width, sheetFrame.size.height); [sheet orderFront:self]; @@ -2688,9 +2689,10 @@ CPTexturedBackgroundWindowMask var sheet = _sheetContext["sheet"], sheetFrame = [sheet frame], fullHeight = sheet._hasShadow ? [sheet._shadowView frame].size.height : sheetFrame.size.height, - endFrame = _CGRectMakeCopy(sheetFrame); + endFrame = _CGRectMakeCopy(sheetFrame), + contentOrigin = [self convertBaseToGlobal:[[self contentView] frame].origin]; - [sheet setFrameOrigin:_CGPointMake(sheetFrame.origin.x, 0)]; + [sheet setFrameOrigin:_CGPointMake(sheetFrame.origin.x, sheetFrame.origin.y - contentOrigin.y)]; [self _clipSheet:sheet]; endFrame.origin.y = -fullHeight; @@ -2715,7 +2717,13 @@ CPTexturedBackgroundWindowMask if (_sheetContext["shouldClose"] === YES) [self _detachSheetWindow]; else + { + var sheetFrame = [sheet frame], + sheetOrigin = _CGPointMakeCopy(sheetFrame.origin); + [self _removeClipForSheet:sheet]; + [sheet setFrameOrigin:_CGPointMake(sheetOrigin.x, [sheet frame].origin.y + sheetOrigin.y)]; + } } else { @@ -3151,7 +3159,7 @@ var keyViewComparator = function(lhs, rhs, context) if ([self isFullPlatformWindow]) return [self setFrame:[_platformWindow visibleFrame]]; - if (_autoresizingMask == CPWindowNotSizable) + if (_autoresizingMask === CPWindowNotSizable) return; var frame = [_platformWindow contentBounds], @@ -3163,11 +3171,13 @@ var keyViewComparator = function(lhs, rhs, context) if (_autoresizingMask & CPWindowMinXMargin) newFrame.origin.x += dX; + if (_autoresizingMask & CPWindowWidthSizable) newFrame.size.width += dX; if (_autoresizingMask & CPWindowMinYMargin) newFrame.origin.y += dY; + if (_autoresizingMask & CPWindowHeightSizable) newFrame.size.height += dY; diff --git a/AppKit/CPWindow/_CPDocModalWindowView.j b/AppKit/CPWindow/_CPDocModalWindowView.j index 186af01fa..4b187fd05 100644 --- a/AppKit/CPWindow/_CPDocModalWindowView.j +++ b/AppKit/CPWindow/_CPDocModalWindowView.j @@ -26,7 +26,6 @@ @implementation _CPDocModalWindowView : _CPWindowView { CPView _bodyView; - CPView _shadowView; } + (CPString)defaultThemeClass @@ -61,17 +60,13 @@ { var bounds = [self bounds]; - _bodyView = [[CPView alloc] initWithFrame:_CGRectMake(0.0, 0.0, _CGRectGetWidth(bounds), _CGRectGetHeight(bounds))]; + _bodyView = [[CPView alloc] initWithFrame:_CGRectMake(0.0, 0.0, _CGRectGetWidth(bounds), _CGRectGetHeight(bounds))]; [_bodyView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable]; [_bodyView setHitTests:NO]; [self addSubview:_bodyView]; - - _shadowView = [[CPView alloc] initWithFrame:CGRectMake(0, 0, _CGRectGetWidth(bounds), [self valueForThemeAttribute:@"shadow-height"])]; - [_shadowView setAutoresizingMask:CPViewWidthSizable]; - [self addSubview:_shadowView]; - } + } return self; } @@ -86,11 +81,6 @@ return [[self class] frameRectForContentRect:aContentRect]; } -- (void)_enableSheet:(BOOL)enable -{ - // do nothing, already a sheet -} - - (void)layoutSubviews { [super layoutSubviews]; @@ -98,9 +88,11 @@ var bounds = [self bounds]; [_bodyView setBackgroundColor:[self valueForThemeAttribute:@"body-color"]]; +} - [_shadowView setFrame:CGRectMake(0, 0, _CGRectGetWidth(bounds), [self valueForThemeAttribute:@"shadow-height"])]; - [_shadowView setBackgroundColor:[self valueForThemeAttribute:@"attached-sheet-shadow-color"]]; +- (int)bodyOffset +{ + return [_bodyView frame].origin.y; } @end diff --git a/AppKit/CPWindow/_CPHUDWindowView.j b/AppKit/CPWindow/_CPHUDWindowView.j index 865b6c4d0..d5aeb55a7 100644 --- a/AppKit/CPWindow/_CPHUDWindowView.j +++ b/AppKit/CPWindow/_CPHUDWindowView.j @@ -149,9 +149,9 @@ [[theWindow contentView] setFrame:contentRect]; } -- (void)_enableSheet:(BOOL)enable +- (void)_enableSheet:(BOOL)enable inWindow:(CPWindow)parentWindow { - [super _enableSheet:enable]; + // No need to call super, it just deals with the shadow view, which we don't want [_closeButton setHidden:enable]; [_titleField setHidden:enable]; @@ -173,6 +173,8 @@ [self tile]; [theWindow setFrame:frame display:NO animate:NO]; [theWindow setMovableByWindowBackground:!enable]; + + [self setNeedsLayout]; } - (void)layoutSubviews diff --git a/AppKit/CPWindow/_CPStandardWindowView.j b/AppKit/CPWindow/_CPStandardWindowView.j index be25f9f0b..f92fcd129 100644 --- a/AppKit/CPWindow/_CPStandardWindowView.j +++ b/AppKit/CPWindow/_CPStandardWindowView.j @@ -130,7 +130,6 @@ var _CPStandardWindowViewDividerViewHeight = 1.0; The top coordinate has already been adjusted by _CPTitleableWindowView. */ var contentRect = [super contentRectForFrameRect:aFrameRect]; - contentRect.origin.x += 1; contentRect.size.width -= 2; contentRect.size.height -= 1; @@ -165,7 +164,7 @@ var _CPStandardWindowViewDividerViewHeight = 1.0; [self addSubview:_dividerView]; - var y = _CGRectGetMaxY([_dividerView frame]); + var y = _CGRectGetMinY([_dividerView frame]); _bodyView = [[CPView alloc] initWithFrame:_CGRectMake(0.0, y, _CGRectGetWidth(bounds), _CGRectGetHeight(bounds) - y)]; @@ -226,18 +225,15 @@ var _CPStandardWindowViewDividerViewHeight = 1.0; headHeight = [self toolbarMaxY]; [_headView setFrameSize:_CGSizeMake(width, headHeight)]; - [_dividerView setFrame:_CGRectMake(0.0, headHeight, width, 1.0)]; + [_dividerView setFrame:_CGRectMake(0.0, headHeight, width, _CPStandardWindowViewDividerViewHeight)]; - var dividerMaxY = 0, - dividerMinY = 0; + var dividerMinY = 0, + dividerFrame = [_dividerView frame]; if (![_dividerView isHidden]) - { - dividerMinY = _CGRectGetMinY([_dividerView frame]); - dividerMaxY = _CGRectGetMaxY([_dividerView frame]); - } + dividerMinY = _CGRectGetMinY(dividerFrame); - [_bodyView setFrame:_CGRectMake(0.0, dividerMaxY, width, _CGRectGetHeight(bounds) - dividerMaxY)]; + [_bodyView setFrame:_CGRectMake(0.0, dividerMinY, width, _CGRectGetHeight(bounds) - dividerMinY)]; var leftOffset = 8; @@ -248,9 +244,8 @@ var _CPStandardWindowViewDividerViewHeight = 1.0; [_titleField setFrame:_CGRectMake(leftOffset, 0, width - leftOffset * 2.0, [self valueForThemeAttribute:@"title-bar-height"])]; - var contentRect = _CGRectMake(0.0, dividerMaxY, width, _CGRectGetHeight([_bodyView frame])); - - [[theWindow contentView] setFrame:contentRect]; + var contentFrame = [_bodyView frame]; + [[theWindow contentView] setFrame:_CGRectInset(contentFrame, 1.0, 1.0)]; } /* @@ -313,9 +308,9 @@ var _CPStandardWindowViewDividerViewHeight = 1.0; return [super couldBeMoveEvent:anEvent]; } -- (void)_enableSheet:(BOOL)enable +- (void)_enableSheet:(BOOL)enable inWindow:(CPWindow)parentWindow { - [super _enableSheet:enable]; + [super _enableSheet:enable inWindow:parentWindow]; [_headView setHidden:enable]; [_dividerView setHidden:enable]; @@ -324,22 +319,29 @@ var _CPStandardWindowViewDividerViewHeight = 1.0; [_titleField setHidden:enable]; if (enable) + { [_bodyView setBackgroundColor:[[CPTheme defaultTheme] valueForAttributeWithName:@"body-color" forClass:_CPDocModalWindowView]]; + + // Move the shadow view down so it is inside the content border + var shadowFrame = [_sheetShadowView frame]; + [_sheetShadowView setFrameOrigin:_CGPointMake(shadowFrame.origin.x, shadowFrame.origin.y + 1)]; + } else [_bodyView setBackgroundColor:[self valueForThemeAttribute:@"body-color"]]; // resize the window var theWindow = [self window], frame = [theWindow frame], + dividerHeight = [_dividerView frame].size.height, dy; if (enable) - dy = -(_CGRectGetHeight([_headView frame]) + _CGRectGetHeight([_dividerView frame])); + dy = -[_headView frame].size.height; else - dy = [self toolbarMaxY] + 1.0; + dy = [self toolbarMaxY] + dividerHeight; - var newHeight = _CGRectGetMaxY(frame) + dy, - newWidth = _CGRectGetMaxX(frame); + var newHeight = _CGRectGetHeight(frame) + dy, + newWidth = _CGRectGetWidth(frame); frame.size.height += dy; @@ -380,4 +382,9 @@ var _CPStandardWindowViewDividerViewHeight = 1.0; return size; } +- (int)bodyOffset +{ + return [_bodyView frame].origin.y; +} + @end diff --git a/AppKit/CPWindow/_CPTitleableWindowView.j b/AppKit/CPWindow/_CPTitleableWindowView.j index 34e597eab..dd83d10eb 100644 --- a/AppKit/CPWindow/_CPTitleableWindowView.j +++ b/AppKit/CPWindow/_CPTitleableWindowView.j @@ -121,4 +121,9 @@ return size; } +- (int)bodyOffset +{ + return [self contentRectForFrameRect:[self frame]].origin.y; +} + @end diff --git a/AppKit/CPWindow/_CPWindowView.j b/AppKit/CPWindow/_CPWindowView.j index 5d837516e..7fd358b64 100644 --- a/AppKit/CPWindow/_CPWindowView.j +++ b/AppKit/CPWindow/_CPWindowView.j @@ -91,6 +91,7 @@ _CPWindowViewResizeSlop = 3; @"size-indicator": CGSizeMakeZero(), @"resize-indicator": [CPNull null], @"attached-sheet-shadow-color": [CPColor blackColor], + @"shadow-height": 8, @"close-image-origin": [CPNull null], @"close-image-size": [CPNull null], @"close-image": [CPNull null], @@ -453,7 +454,10 @@ _CPWindowViewResizeSlop = 3; var type = [anEvent type]; if (type === CPLeftMouseUp) + { + _cachedScreenFrame = nil; return; + } var location = [anEvent locationInWindow], theWindow = [self window], @@ -462,10 +466,10 @@ _CPWindowViewResizeSlop = 3; if (type === CPLeftMouseDown) { - _mouseDraggedPoint = _CGPointMakeCopy(globalLocation); + _mouseDraggedPoint = _CGPointMake(globalLocation.x, globalLocation.y); _resizeFrame = _CGRectMakeCopy(frame); + _cachedScreenFrame = [[CPPlatformWindow primaryPlatformWindow] visibleFrame]; } - else if (type === CPLeftMouseDragged) { var deltaX = globalLocation.x - _mouseDraggedPoint.x, @@ -478,13 +482,16 @@ _CPWindowViewResizeSlop = 3; newY, newWidth, newHeight, - platformFrame = [[theWindow platformWindow] usableContentFrame], resizeMinSize = [self _minimumResizeSize], minSize = [theWindow minSize], maxSize = [theWindow maxSize]; minSize = _CGSizeMake(MAX(minSize.width, resizeMinSize.width), MAX(minSize.height, resizeMinSize.height)); + // If it's a sheet, horizontal resizing is symmetrical, so the movement is effectively doubled + if (theWindow._isSheet) + deltaX *= 2; + // Calculate x and width first switch (_resizeRegion) { @@ -501,8 +508,24 @@ _CPWindowViewResizeSlop = 3; else if (deltaX < 0) deltaX = -MIN(maxSize.width - startWidth, ABS(deltaX)); - // When resizing from the left, we change the origin and the width + if (theWindow._isSheet) + deltaX = FLOOR(deltaX / 2); + newX = startX + deltaX; + + // Pin the left edge to the usable screen left edge + var pinnedX = MAX(newX, _CGRectGetMinX(_cachedScreenFrame)); + + if (pinnedX !== newX) + { + deltaX += pinnedX - newX; + newX = pinnedX; + } + + // When resizing from the left, we change the origin and the width + if (theWindow._isSheet) + deltaX *= 2; + newWidth = startWidth - deltaX; break; @@ -519,9 +542,26 @@ _CPWindowViewResizeSlop = 3; else if (deltaX < 0) deltaX = -MIN(startWidth - minSize.width, ABS(deltaX)); - // When resizing from the right, change only the width - newX = startX; - newWidth = startWidth + deltaX; + if (theWindow._isSheet) + deltaX = FLOOR(deltaX / 2); + + // Pin the right edge to the usable screen right edge + var newMaxX = startX + startWidth + deltaX, + pinnedX = MIN(newMaxX, _CGRectGetMaxX(_cachedScreenFrame)); + + if (pinnedX !== newMaxX) + deltaX += pinnedX - newMaxX; + + if (theWindow._isSheet) + { + newWidth = startWidth + (deltaX * 2); + newX = startX - FLOOR((newWidth - startWidth) / 2); + } + else + { + newWidth = startWidth + deltaX; + newX = startX; + } break; default: @@ -545,8 +585,18 @@ _CPWindowViewResizeSlop = 3; else if (deltaY < 0) deltaY = -MIN(maxSize.height - startHeight, ABS(deltaY)); - // When resizing from the top, change the origin and the height newY = startY + deltaY; + + // Pin the top edge to the usable screen top edge + var pinnedY = MAX(newY, _CGRectGetMinY(_cachedScreenFrame)); + + if (pinnedY !== newY) + { + deltaY += pinnedY - newY; + newY = pinnedY; + } + + // When resizing from the top, change the origin and the height newHeight = startHeight - deltaY; break; @@ -563,8 +613,16 @@ _CPWindowViewResizeSlop = 3; else if (deltaY < 0) deltaY = -MIN(startHeight - minSize.height, ABS(deltaY)); - // When resizing from the bottom, change only the height newY = startY; + + // Pin the bottom edge to the usable screen bottom edge + var newMaxY = startY + startHeight + deltaY, + pinnedY = MIN(newMaxY, _CGRectGetMaxY(_cachedScreenFrame)); + + if (pinnedY !== newMaxY) + deltaY += pinnedY - newMaxY; + + // When resizing from the bottom, change only the height newHeight = startHeight + deltaY; break; @@ -573,13 +631,7 @@ _CPWindowViewResizeSlop = 3; newHeight = startHeight; } - if (theWindow._isSheet && theWindow._parentView && (frame.size.width !== newWidth)) - [theWindow._parentView _setAttachedSheetFrameOrigin]; - - // Constrain resize to fit within the platform window. - var newFrame = CGRectIntersection(_CGRectMake(newX, newY, newWidth, newHeight), platformFrame); - - [theWindow setFrame:newFrame]; + [theWindow setFrame:_CGRectMake(newX, newY, newWidth, newHeight)]; [self setCursorForLocation:location resizing:YES]; } @@ -597,15 +649,10 @@ _CPWindowViewResizeSlop = 3; if (!visibleFrame) visibleFrame = [[CPPlatformWindow primaryPlatformWindow] visibleFrame]; - var minPointY = 0; - - if ([CPMenu menuBarVisible]) - minPointY = [[CPApp mainMenu] menuBarHeight]; - var restrictedPoint = _CGPointMake(0, 0); restrictedPoint.x = MIN(MAX(aPoint.x, -_frame.size.width + 4.0), _CGRectGetMaxX(visibleFrame) - 4.0); - restrictedPoint.y = MIN(MAX(aPoint.y, minPointY), _CGRectGetMaxY(visibleFrame) - 8.0); + restrictedPoint.y = MIN(MAX(aPoint.y, _CGRectGetMinY(visibleFrame)), _CGRectGetMaxY(visibleFrame) - 8.0); return restrictedPoint; } @@ -653,6 +700,8 @@ _CPWindowViewResizeSlop = 3; if ([theWindow attachedSheet]) [theWindow _setAttachedSheetFrameOrigin]; + else if (theWindow._isSheet) + [self _adjustShadowViewSize]; } - (void)setShowsResizeIndicator:(BOOL)shouldShowResizeIndicator @@ -832,22 +881,36 @@ _CPWindowViewResizeSlop = 3; [self addSubview:_resizeIndicator]; } -- (void)_enableSheet:(BOOL)enable +- (void)_enableSheet:(BOOL)enable inWindow:(CPWindow)parentWindow { if (enable) { - _sheetShadowView = [[CPView alloc] initWithFrame:_CGRectMake(0, 0, _CGRectGetWidth([self bounds]), 8)]; + // Clip the shadow view width to the parent's content view + var myWidth = [self bounds].size.width, + shadowWidth = [self _shadowViewWidthForParentWindow:parentWindow], + shadowHeight = [self currentValueForThemeAttribute:@"shadow-height"]; + + _sheetShadowView = [[CPView alloc] initWithFrame:_CGRectMake(FLOOR((myWidth - shadowWidth) / 2), 0, shadowWidth, shadowHeight)]; [_sheetShadowView setAutoresizingMask:CPViewWidthSizable]; [self addSubview:_sheetShadowView]; } else { [_sheetShadowView removeFromSuperview]; + _sheetShadowView = nil; } [self setNeedsLayout]; } +- (CGRect)_shadowViewWidthForParentWindow:(CPWindow)parentWindow +{ + var myWidth = [self bounds].size.width, + parentWidth = [[parentWindow contentView] bounds].size.width; + + return MIN(myWidth, parentWidth); +} + - (void)layoutSubviews { [super layoutSubviews]; @@ -864,9 +927,28 @@ _CPWindowViewResizeSlop = 3; } } +- (void)_adjustShadowViewSize +{ + if (!_sheetShadowView) + return; + + var myWidth = [self frame].size.width, + shadowFrame = [_sheetShadowView frame], + shadowWidth = [self _shadowViewWidthForParentWindow:_window._parentView]; + + shadowFrame.origin.x = FLOOR((myWidth - shadowWidth) / 2); + shadowFrame.size.width = shadowWidth; + [_sheetShadowView setFrame:shadowFrame]; +} + - (CGSize)_minimumResizeSize { return _CGSizeMake(0, _CPWindowViewMinContentHeight); } +- (int)bodyOffset +{ + return [self frame].origin.y; +} + @end diff --git a/AppKit/Platform/DOM/CPDOMWindowLayer.j b/AppKit/Platform/DOM/CPDOMWindowLayer.j index 4336d60c8..cb693f20c 100644 --- a/AppKit/Platform/DOM/CPDOMWindowLayer.j +++ b/AppKit/Platform/DOM/CPDOMWindowLayer.j @@ -142,33 +142,24 @@ // First check to see if the window is already clipped. // If so, just update its rect. var windowElement = aWindow._DOMElement, - clip = windowElement.parentNode, - style = clip.style, - isClipped = style.className === "cpwindowclip"; - - if (!isClipped) - { - clip = document.createElement("div"); - + clip = document.createElement("div"), style = clip.style; - style.className = "cpwindowclip"; - style.position = "absolute"; - style.overflow = "hidden"; - } + + style = clip.style; + style.className = "cpwindowclip"; + style.position = "absolute"; + style.overflow = "hidden"; style.left = clipRect.origin.x + "px"; style.top = clipRect.origin.y + "px"; style.width = clipRect.size.width + "px"; style.height = clipRect.size.height + "px"; - if (!isClipped) - { - // Replace the window with the clip element, then put it inside the clip - var parent = windowElement.parentNode; - CPDOMDisplayServerInsertBefore(parent, clip, windowElement); - CPDOMDisplayServerRemoveChild(parent, windowElement); - CPDOMDisplayServerAppendChild(clip, windowElement); - } + // Replace the window with the clip element, then put it inside the clip + var parent = windowElement.parentNode; + CPDOMDisplayServerInsertBefore(parent, clip, windowElement); + CPDOMDisplayServerRemoveChild(parent, windowElement); + CPDOMDisplayServerAppendChild(clip, windowElement); } /*! @@ -178,19 +169,13 @@ - (void)removeClipForWindow:(CPWindow)aWindow { var windowElement = aWindow._DOMElement, - clip = windowElement.parentNode; + clip = windowElement.parentNode, + parent = clip.parentNode; - if (clip.style.className === "cpwindowclip") - { - var parent = clip.parentNode; - - CPDOMDisplayServerRemoveChild(clip, windowElement); - [aWindow setFrameOrigin:_CGPointMake([aWindow frame].origin.x, clip.offsetTop)]; - CPDOMDisplayServerInsertBefore(parent, windowElement, clip); - CPDOMDisplayServerRemoveChild(parent, clip); - } - else - CPLog.warn("%s %s was not previously clipped via clipWindow:toWindow:", _cmd, [aWindow description]); + CPDOMDisplayServerRemoveChild(clip, windowElement); + [aWindow setFrameOrigin:_CGPointMake([aWindow frame].origin.x, clip.offsetTop)]; + CPDOMDisplayServerInsertBefore(parent, windowElement, clip); + CPDOMDisplayServerRemoveChild(parent, clip); } @end diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index 5a33ec887..8c957aea9 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -2350,6 +2350,7 @@ var themedButtonValues = nil, [@"window-shadow-color", shadowColor], [@"resize-indicator", resizeIndicator], [@"attached-sheet-shadow-color", sheetShadow], + [@"shadow-height", 8], [@"size-indicator", CGSizeMake(12, 12)] ]; @@ -2457,7 +2458,6 @@ var themedButtonValues = nil, minimizeButtonImage = PatternImage(@"window-standard-minimize-button.png",16, 16), minimizeButtonImageHighlighted = PatternImage(@"window-standard-minimize-button-highlighted.png",16, 16), - sheetShadow = PatternColor(@"window-attached-sheet-shadow.png", 1, 8), resizeIndicator = PatternImage(@"window-resize-indicator.png", 12, 12), themeValues = @@ -2492,7 +2492,6 @@ var themedButtonValues = nil, [@"close-image-origin", CGPointMake(8.0, 10.0)], [@"resize-indicator", resizeIndicator], - [@"attached-sheet-shadow-color", sheetShadow], [@"size-indicator", CGSizeMake(12, 12)] ]; @@ -2518,13 +2517,9 @@ var themedButtonValues = nil, [@"window-standard-bottom-right.png", 2.0, 2.0] ]), - sheetShadow = PatternColor(@"window-attached-sheet-shadow.png", 1, 8), - themeValues = [ - [@"body-color", bezelColor], - [@"shadow-height", 8], - [@"attached-sheet-shadow-color", sheetShadow] + [@"body-color", bezelColor] ]; [self registerThemeValues:themeValues forView:docModalWindowView inherit:themedWindowViewValues]; diff --git a/AppKit/Themes/Aristo2/Artwork/Aristo 11-06-07.psd b/AppKit/Themes/Aristo2/Artwork/Aristo 11-06-07.psd index 3ff6d3e5f9d31f9e227786b83ae28e9d9ca1e0d5..ef95c237fc1b6b75aed15cde9cdf4da937a07c8a 100755 GIT binary patch delta 153346 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 B=PdvL delta 259774 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

-ZBl1QU zT{wN##q%${;>yw`Wo6CFDwlnz#)CKeB&Aqr}=JY9(ipCV=B8o{;SW!$|*n(E)ilt)7%^y8( z!lcPlr_Y!*dvFOx6;SG*h<6Bq|i_su2?VW zSvh$HqsJCam{fe>oE8@|l zqz@mFlb2sOdd#>BE+}dqUpfAx@u@`@Trh6T=)(NGoDstzxNn>q7dCci1IRv95i(~; z^018Imh9Y-dHDqeO@)<(9~O!QL-X@S=4M-lXADcG$cVPkhqQ zlwm@8#_%l5h-_!hSp*dNIM>I;!6JeMqxTIk=B9J?2X{|a z#wc?W`Sch$>{x%i59qPbp9}(>2T{C`EaUoB*yUmk|>{ z%75@<6a7%cI3gAt-N*M?wI)V%qNlAg*ohS+8)i=U6ydIfL~5 zJJNeL|3SRjcYFy_ulEADo(0C00ciZ)$Gqb2KE~qjdfsadx!1qbA|iLvr%6<|ymP%2 z?N_FvfrSPC$inh#|2W3-8|Al0efR1q9sl|W(I*7=_#Yu5JmWttzQGs5oqtd54XO~z z@!uoD;FW|c|AU%mWi>17KN3Rt)&C$1q0GOh{s&J8mjA(H=hw+S`HzecKJ`E7LU{5Y ziP~qk91MD%-4h;USVpthISLufIFm09P~mbTyumQpIQmmSkXmP6}8p1o{Nz-675dhs)Ng$ zPRq#J65QZJsv9XXu81->RuEF#KrDDlbNW2t#PW8Ed!ZY+0{2XD4W(X}P!-Wjs1i$Y zQO!iKWE;*6*zr%?`@Qe!9Y% zei2gQ)}N9FQe8_d$YllDsjI@JRTZS7{yruVz0QcMXzU>7>IRFsey2s;3GvI#4OJG= zWdGA0?t7!u=7#!e3vQG`Ud$ux=YDU^*3g@Rp0|&>-I{(yTs4HPuAq!+>&-=tGc2+4FHGmN9_d|Ms3FR_ zL1L}7C$6xL*3jatvM>09b(AYpf4SY7cL7&Rw2h^W6=FGVMyK^hOUrd-Q;Arl$cPKg zWdGR;+*u`64p&j%MKlfNRBB?k{lS{y!mhvFIx<09RV$hs8+OXT8%c`&{uS0#&SbAy z;VyL(tq*!FltnB;sXy}vcd2*XZXHokt@&*SHtLf!u z^2ei6x_K=ppx>TE^3(sDhUxI`W0EEJ&r9GOhJNa$rX}e90hYz|dD!sKmpn; zO%bp#d-2p=|1Utzf5hhW{}oBm4nRQ@MNeJ)W7)bga=5w9QOECHm3AM7Gy1f>tg?(N zJKV?~HV~fs%|86z_Z#jL;t%vVQN>)jx8+B1od_h+A*wo$>`q^U@k=!b6ba8-C72WR(U*j?pTVy)_8<_8TO2LC>! z?t5aPw}SVbHRCMwqRje&B=--OuZubsa@Qu+jsp2h5J&gLg6}&?9PxBE}nbzt>cKWI|B-L zQ7DCraUjNL97t#50G=wxfppI}a6`axz%$ZSx5;6)9SVl&a=A{8C(MLZt;aI_esjuql!V`5sOozYr&yXg>R^v^B}-@hWZ zAhFtLPRYzZmiut77G8{_3-a??a=UW1*_kP3qnf)vXxgnr x5M^2nMcfs+64=>bS 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 diff --git a/AppKit/Themes/Aristo2/Resources/window-standard-bottom-center.png b/AppKit/Themes/Aristo2/Resources/window-standard-bottom-center.png index 39396fe31d61b1c1ff909269fcd4f803f51bf836..7312a639dc308de2c9246f1c900994f27bedd3b3 100644 GIT binary patch delta 590 zcmV-U0wGfA+3#%W5kfSj%Un6ZrG{ z4+vD9z%TOx7i}gt>f_PM$K$6}b=+2Q4e#EA+n)DL+elY}zS-%H_X#X(vzFYy2Q`A= z1aaF0rh@@|EgnE-tOWC5I;k)rfU$tg=8TbdfMP-s_Loh_jL#XTAvhoCquKh2FGYTi z<)s8}oNGBke}}^%I7|a$pAm`Uc<@2##3Lr%i*{u{(cR7HLCCJMs&&d}Fv#WF>|Fxk zSVGel#l^Aif>S|3Wg66%Eg}I%O@l^s=a%y6I=WlEv=S|4XZE&|9)9yjsO!`L=(FLU zt@58z?u4oKjnwX5B+y%eTGbqr$agWE;gDh$5fT#|e+!YbJWcZ{6Lj?P8aHKP9xrAj zqOl-kLDO&{vY60Cnk^WM!jXHgJ6GyTj$HMdi?4EdW@YJ&T^X|*C*WaYoar{E1=%A5 zZ;G-~dQiL_KIojQwCbCzb88xK>M&QYWPs`4l}9+5=6U=fqdA?5FokDs{XbnpJ{k1S zxQr@4NQ1-kGW=e+tdG=wXRKe2U$Q+0aC`>FI{*Lx7)eAyR0vyR`1k}si3N}(e;IT|SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM00HJ{ zR9JLaO-wptZ*4ANWN%_+E_iKl0096104R~2Q_YT>Fc5wf%X?|1f`3R1SW8zF2Xzm$ zt8Aq9O2E6Z5->7O!{*g`=p*$NYNC+-Xq7`PA3QVPH-DbFf4v*Jvf4@u*78}k3H!rT@r z1hLx$rlSFTEgnFojRbQ)@G49QV9Y18Ib-AVBg;kUcW+ zrYI}bj*7SA2c2`3MtzfYZgc}q9p>tl3^4t>@(4#kp2r_Dn$tjpDLixQ|LGcX$)JD6 zWm35rA{?KW;djDiePru)#<=D91>k`OmUds^j{pDwIY~r8R0!9RD>o1z^G`tl0000< KMNUMnLSTX+attE? delta 34 ocmeBVEt;UhZt3ab7{U=f*@?+qU^Sn+E&~vFy85}Sb4q9e0GCk+w*UYD diff --git a/AppKit/Themes/Aristo2/Resources/window-standard-bottom-right.png b/AppKit/Themes/Aristo2/Resources/window-standard-bottom-right.png index 00a92564ae6573157d64be643a24ef6e7626485a..756701d20d1a432bb1456a9726202fc1cdfd256a 100644 GIT binary patch delta 573 zcmV-D0>b@riUp7)e;IT|SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM00HM| zR9JLaO-wptZ*4ANWN%_+E_iKl0096104R~2Q_YT>Fc5wf%X?|12LBKYSW8zF2Xzm$ zt8Aq9O2E6Z5->7O!{*g`=p*$NYNC+-Xq7`PA3QVPH-DbFf4v*Jvf4@u*78}k3H`pDhlqz!)1V36+ogQEj_y}4okUC7>%FO@gWvoS>N<4mt!j=*A3O zXe&@^0#EGBf3W(&rmaN^##y)D~HPF(eyJHN{1nUST{W~KFRnt+Fmwz}Ww4rGrE zyeY~`wWH$g_(A7frBUBxog3YNQ-`^FB?CIkW%!+NSs&TDoiT1XegV7n26&La6J`Ja069rSK~xCWkt;V4G@ImW00000 LNkvXXu0mjfv;Pi= delta 34 ocmeBTEt;UhZt3ab7{U=f*_p{)V1L>hb_O8uboFyt=akR{0Hp^BqyPW_ diff --git a/AppKit/Themes/Aristo2/Resources/window-standard-center-center.png b/AppKit/Themes/Aristo2/Resources/window-standard-center-center.png index 1830f6d53d1352c83a53a873ae688f2d121cd253..46b33352dbb5d004e5a9d7c1d213f2b5df974a08 100644 GIT binary patch delta 593 zcmV-X0eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00HS~R9JLaO-wptZ*4ANWN%_+E_iKl0096104R~2Q_YT>Fc5wf%X?|1 z2LF&4u$HbU26Yd#t8Aq9O2E582{tlL!{*g`=p*$NYSIw3f7L37T0VGYzHk0Kb9*;* zWwn(StmSi~V)*m>4+xq%hF=y1F1l21nvX{#ACI3_)p1)zHN1NdZU;WJT`O$~hIXfV zKE$xB^;&ZG9@Pkf6U1&~n2ZMSwRixjHWDm6e^y~a0An7RFBl{50L6qN>@J&;IbSeN z18_djMKkpie_x9H9Lq^D+*sRjgbs&;ckn%Jo)L+nX!Jqp%pqp|i?Zb~Q~k~4LCC%` zO=laez$lk%y|*!hQweQX6c@*;_f7?Qm2S~cc8GWwwJn;^y*#*<(n++Gz22Kj zI{3{Wp{`R$pv#7THjVp~awl}PZ>6&LB8JZ5)lJPYe+gX|gEG-E6bChooJZK*0bahu;<8fIZ~mCI8jORLRF z>)kW~4;yWDztJ5?9~pR4lvSff#oO_N&bdm{e3Nx^8uA{0000CNklUS1;PU00-nx~00000NkvXXu0mjfT=)i@ delta 64 zcmcc55;Q@=ijkRtfkE|l*eM{z9N-h;`t|GA4Vm-1fLtz57sn6|+2jNun~8z({0Y;i PKo*0itDnm{r-UW|RM8So diff --git a/AppKit/Themes/Aristo2/Resources/window-standard-center-left.png b/AppKit/Themes/Aristo2/Resources/window-standard-center-left.png index cbffd9b5a41e5e400cc75d3035a341f202a867d2..ad7cf8c281678df95b61ccd71e413ed3499bc4b7 100644 GIT binary patch delta 585 zcmV-P0=E53;{=c-e;IT|SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM00HJ{ zR9JLaO-wptZ*4ANWN%_+E_iKl0096104R~2Q^{`IFcAF}g1NLnEiSStiHI7gTF@NS z29AODDoadE*dhgrt`+}U5B;S6LMg*?7X&_(;DIyq-fWz?f4v*Js@@6<*5X;J82xt zLF_h$$!Gvy%LkBZBf!G*XEi1SFy@i@f-&+AP)sPo?y?z~^9AEH0Otc;G}AosWmcSH zIVpx4Yden6f8lWO4!)<&Ga^wGjXo%yImE1gQMMXps=t{$WTLN)?5xxZjB>TsdmBSI zmC$x&d2y_I?^KXi>lO`Fhlqz!+oB2G+ogEAj_y}4oj^;`>%FOkgWvoS>N<4l`| zDXUtlQSo;CpmVOm$Zw)4jBdfH!(6_S0j7Uf9^%k1is(a13+iV<0?*v$f4YWTGU%Ui znN)5DL&xW3_?>WBAEDgN7`Gh10KmHjd@VhibN~PV6G=otR0vyRU|?WS`}+0ke`E{* Xh1(CG<>fpJ00000NkvXXu0mjfLH!i< delta 46 zcmaFN;xj=-L)g>BF@!@lIUyk-;P93@NM{y%vdkk7@+L z31YV?%tizFT0VeW8v*8i;MJHAz?e^FbH>O!Krx{RyURQ>OXe)0AvhoCqM7C?S@Pl> z%SkERSlcBCe;p17{}A}vJR=gv@#uq6&mp}2McHcbRDUyh;G(aM?5xxZjB>Tsdz(Ty zmC$x&d2y_I|5T7)>lO`Fhlr0++oB2G+ogEAj_y}4oj^;`>%FOkgWvoS>N<4o6jQl2=!sr&9I-JN?GQjlj$|D>FMG=3GM zmr3PjLvVavhTjR7^%2VLjB(5H3)aa7j;R)a?EnA(6G=otR0vyR`1I X!CMcXf502+00000NkvXXu0mjfGFcW9 delta 46 zcmaFN;xj=-L)g>BF@!@l`NyxXuj^CJ95}Fmjp1N4|NPU2*ZCQMz|+;wWt~$(69Bnn B5)uFa diff --git a/AppKit/Themes/Aristo2/Resources/window-standard-top-left.png b/AppKit/Themes/Aristo2/Resources/window-standard-top-left.png index bc1d5b3a8ba5ded3257012475c23d475760d1823..2a3df104f5f89adec26ca6644efc656a46ab3edf 100644 GIT binary patch delta 591 zcmV-V0(7@e;IT|SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM00HJ{ zR9JLaO-wptZ*4ANWN%_+E_iKl0096104R~2Q%i2!Fc7^8!E9Qf7C*KriHI7gqJ?Im zHgF8ITUlaa!WJn|bglSmUGzx3LMg*?KM1@i!3AgLz4>wGfA+3#%W5kfSj%Un6ZrG{ z4+vD9z%TOx7i}gt>f_PM$K$6}b=+2Q4e#EA+n)DL+elY}zS-%H_X#X(vzFYy2Q`A= z1aaF0rh@@|EgnE-tOWC5I;k)rfU$tg=8TbdfMP-s_Loh_jL#XTAvhoCquKh2FGYTi z<)s8}oNGBke}}^%I7|a$pAm`Uc<@2##3Lr%i*{u{(cR7HLCCJMs&&d}Fv#WF>|Fxk zSVGel#l^Aif>S|3Wg66%Eg}I%O@l^s=a%y6I=WlEv=S|4XZE&|9)9yjsO!`L=(FLU zt@58z?u4oKjnwX5B+y%eTGbqr$agWE;gDh$5fT#|e+!YbJWcZ{6Lj?P8aHJEXR~M# z(O3|&plP@eSxo36%@&MB;mEz$ohx-EN3QzK6<4`Dv$Ax?u8i4@6Y#Jx&U72og6xrj zH$_<~Jt*D|A9T)DTJ=rVxit+qb(pJHGQjlj$|D?2^F02L(VR|2n8Gu+{-3TPpA7nE zTt=0jNx|WH8GbKZ)<KR00kwWV?Ru6{1-oD!M< D&@K`X diff --git a/AppKit/Themes/Aristo2/Resources/window-standard-top-right.png b/AppKit/Themes/Aristo2/Resources/window-standard-top-right.png index 096e807e8db43a3805956f4775018025352d0690..03bed6695ac1c8f66f0afd1adb7e88cee153d6bc 100644 GIT binary patch delta 595 zcmV-Z0<8T{?F5h{e;IT|SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM00HJ{ zR9JLaO-wptZ*4ANWN%_+E_iKl0096104R~2Q^{`IFcAF}g1NLnEiSStiHI7gTF@NS z29AODDoadE*dhgrt`+}U5B;S6LMg*?7X&_(;DIyq-fWz?f4v*Js@@6<*5X;J82xt zLF_h$$!Gvy%LkBZBf!G*XEi1SFy@i@f-&+AP)sPo?y?z~^9AEH0Otc;G}AosWmcSH zIVpx4Yden6f8lWO4!)<&Ga^wGjXo%yImE1gQMMXps=t{$WTLN)?5xxZjB>TsdmBSI zmC$x&d2y_I?^KXi>lO`Fhlqz!+oB2G+ogEAj_y}4oj^;`>%FOkgWvoS>N<4l`| zDXUtlQSo;CpmVOm$Zw)4jBdfH!(6_S0j7Uf9^%k1is(a13+iV<0?*v$f4YWTGU%Ui znN)5DO~>bD_?>WBAEDgN7`Gh10Jj4MbRfRm82|tP9Z5t%R0vyRWME)WV?YCpU%!6+ hk1W8=&8<$MAOJg?5X2J~uBHG0002ovPDHLkV1mKK7 Date: Tue, 12 Mar 2013 11:33:12 -0400 Subject: [PATCH 15/78] Fixed: resizeWithOldSuperviewSize did not maintain size ratio Previously, Cappuccino would resize in such a way that a view's size ratio to its superview would not be maintained. This commit ensures that size ratios are maintained during resizing. Patch contributed by @davidkhess Fixes #357 --- AppKit/CPView.j | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/AppKit/CPView.j b/AppKit/CPView.j index 49e0e4aea..55a139c81 100644 --- a/AppKit/CPView.j +++ b/AppKit/CPView.j @@ -1188,20 +1188,28 @@ var CPViewFlags = { }, var frame = _superview._frame, newFrame = _CGRectMakeCopy(_frame), - dX = (_CGRectGetWidth(frame) - aSize.width) / - (((mask & CPViewMinXMargin) ? 1 : 0) + (mask & CPViewWidthSizable ? 1 : 0) + (mask & CPViewMaxXMargin ? 1 : 0)), - dY = (_CGRectGetHeight(frame) - aSize.height) / - ((mask & CPViewMinYMargin ? 1 : 0) + (mask & CPViewHeightSizable ? 1 : 0) + (mask & CPViewMaxYMargin ? 1 : 0)); + dX = frame.size.width - aSize.width, + dY = frame.size.height - aSize.height, + evenFractionX = 1.0 / ((mask & CPViewMinXMargin ? 1 : 0) + (mask & CPViewWidthSizable ? 1 : 0) + (mask & CPViewMaxXMargin ? 1 : 0)), + evenFractionY = 1.0 / ((mask & CPViewMinYMargin ? 1 : 0) + (mask & CPViewHeightSizable ? 1 : 0) + (mask & CPViewMaxYMargin ? 1 : 0)), + baseX = (mask & CPViewMinXMargin ? _frame.origin.x : 0) + + (mask & CPViewWidthSizable ? _frame.size.width : 0) + + (mask & CPViewMaxXMargin ? aSize.width - _frame.size.width - _frame.origin.x : 0), + baseY = (mask & CPViewMinYMargin ? _frame.origin.y : 0) + + (mask & CPViewHeightSizable ? _frame.size.height : 0) + + (mask & CPViewMaxYMargin ? aSize.height - _frame.size.height - _frame.origin.y : 0); if (mask & CPViewMinXMargin) - newFrame.origin.x += dX; + newFrame.origin.x += dX * (baseX > 0 ? _frame.origin.x / baseX : evenFractionX); + if (mask & CPViewWidthSizable) - newFrame.size.width += dX; + newFrame.size.width += dX * (baseX > 0 ? _frame.size.width / baseX : evenFractionX); if (mask & CPViewMinYMargin) - newFrame.origin.y += dY; + newFrame.origin.y += dY * (baseY > 0 ? _frame.origin.y / baseY : evenFractionY); + if (mask & CPViewHeightSizable) - newFrame.size.height += dY; + newFrame.size.height += dY * (baseY > 0 ? _frame.size.height / baseY : evenFractionY); [self setFrame:newFrame]; } From 445045565bb81ad5d302a72eb77dd0b1f4fe4676 Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Tue, 12 Mar 2013 12:20:58 -0400 Subject: [PATCH 16/78] Fixed: frame/bounds change notification was sent unconditionally. Previously, calling setPostsFrameChangedNotifications:YES or setPostsBoundsChangedNotifications:YES would immediately result in the notification being sent. Cocoa will only send in this context if: - setPosts[Frame/Bounds]ChangedNotifications:NO was called. - The frame/bounds changed between that call and the call to setPosts[Frame/Bounds]ChangedNotifications:YES. We are currently not tracking pending changes, so this commit removes the sending of the notification completely in those methods. Fixes #1076 --- AppKit/CPView.j | 6 ------ 1 file changed, 6 deletions(-) diff --git a/AppKit/CPView.j b/AppKit/CPView.j index 55a139c81..5d2c042c1 100644 --- a/AppKit/CPView.j +++ b/AppKit/CPView.j @@ -1994,9 +1994,6 @@ setFrameOrigin: return; _postsFrameChangedNotifications = shouldPostFrameChangedNotifications; - - if (_postsFrameChangedNotifications) - [CachedNotificationCenter postNotificationName:CPViewFrameDidChangeNotification object:self]; } /*! @@ -2027,9 +2024,6 @@ setBoundsOrigin: return; _postsBoundsChangedNotifications = shouldPostBoundsChangedNotifications; - - if (_postsBoundsChangedNotifications) - [CachedNotificationCenter postNotificationName:CPViewBoundsDidChangeNotification object:self]; } /*! From fd49bd2f2d6b525774dcc558fe88466f85f707c9 Mon Sep 17 00:00:00 2001 From: aparajita Date: Tue, 12 Mar 2013 13:40:18 -0300 Subject: [PATCH 17/78] Update CONTRIBUTING.md Updated commit message section. --- CONTRIBUTING.md | 142 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 113 insertions(+), 29 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5a04118e8..1bde4969b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,43 +33,127 @@ Some things are difficult to unit test in a way that's worthwhile. For instance The style and format of your commit messages are very important to the health of the project. A good commit message helps not only users reading the release notes, but also your fellow Cappuccino developers as they review `git log` or `git blame` to figure out what you were doing. -This is the preferred format of commit messages for complex changes: +Commit messages should be in the following format: - [New:] + :

- [OPTIONAL DESCRIPTION ABOUT WHAT THIS THING DOES.] + -Or for fixes: +