From 6eace4258f43cb53eb0410c2ad3cf20c363149f7 Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sun, 18 Sep 2011 16:06:23 -0400 Subject: [PATCH 001/114] -initial stab at doc-modal sheets --- AppKit/CPWindow/CPWindow.j | 27 ++++++++++++++++++++++++++- AppKit/CPWindow/_CPWindowView.j | 14 ++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 933e03c90..c14103df9 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -791,6 +791,10 @@ CPTexturedBackgroundWindowMask - (void)setFrameOrigin:(CGPoint)anOrigin { [self _setClippedFrame:_CGRectMake(anOrigin.x, anOrigin.y, _CGRectGetWidth(_frame), _CGRectGetHeight(_frame)) display:YES animate:NO]; + + // reposition sheet + if ([self attachedSheet]) + [self _setAttachedSheetFrameOrigin]; } /*! @@ -1469,6 +1473,25 @@ CPTexturedBackgroundWindowMask var type = [anEvent type], point = [anEvent locationInWindow]; + // If a sheet is attached events get filtered here. + // It is not clear what events should be passed to the view, perhaps all? + // CPLeftMouseDown is needed for window moving and resizing to work. + // CPMouseMoved is needed for rollover effects on title bar buttons. + if ([self attachedSheet]) + { + switch (type) + { + case CPLeftMouseDown: + [_windowView mouseDown:anEvent]; + break; + case CPMouseMoved: + [_windowView mouseMoved:anEvent]; + break; + } + + return; + } + switch (type) { case CPFlagsChanged: return [[self firstResponder] flagsChanged:anEvent]; @@ -2245,7 +2268,9 @@ CPTexturedBackgroundWindowMask endFrame = CGRectMake(originx, originy, sheetFrame.size.width, sheetFrame.size.height); [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowWillBeginSheetNotification object:self]; - [CPApp runModalForWindow:aSheet]; + + // old behavior; in Cocoa, sheets are not modal by default + //[CPApp runModalForWindow:aSheet]; [aSheet orderFront:self]; [aSheet setFrame:startFrame display:YES animate:NO]; diff --git a/AppKit/CPWindow/_CPWindowView.j b/AppKit/CPWindow/_CPWindowView.j index 6a9f62894..e7936dd5a 100644 --- a/AppKit/CPWindow/_CPWindowView.j +++ b/AppKit/CPWindow/_CPWindowView.j @@ -140,7 +140,7 @@ var _CPWindowViewResizeIndicatorImage = nil; var newSize = CGSizeMake(CGRectGetWidth(_resizeFrame) + location.x - CGRectGetMinX(_resizeFrame), CGRectGetHeight(_resizeFrame) + location.y - CGRectGetMinY(_resizeFrame)); if (theWindow._isSheet && theWindow._parentView && (theWindow._frame.size.width !== newSize.width)) - [theWindow._parentView _setAttachedSheetFrameOrigin]; + [theWindow._parentView _setAttachedSheetFrameOrigin]; [theWindow setFrameSize:newSize]; } @@ -195,7 +195,6 @@ var _CPWindowViewResizeIndicatorImage = nil; location = [theWindow convertBaseToGlobal:[anEvent locationInWindow]], origin = [self _pointWithinScreenFrame:CGPointMake(_CGRectGetMinX(frame) + (location.x - _mouseDraggedPoint.x), _CGRectGetMinY(frame) + (location.y - _mouseDraggedPoint.y))]; - [theWindow setFrameOrigin:origin]; _mouseDraggedPoint = [self _pointWithinScreenFrame:location]; @@ -204,6 +203,17 @@ var _CPWindowViewResizeIndicatorImage = nil; [CPApp setTarget:self selector:@selector(trackMoveWithEvent:) forNextEventMatchingMask:CPLeftMouseDraggedMask | CPLeftMouseUpMask untilDate:nil inMode:nil dequeue:YES]; } +- (void)setFrameSize:(CGSize)newSize +{ + [super setFrameSize:newSize]; + + // reposition sheet if the parent window resizes or moves + var theWindow = [self window]; + + if ([theWindow attachedSheet]) + [theWindow _setAttachedSheetFrameOrigin]; +} + - (void)setShowsResizeIndicator:(BOOL)shouldShowResizeIndicator { if (shouldShowResizeIndicator) From 2a82703e468d19c49ed9df3db84d2ee25ec13b3f Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Tue, 15 Nov 2011 10:14:07 -0500 Subject: [PATCH 002/114] -fix uninitialized _selectedRange member when loading from cib --- AppKit/CPTokenField.j | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index 84ee318da..60ddb0273 100755 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -97,7 +97,6 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", { if (self = [super initWithFrame:frame]) { - _selectedRange = CPMakeRange(0, 0); _completionDelay = [CPTokenField defaultCompletionDelay]; _tokenizingCharacterSet = [[self class] defaultTokenizingCharacterSet]; [self setBezeled:YES]; @@ -114,6 +113,8 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", - (void)_init { + _selectedRange = CPMakeRange(0, 0); + var frame = [self frame]; _tokenScrollView = [[CPScrollView alloc] initWithFrame:CGRectMakeZero()]; From 3c7783f97c6d46cf6efab33fb0383125445b8f3b Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Tue, 15 Nov 2011 10:31:44 -0500 Subject: [PATCH 003/114] Revert "-fix uninitialized _selectedRange member when loading from cib", putting in another branch This reverts commit 2a82703e468d19c49ed9df3db84d2ee25ec13b3f. --- AppKit/CPTokenField.j | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index 60ddb0273..84ee318da 100755 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -97,6 +97,7 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", { if (self = [super initWithFrame:frame]) { + _selectedRange = CPMakeRange(0, 0); _completionDelay = [CPTokenField defaultCompletionDelay]; _tokenizingCharacterSet = [[self class] defaultTokenizingCharacterSet]; [self setBezeled:YES]; @@ -113,8 +114,6 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", - (void)_init { - _selectedRange = CPMakeRange(0, 0); - var frame = [self frame]; _tokenScrollView = [[CPScrollView alloc] initWithFrame:CGRectMakeZero()]; From a2eb9e728c2fbf85449898c3bf9bf65684be1a83 Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Thu, 24 Nov 2011 19:28:04 -0500 Subject: [PATCH 004/114] Various fixes for sheet bugs -handle attempt to close sheet while it is animating in -fixes Safari 5.1 animate out bug by using a timer to initiate the in/out process -allow window shadow to become 0 width/height for smoother animation --- AppKit/CPWindow/CPWindow.j | 126 ++++++++++++++++++++++++++++++++----- 1 file changed, 109 insertions(+), 17 deletions(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index a4a4c04bc..994196afd 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -753,11 +753,26 @@ CPTexturedBackgroundWindowMask size.width = newSize.width; size.height = newSize.height; + //CPLog.debug("%@ %@ view=%dx%d", [self class], _cmd, size.width, size.height); [_windowView setFrameSize:size]; if (_hasShadow) - [_shadowView setFrameSize:_CGSizeMake(SHADOW_MARGIN_LEFT + size.width + SHADOW_MARGIN_RIGHT, SHADOW_MARGIN_BOTTOM + size.height + SHADOW_MARGIN_TOP + SHADOW_DISTANCE)]; - + { + // if the shadow would be taller/wider than the window height, + // make it the same as the window height. this allows views to + // become 0,0 with no shadow on them and makes the sheet + // animation look nicer + var shadowSize = _CGSizeMake(size.width,size.height); + + if (size.width >= (SHADOW_MARGIN_LEFT + SHADOW_MARGIN_RIGHT)) + shadowSize.width += SHADOW_MARGIN_LEFT + SHADOW_MARGIN_RIGHT; + + if (size.height >= (SHADOW_MARGIN_BOTTOM + SHADOW_MARGIN_TOP + SHADOW_DISTANCE)) + shadowSize.height += SHADOW_MARGIN_BOTTOM + SHADOW_MARGIN_TOP + SHADOW_DISTANCE; + + [_shadowView setFrameSize:shadowSize]; + } + if (!_isAnimating) [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidResizeNotification object:self]; } @@ -2270,8 +2285,64 @@ CPTexturedBackgroundWindowMask } /* @ignore */ -- (void)_attachSheetWindow:(CPWindow)aSheet +- (void)_attachSheetWindow:(CPWindow)sheet { + // fixme: a run loop for the sheet animations should be created, + // that defers all other events until the animation is completed, + // the timer will assure that the animation timer fires on the + // special sheet runloop + + [CPTimer scheduledTimerWithTimeInterval:0.0 + target:self + selector:@selector(sheetShouldAnimateIn:) + userInfo:sheet + repeats:NO]; +} + +/* @ignore */ +- (void)_detachSheetWindow +{ + var sheet = [self attachedSheet]; + + if (!sheet) + return; + + [CPTimer scheduledTimerWithTimeInterval:0.0 + target:self + selector:@selector(sheetShouldAnimateOut:) + userInfo:sheet + repeats:NO]; +} + +/* @ignore */ +- (void)animationDidEnd:(id)anim +{ + var sheet = _sheetContext["sheet"]; + if (anim._window != sheet) + return; + + [CPTimer scheduledTimerWithTimeInterval:0.1 + target:self + selector:@selector(sheetAnimationDidEnd:) + userInfo:sheet + repeats:NO]; +} + +- (void)sheetShouldAnimateIn:(CPTimer)timer +{ + // can't open sheet while its open + if (_sheetContext["isOpening"]) + return; + + // can't open sheet while its closing + if (_sheetContext["isClosing"]) + { + _sheetContext["shouldOpen"] = YES; + return; + } + + var aSheet = [timer userInfo]; + var sheetFrame = [aSheet frame], frame = [self frame], sheetContent = [aSheet contentView]; @@ -2294,47 +2365,68 @@ CPTexturedBackgroundWindowMask [aSheet orderFront:self]; [aSheet setFrame:startFrame display:YES animate:NO]; _sheetContext["opened"] = YES; - + _sheetContext["shouldClose"] = NO; + _sheetContext["isOpening"] = YES; + [aSheet _setFrame:endFrame delegate:self duration:[self animationResizeTime:endFrame] curve:CPAnimationEaseOut]; // Should run the main loop here until _isAnimating = FALSE + + // NOTE: cocoa doesn't make window key until animation is done, but a + // keypress while animating eventually gets to the window. Therefore, + // there must be a runloop specifically designed for sheets? [aSheet becomeKeyWindow]; } -/* @ignore */ -- (void)_detachSheetWindow +- (void)sheetShouldAnimateOut:(CPTimer)timer { - var sheet = [self attachedSheet], + var sheet = [timer userInfo], startFrame = [sheet frame], endFrame = CGRectMakeCopy(startFrame); + if (_sheetContext["isOpening"]) + { + // handle the case where we wanted to close the sheet while it's opening + _sheetContext["shouldClose"] = YES; + return; + } + + if (_sheetContext["isClosing"]) + return; + endFrame.size.height = 0; - _sheetContext["frame"] = startFrame; - var sheetContent = [sheet contentView]; [self _setUpMasksForView:sheetContent]; - + _sheetContext["opened"] = NO; + _sheetContext["frame"] = startFrame; + _sheetContext["isClosing"] = YES; + [sheet _setFrame:endFrame delegate:self duration:[self animationResizeTime:endFrame] curve:CPAnimationEaseIn]; } -/* @ignore */ -- (void)animationDidEnd:(id)anim +- (void)sheetAnimationDidEnd:(CPTimer)timer { - var sheet = _sheetContext["sheet"]; - if (anim._window != sheet) - return; + //CPLog("%@ %@", [self class], _cmd); + var sheet = [timer userInfo]; + + _sheetContext["isOpening"] = NO; + _sheetContext["isClosing"] = NO; + var sheetContent = [sheet contentView]; if (_sheetContext["opened"] === YES) { [self _restoreMasksForView:sheetContent]; + + if (_sheetContext["shouldClose"] === YES) + [self _detachSheetWindow]; + return; } - [CPApp stopModal]; [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidEndSheetNotification object:self]; [sheet orderOut:self]; @@ -2348,7 +2440,7 @@ CPTexturedBackgroundWindowMask endSelector = _sheetContext["endSelector"], returnCode = _sheetContext["returnCode"], contextInfo = _sheetContext["contextInfo"]; - + _sheetContext = nil; sheet._parentView = nil; From 06348bbe0b574ed88a1f552e0099c949922fa1b0 Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Tue, 24 Apr 2012 20:54:09 -0400 Subject: [PATCH 005/114] -keep parent window behind sheet when orderFront: on sheet or left mouse down on parent window --- AppKit/CPWindow/CPWindow.j | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 994196afd..08ee7ec13 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -830,6 +830,10 @@ CPTexturedBackgroundWindowMask - (void)orderFront:(id)aSender { #if PLATFORM(DOM) + // -dw- if a sheet is clicked, the parent window should come up too + if ([self isSheet]) + [_parentView orderFront:self]; + [_platformWindow orderFront:self]; [_platformWindow order:CPWindowAbove window:self relativeTo:nil]; #endif @@ -1511,12 +1515,18 @@ CPTexturedBackgroundWindowMask // It is not clear what events should be passed to the view, perhaps all? // CPLeftMouseDown is needed for window moving and resizing to work. // CPMouseMoved is needed for rollover effects on title bar buttons. - if ([self attachedSheet]) + var sheet = [self attachedSheet]; + if (sheet) { switch (type) { case CPLeftMouseDown: [_windowView mouseDown:anEvent]; + + // -dw- if the window is clicked, the sheet should come to front, and become key, + // and the window should be immediately behind + [self orderFront:self]; + [sheet makeKeyAndOrderFront:self]; break; case CPMouseMoved: [_windowView mouseMoved:anEvent]; From 0f43cdee00b2aa1c50b56daec0f5daad2307a5dd Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Wed, 25 Apr 2012 21:04:38 -0400 Subject: [PATCH 006/114] -sheet attached to modal window runs in modal context -events in modal run loop get passed to sheet's parent window, so it can move and resize --- AppKit/CPApplication.j | 4 +++- AppKit/CPWindow/CPWindow.j | 13 +++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index 1e7a618ae..64c49d71f 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -1181,7 +1181,9 @@ _CPRunModalLoop = function(anEvent) var theWindow = [anEvent window], modalSession = CPApp._currentSession; - if (theWindow == modalSession._window || [theWindow worksWhenModal]) + if (theWindow == modalSession._window || + [theWindow worksWhenModal] || + [theWindow attachedSheet] == modalSession._window) [theWindow sendEvent:anEvent]; } diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 08ee7ec13..d10a203d7 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -2369,8 +2369,14 @@ CPTexturedBackgroundWindowMask [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowWillBeginSheetNotification object:self]; - // old behavior; in Cocoa, sheets are not modal by default - //[CPApp runModalForWindow:aSheet]; + // if sheet is attached to a modal window, the sheet runs + // as if itself and the parent window are modal + aSheet._isModal = NO; + if ([CPApp modalWindow]===self) + { + [CPApp runModalForWindow:aSheet]; + aSheet._isModal = YES; + } [aSheet orderFront:self]; [aSheet setFrame:startFrame display:YES animate:NO]; @@ -2454,6 +2460,9 @@ CPTexturedBackgroundWindowMask _sheetContext = nil; sheet._parentView = nil; + if (sheet._isModal) + [CPApp stopModal]; + if (delegate != nil && endSelector != nil) objj_msgSend(delegate, endSelector, sheet, returnCode, contextInfo); } From ce6444c30ee9dbf0b3988c779bb576134da744ef Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 28 Apr 2012 10:09:38 -0400 Subject: [PATCH 007/114] -implement CPWindow sheet notifications on delegate -raise error when window already has a sheet, or attaching sheet to a sheet --- AppKit/CPApplication.j | 13 +++++++++++++ AppKit/CPWindow/CPWindow.j | 17 +++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index 64c49d71f..a652f6915 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -933,6 +933,19 @@ CPRunContinuesResponse = -1002; return; } + if ([aWindow attachedSheet]) + { + [CPException raise:CPInternalInconsistencyException reason:@"The target window of beginSheet: already has a sheet"]; + return; + } + + if ([aWindow isSheet]) + { + [CPException raise:CPInternalInconsistencyException reason:@"The target window of beginSheet: cannot be a sheet"]; + return; + } + + [aWindow orderFront:self]; [aSheet setPlatformWindow:[aWindow platformWindow]]; [aWindow _attachSheet:aSheet modalDelegate:aModalDelegate didEndSelector:aDidEndSelector contextInfo:aContextInfo]; diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index d10a203d7..e0c10d082 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -1224,6 +1224,8 @@ CPTexturedBackgroundWindowMask [defaultCenter removeObserver:_delegate name:CPWindowDidResignMainNotification object:self]; [defaultCenter removeObserver:_delegate name:CPWindowDidMoveNotification object:self]; [defaultCenter removeObserver:_delegate name:CPWindowDidResizeNotification object:self]; + [defaultCenter removeObserver:_delegate name:CPWindowWillBeginSheetNotification object:self]; + [defaultCenter removeObserver:_delegate name:CPWindowDidEndSheetNotification object:self]; _delegate = aDelegate; _delegateRespondsToWindowWillReturnUndoManagerSelector = [_delegate respondsToSelector:@selector(windowWillReturnUndoManager:)]; @@ -1269,6 +1271,20 @@ CPTexturedBackgroundWindowMask selector:@selector(windowDidResize:) name:CPWindowDidResizeNotification object:self]; + + if ([_delegate respondsToSelector:@selector(windowWillBeginSheet:)]) + [defaultCenter + addObserver:_delegate + selector:@selector(windowWillBeginSheet:) + name:CPWindowWillBeginSheetNotification + object:self]; + + if ([_delegate respondsToSelector:@selector(windowDidEndSheet:)]) + [defaultCenter + addObserver:_delegate + selector:@selector(windowDidEndSheet:) + name:CPWindowDidEndSheetNotification + object:self]; } /*! @@ -2367,6 +2383,7 @@ CPTexturedBackgroundWindowMask 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 From 8bc4a287a66b6ec80461eb194a8cd7de7d9caafa Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 28 Apr 2012 11:31:01 -0400 Subject: [PATCH 008/114] -update docs for sheet notifications --- AppKit/CPWindow/CPWindow.j | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index e0c10d082..7143fea1a 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -257,6 +257,20 @@ var CPWindowActionMessageKeys = [ @param window the window to close @return \c YES allows the window to close. \c NO vetoes the close operation and leaves the window open. + + @delegate -(BOOL)windowWillBeginSheet:(CPNotification)notification; + Sent from the notification center before sheet is visible on + the delegate's window. + @param notification contains information about the event + + @delegate -(BOOL)windowDidEndSheet:(CPNotification)notification; + Sent from the notification center when an attached sheet on the + delegate's window has been animated out. Called before the + sheet's didEndSelector. + @param notification contains information about the event + + @return \c YES allows the window to close. \c NO + vetoes the close operation and leaves the window open. */ @implementation CPWindow : CPResponder { From 8fd5f30b870c66d5db72bade315dcc945da449fd Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 28 Apr 2012 20:28:09 -0400 Subject: [PATCH 009/114] -call orderOut: to dismiss the alert sheet --- AppKit/CPAlert.j | 3 +++ 1 file changed, 3 insertions(+) diff --git a/AppKit/CPAlert.j b/AppKit/CPAlert.j index 832c06443..c5ed7e7fe 100644 --- a/AppKit/CPAlert.j +++ b/AppKit/CPAlert.j @@ -631,7 +631,10 @@ CPCriticalAlertStyle = 2; - (@action)_takeReturnCodeFrom:(id)aSender { if ([_window isSheet]) + { [CPApp endSheet:_window returnCode:[aSender tag]]; + [_window orderOut:nil]; + } else { [CPApp abortModal]; From 66f55df44ad67762d93de4893b5f5763834b0c4a Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 28 Apr 2012 20:32:13 -0400 Subject: [PATCH 010/114] -use _endSheet to end sheets -do not call orderFront: if the sheet is already visible --- AppKit/CPApplication.j | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index a652f6915..374e6159e 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -933,21 +933,19 @@ CPRunContinuesResponse = -1002; return; } - if ([aWindow attachedSheet]) - { - [CPException raise:CPInternalInconsistencyException reason:@"The target window of beginSheet: already has a sheet"]; - return; - } - if ([aWindow isSheet]) { [CPException raise:CPInternalInconsistencyException reason:@"The target window of beginSheet: cannot be a sheet"]; return; } - - - [aWindow orderFront:self]; - [aSheet setPlatformWindow:[aWindow platformWindow]]; + + // -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. + if (![aWindow isVisible]) + { + [aWindow orderFront:self]; + [aSheet setPlatformWindow:[aWindow platformWindow]]; + } [aWindow _attachSheet:aSheet modalDelegate:aModalDelegate didEndSelector:aDidEndSelector contextInfo:aContextInfo]; } @@ -976,7 +974,7 @@ CPRunContinuesResponse = -1002; if (context != nil && context["sheet"] === sheet) { context["returnCode"] = returnCode; - [aWindow _detachSheetWindow]; + [aWindow _endSheet]; return; } } From c71f5baef263facf8ed62b501283395cc7da8f75 Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 28 Apr 2012 20:36:10 -0400 Subject: [PATCH 011/114] -implement orderOut: to control sheet dismissal -lots of comments and a few debug prints --- AppKit/CPWindow/CPWindow.j | 278 ++++++++++++++++++++++++------------- 1 file changed, 181 insertions(+), 97 deletions(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 7143fea1a..fff020616 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -265,7 +265,7 @@ var CPWindowActionMessageKeys = [ @delegate -(BOOL)windowDidEndSheet:(CPNotification)notification; Sent from the notification center when an attached sheet on the - delegate's window has been animated out. Called before the + delegate's window has been animated out. Called after the sheet's didEndSelector. @param notification contains information about the event @@ -347,6 +347,7 @@ var CPWindowActionMessageKeys = [ CPDictionary _sheetContext; CPWindow _parentView; BOOL _isSheet; + CPDictionary _nextSheetContext; _CPWindowFrameAnimation _frameAnimation; } @@ -417,10 +418,14 @@ CPTexturedBackgroundWindowMask _isFullPlatformWindow = NO; _registeredDraggedTypes = [CPSet set]; _registeredDraggedTypesArray = []; - _isSheet = NO; _acceptsMouseMovedEvents = YES; _isMovable = YES; + _isSheet = NO; + _sheetContext = nil; + _nextSheetContext = nil; + _parentView = nil; + // Set up our window number. _windowNumber = [CPApp._windows count]; CPApp._windows[_windowNumber] = self; @@ -844,10 +849,10 @@ CPTexturedBackgroundWindowMask - (void)orderFront:(id)aSender { #if PLATFORM(DOM) - // -dw- if a sheet is clicked, the parent window should come up too - if ([self isSheet]) - [_parentView orderFront:self]; - + // -dw- if a sheet is clicked, the parent window should come up too + if ([self isSheet]) + [_parentView orderFront:self]; + [_platformWindow orderFront:self]; [_platformWindow order:CPWindowAbove window:self relativeTo:nil]; #endif @@ -878,6 +883,15 @@ CPTexturedBackgroundWindowMask */ - (void)orderOut:(id)aSender { + if ([self isSheet]) + { + CPLog("%@ %@", [self class], _cmd); + + // -dw- as in Cocoa, orderOut: detaches the sheet and animates out + [self._parentView _detachSheetWindow]; + return; + } + #if PLATFORM(DOM) if ([self _sharesChromeWithPlatformWindow]) [_platformWindow orderOut:self]; @@ -2314,126 +2328,211 @@ CPTexturedBackgroundWindowMask [attachedSheet setFrame:sheetFrame display:YES animate:NO]; } -/* @ignore */ -- (void)_attachSheet:(CPWindow)aSheet modalDelegate:(id)aModalDelegate didEndSelector:(SEL)aDidEndSelector contextInfo:(id)aContextInfo +/* @ignore + Starting point for sheet session, called from CPApplication beginSheet: +*/ +- (void)_attachSheet:(CPWindow)aSheet modalDelegate:(id)aModalDelegate + didEndSelector:(SEL)aDidEndSelector contextInfo:(id)aContextInfo { + CPLog("%@ %@", [self class], _cmd); + + // the willAnimateOut flag is used to handle a sheet that is orderedOut, but + // has not finished animating yet. In this case, we allow the sheet + // attachment, and run the sheet as soon as the animation completes. + if (_sheetContext && !_sheetContext["willAnimateOut"]) + { + [CPException raise:CPInternalInconsistencyException + reason:@"The target window of beginSheet: already has a sheet, did you forget orderOut: ?"]; + return; + } + + // it is possible to call beginSheet: multiple times while animating a sheet out, because + // we do not block in _detachSheetWindow + if (_sheetContext && _nextSheetContext) + { + [CPException raise:CPInternalInconsistencyException + reason:@"The target window of beginSheet: already has another sheet queued for attachment"]; + return; + } + var sheetFrame = [aSheet frame]; + var sheetContext = {"sheet":aSheet, "modalDelegate":aModalDelegate, "endSelector":aDidEndSelector, + "contextInfo":aContextInfo, "frame":CGRectMakeCopy(sheetFrame), "returnCode":-1, + "opened": NO }; - _sheetContext = {"sheet":aSheet, "modalDelegate":aModalDelegate, "endSelector":aDidEndSelector, "contextInfo":aContextInfo, "frame":CGRectMakeCopy(sheetFrame), "returnCode":-1, "opened": NO}; - - [self _attachSheetWindow:aSheet]; + if (_sheetContext) + { + // _nextSheetContext will animate in when the current context animates out + _nextSheetContext = sheetContext; + } + else + { + _sheetContext = sheetContext; + [self _attachSheetWindow]; + } } -/* @ignore */ -- (void)_attachSheetWindow:(CPWindow)sheet +/* @ignore + Called to animate the sheet in. The timer seems to solve a bug where sheets would + be partially animated under certain conditions. +*/ +- (void)_attachSheetWindow { - // fixme: a run loop for the sheet animations should be created, - // that defers all other events until the animation is completed, - // the timer will assure that the animation timer fires on the - // special sheet runloop + CPLog("%@ %@", [self class], _cmd); + // it would be ideal to block here and spin an event loop, until attach is complete [CPTimer scheduledTimerWithTimeInterval:0.0 target:self - selector:@selector(sheetShouldAnimateIn:) - userInfo:sheet + selector:@selector(_sheetShouldAnimateIn:) + userInfo:nil repeats:NO]; } -/* @ignore */ +/* @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. +*/ +- (void)_endSheet +{ + CPLog("%@ %@", [self class], _cmd); + + var sheet = _sheetContext["sheet"], + delegate = _sheetContext["modalDelegate"], + endSelector = _sheetContext["endSelector"]; + + if (delegate != nil && endSelector != nil) + objj_msgSend(delegate, endSelector, sheet, _sheetContext["returnCode"], _sheetContext["contextInfo"]); +} + +/* @ignore + Called to animate the sheet out. If called while animating in, schedules an animate + out at completion +*/ - (void)_detachSheetWindow { - var sheet = [self attachedSheet]; - - if (!sheet) - return; + CPLog("%@ %@", [self class], _cmd); + _sheetContext["willAnimateOut"] = YES; + + // it would be ideal to block here and spin the event loop, until attach is complete [CPTimer scheduledTimerWithTimeInterval:0.0 target:self - selector:@selector(sheetShouldAnimateOut:) - userInfo:sheet + selector:@selector(_sheetShouldAnimateOut:) + userInfo:nil repeats:NO]; } +/* @ignore + Called to cleanup sheet, when we are definitely done with it +*/ +- (void)_cleanupSheetWindow +{ + CPLog("%@ %@", [self class], _cmd); + + var sheet = _sheetContext["sheet"], + lastFrame = _sheetContext["frame"]; + + [sheet setFrame:lastFrame]; + [self _restoreMasksForView:[sheet contentView]]; + + // if the parent window is modal, the sheet started its own modal session + if (sheet._isModal) + [CPApp stopModal]; + + _sheetContext = nil; + sheet._parentView = nil; + sheet._isSheet = NO; + + [sheet orderOut:self]; + + [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidEndSheetNotification object:self]; + + if (_nextSheetContext) + { + _sheetContext = _nextSheetContext; + _nextSheetContext = nil; + [self _attachSheetWindow]; + } +} + /* @ignore */ - (void)animationDidEnd:(id)anim { + CPLog("%@ %@", [self class], _cmd); + var sheet = _sheetContext["sheet"]; if (anim._window != sheet) return; - [CPTimer scheduledTimerWithTimeInterval:0.1 + [CPTimer scheduledTimerWithTimeInterval:0.0 target:self - selector:@selector(sheetAnimationDidEnd:) - userInfo:sheet + selector:@selector(_sheetAnimationDidEnd:) + userInfo:nil repeats:NO]; } -- (void)sheetShouldAnimateIn:(CPTimer)timer +/* @ignore */ +- (void)_sheetShouldAnimateIn:(CPTimer)timer { - // can't open sheet while its open - if (_sheetContext["isOpening"]) + CPLog("%@ %@", [self class], _cmd); + + // can't open sheet while opening or closing animation is going on + if (_sheetContext["isOpening"] || + _sheetContext["isClosing"]) return; - - // can't open sheet while its closing - if (_sheetContext["isClosing"]) - { - _sheetContext["shouldOpen"] = YES; - return; - } - var aSheet = [timer userInfo]; + var sheet = _sheetContext["sheet"] + sheetFrame = [sheet frame], + frame = [self frame]; + + [self _setUpMasksForView:[sheet contentView]]; - var sheetFrame = [aSheet frame], - frame = [self frame], - sheetContent = [aSheet contentView]; - - [self _setUpMasksForView:sheetContent]; - - aSheet._isSheet = YES; - aSheet._parentView = self; + sheet._isSheet = YES; + sheet._parentView = self; var originx = frame.origin.x + FLOOR((frame.size.width - sheetFrame.size.width) / 2), originy = frame.origin.y + [[self 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 // as if itself and the parent window are modal - aSheet._isModal = NO; + sheet._isModal = NO; if ([CPApp modalWindow]===self) { - [CPApp runModalForWindow:aSheet]; - aSheet._isModal = YES; + [CPApp runModalForWindow:sheet]; + sheet._isModal = YES; } - [aSheet orderFront:self]; - [aSheet setFrame:startFrame display:YES animate:NO]; + [sheet orderFront:self]; + [sheet setFrame:startFrame display:YES animate:NO]; + _sheetContext["opened"] = YES; _sheetContext["shouldClose"] = NO; _sheetContext["isOpening"] = YES; - [aSheet _setFrame:endFrame delegate:self duration:[self animationResizeTime:endFrame] curve:CPAnimationEaseOut]; + [sheet _setFrame:endFrame delegate:self duration:[self animationResizeTime:endFrame] curve:CPAnimationEaseOut]; - // Should run the main loop here until _isAnimating = FALSE // NOTE: cocoa doesn't make window key until animation is done, but a // keypress while animating eventually gets to the window. Therefore, // there must be a runloop specifically designed for sheets? - [aSheet becomeKeyWindow]; + [sheet becomeKeyWindow]; } -- (void)sheetShouldAnimateOut:(CPTimer)timer +- (void)_sheetShouldAnimateOut:(CPTimer)timer { - var sheet = [timer userInfo], + CPLog("%@ %@", [self class], _cmd); + + var sheet = _sheetContext["sheet"], startFrame = [sheet frame], endFrame = CGRectMakeCopy(startFrame); if (_sheetContext["isOpening"]) { - // handle the case where we wanted to close the sheet while it's opening + // allow sheet to be closed while opening, it will close when animate in completes _sheetContext["shouldClose"] = YES; return; } @@ -2441,61 +2540,46 @@ CPTexturedBackgroundWindowMask if (_sheetContext["isClosing"]) return; - endFrame.size.height = 0; - - var sheetContent = [sheet contentView]; - [self _setUpMasksForView:sheetContent]; - _sheetContext["opened"] = NO; _sheetContext["frame"] = startFrame; _sheetContext["isClosing"] = YES; - [sheet _setFrame:endFrame delegate:self duration:[self animationResizeTime:endFrame] curve:CPAnimationEaseIn]; + // 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]]; + [sheet _setFrame:endFrame delegate:self duration:[self animationResizeTime:endFrame] curve:CPAnimationEaseIn]; + } + else + { + [self _sheetAnimationDidEnd:nil]; + } } -- (void)sheetAnimationDidEnd:(CPTimer)timer +- (void)_sheetAnimationDidEnd:(CPTimer)timer { - //CPLog("%@ %@", [self class], _cmd); + CPLog("%@ %@", [self class], _cmd); - var sheet = [timer userInfo]; + var sheet = _sheetContext["sheet"]; _sheetContext["isOpening"] = NO; _sheetContext["isClosing"] = NO; - var sheetContent = [sheet contentView]; - if (_sheetContext["opened"] === YES) { - [self _restoreMasksForView:sheetContent]; + // 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]; - - return; } - - [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidEndSheetNotification object:self]; - - [sheet orderOut:self]; - - var lastFrame = _sheetContext["frame"]; - [sheet setFrame:lastFrame]; - - [self _restoreMasksForView:sheetContent]; - - var delegate = _sheetContext["modalDelegate"], - endSelector = _sheetContext["endSelector"], - returnCode = _sheetContext["returnCode"], - contextInfo = _sheetContext["contextInfo"]; - - _sheetContext = nil; - sheet._parentView = nil; - - if (sheet._isModal) - [CPApp stopModal]; - - if (delegate != nil && endSelector != nil) - objj_msgSend(delegate, endSelector, sheet, returnCode, contextInfo); + else + { + // sheet is closed and not visible + [self _cleanupSheetWindow]; + } } - (void)_setUpMasksForView:(CPView)aView From 1e6f0090dade9d18c01ff4065a39d77967fcd027 Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sun, 6 May 2012 12:06:23 -0400 Subject: [PATCH 012/114] -allow any window to become a sheet --- AppKit/CPWindow/CPWindow.j | 4 +- AppKit/CPWindow/_CPDocModalWindowView.j | 5 +++ AppKit/CPWindow/_CPHUDWindowView.j | 34 +++++++++++++++- AppKit/CPWindow/_CPStandardWindowView.j | 54 +++++++++++++++++++++---- AppKit/CPWindow/_CPWindowView.j | 19 +++++++++ 5 files changed, 106 insertions(+), 10 deletions(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index fff020616..fb2b182e8 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -2395,7 +2395,7 @@ CPTexturedBackgroundWindowMask - (void)_endSheet { CPLog("%@ %@", [self class], _cmd); - + var sheet = _sheetContext["sheet"], delegate = _sheetContext["modalDelegate"], endSelector = _sheetContext["endSelector"]; @@ -2445,6 +2445,8 @@ CPTexturedBackgroundWindowMask [sheet orderOut:self]; + [sheet._windowView _enableSheet:NO]; + [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidEndSheetNotification object:self]; if (_nextSheetContext) diff --git a/AppKit/CPWindow/_CPDocModalWindowView.j b/AppKit/CPWindow/_CPDocModalWindowView.j index ae691300d..3758527e3 100644 --- a/AppKit/CPWindow/_CPDocModalWindowView.j +++ b/AppKit/CPWindow/_CPDocModalWindowView.j @@ -54,4 +54,9 @@ var _CPStandardWindowViewBodyBackgroundColor = nil; return aContentRect; } +- (void)_enableSheet:(BOOL)enable +{ + // do nothing, already a sheet +} + @end \ No newline at end of file diff --git a/AppKit/CPWindow/_CPHUDWindowView.j b/AppKit/CPWindow/_CPHUDWindowView.j index d84ad6e60..abb1385e5 100644 --- a/AppKit/CPWindow/_CPHUDWindowView.j +++ b/AppKit/CPWindow/_CPHUDWindowView.j @@ -208,8 +208,40 @@ var HUD_TITLEBAR_HEIGHT = 26.0; [_titleField setFrame:CGRectMake(20.0, 3.0, width - 40.0, CGRectGetHeight([_titleField frame]))]; var maxY = [self toolbarMaxY]; + if ([_titleField isHidden]) + maxY -= ([self toolbarOffset]).height; - [[theWindow contentView] setFrameOrigin:CGPointMake(0.0, maxY, width, CGRectGetHeight(bounds) - maxY)]; + //[[theWindow contentView] setFrameOrigin:CGPointMake(0.0, maxY, width, CGRectGetHeight(bounds) - maxY)]; + + var contentRect = CGRectMake(0.0, maxY, width, CGRectGetHeight(bounds) - maxY); + + [[theWindow contentView] setFrame:contentRect]; +} + +- (void)_enableSheet:(BOOL)enable +{ + [super _enableSheet:enable]; + + // convert window to "sheet mode" and back again + [_closeButton setHidden:enable]; + [_titleField setHidden:enable]; + + // resize the window + var window = [self window], + frame = [window frame]; + + var dy = ([self toolbarOffset]).height; + if (enable) + dy = -dy; + + var newHeight = CGRectGetMaxY(frame) + dy; + var newWidth = CGRectGetMaxX(frame); + frame.size.height += dy; + + [self setFrameSize:CGSizeMake(newWidth, newHeight)]; + [self tile]; + [window setFrame:frame display:NO animate:NO]; + [window setMovableByWindowBackground:!enable]; } @end diff --git a/AppKit/CPWindow/_CPStandardWindowView.j b/AppKit/CPWindow/_CPStandardWindowView.j index abd7e389d..91e81abd7 100644 --- a/AppKit/CPWindow/_CPStandardWindowView.j +++ b/AppKit/CPWindow/_CPStandardWindowView.j @@ -147,8 +147,11 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, return _CPStandardWindowViewTitleBackgroundColor; } + + (CGRect)contentRectForFrameRect:(CGRect)aFrameRect { + CPLog("%@ %@: static", [self class], _cmd); + var contentRect = CGRectMakeCopy(aFrameRect), titleBarHeight = [self titleBarHeight] + 1.0; @@ -160,6 +163,8 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, + (CGRect)frameRectForContentRect:(CGRect)aContentRect { + CPLog("%@ %@: static", [self class], _cmd); + var frameRect = CGRectMakeCopy(aContentRect), titleBarHeight = [self titleBarHeight] + 1.0; @@ -181,7 +186,7 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, if ([theToolbar isVisible]) { - toolbarHeight = CGRectGetHeight([[theToolbar _toolbarView] frame]); + var toolbarHeight = CGRectGetHeight([[theToolbar _toolbarView] frame]); contentRect.origin.y += toolbarHeight; contentRect.size.height -= toolbarHeight; @@ -330,11 +335,13 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, [_headView setFrameSize:CGSizeMake(width, [self toolbarMaxY])]; [_dividerView setFrame:CGRectMake(0.0, CGRectGetMaxY([_headView frame]), width, 1.0)]; - - var dividerMaxY = CGRectGetMaxY([_dividerView frame]); - + + var dividerMaxY = 0; + if (![_dividerView isHidden]) + dividerMaxY = CGRectGetMaxY([_dividerView frame]); + [_bodyView setFrame:CGRectMake(0.0, dividerMaxY, width, CGRectGetHeight(bounds) - dividerMaxY)]; - + var leftOffset = 8; if (_closeButton) @@ -344,7 +351,9 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, [_titleField setFrame:CGRectMake(leftOffset, 5.0, width - leftOffset * 2.0, CGRectGetHeight([_titleField frame]))]; - [[theWindow contentView] setFrameOrigin:CGPointMake(0.0, CGRectGetMaxY([_dividerView frame]))]; + var contentRect = CGRectMake(0.0, dividerMaxY, width, CGRectGetHeight([_bodyView frame])); + + [[theWindow contentView] setFrame:contentRect]; } /* - (void)setAnimatingToolbar:(BOOL)isAnimatingToolbar @@ -401,10 +410,39 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, - (void)mouseDown:(CPEvent)anEvent { - if (CGRectContainsPoint([_headView frame], [self convertPoint:[anEvent locationInWindow] fromView:nil])) - return [self trackMoveWithEvent:anEvent]; + if (![_headView isHidden]) + if (CGRectContainsPoint([_headView frame], [self convertPoint:[anEvent locationInWindow] fromView:nil])) + return [self trackMoveWithEvent:anEvent]; [super mouseDown:anEvent]; } +- (void)_enableSheet:(BOOL)enable +{ + [super _enableSheet:enable]; + + // convert window to "sheet mode" and back again + [_headView setHidden:enable]; + [_dividerView setHidden:enable]; + [_closeButton setHidden:enable]; + [_minimizeButton setHidden:enable]; + [_titleField setHidden:enable]; + + // resize the window + var window = [self window], + frame = [window frame]; + + var dy = CGRectGetHeight([_headView frame]) + CGRectGetHeight([_dividerView frame]); + if (enable) + dy = -dy; + + var newHeight = CGRectGetMaxY(frame) + dy; + var newWidth = CGRectGetMaxX(frame); + frame.size.height += dy; + + [self setFrameSize:CGSizeMake(newWidth, newHeight)]; + [self tile]; + [window setFrame:frame display:NO animate:NO]; +} + @end diff --git a/AppKit/CPWindow/_CPWindowView.j b/AppKit/CPWindow/_CPWindowView.j index fcf290d78..eaf52f12e 100644 --- a/AppKit/CPWindow/_CPWindowView.j +++ b/AppKit/CPWindow/_CPWindowView.j @@ -41,6 +41,8 @@ var _CPWindowViewResizeIndicatorImage = nil; CGPoint _mouseDraggedPoint; CGRect _cachedScreenFrame; + + CPView _sheetShadowView; } + (void)initialize @@ -380,4 +382,21 @@ var _CPWindowViewResizeIndicatorImage = nil; [self addSubview:_resizeIndicator]; } +- (void)_enableSheet:(BOOL)enable +{ + if (enable) + { + var bundle = [CPBundle bundleForClass:[CPWindow class]]; + _sheetShadowView = [[CPView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth([self bounds]), 8)]; + [_sheetShadowView setAutoresizingMask:CPViewWidthSizable]; + [_sheetShadowView setBackgroundColor:[CPColor colorWithPatternImage:[[CPImage alloc] + initWithContentsOfFile:[bundle pathForResource:@"CPWindow/CPWindowAttachedSheetShadow.png"] size:CGSizeMake(9,8)]]]; + [self addSubview:_sheetShadowView]; + } + else + { + [_sheetShadowView removeFromSuperview]; + } +} + @end From 53798c1545e439b0826b9ec67ed3cdce420427d9 Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sun, 6 May 2012 12:07:02 -0400 Subject: [PATCH 013/114] -allow any window to become a sheet --- AppKit/CPApplication.j | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index 374e6159e..1237f65e3 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -926,19 +926,21 @@ CPRunContinuesResponse = -1002; */ - (void)beginSheet:(CPWindow)aSheet modalForWindow:(CPWindow)aWindow modalDelegate:(id)aModalDelegate didEndSelector:(SEL)aDidEndSelector contextInfo:(id)aContextInfo { - var styleMask = [aSheet styleMask]; + /*var styleMask = [aSheet styleMask]; if (!(styleMask & CPDocModalWindowMask)) { [CPException raise:CPInternalInconsistencyException reason:@"Currently only CPDocModalWindowMask style mask is supported for attached sheets"]; return; - } + }*/ if ([aWindow isSheet]) { [CPException raise:CPInternalInconsistencyException reason:@"The target window of beginSheet: cannot be a sheet"]; return; } - + + [aSheet._windowView _enableSheet:YES]; + // -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. if (![aWindow isVisible]) From 8c1d147319725fd7cb5a6e7d947915d5643ee7b2 Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 12 May 2012 14:22:54 -0400 Subject: [PATCH 014/114] -remove next sheet context hack -order of notifications/didEndSelect are correct now --- AppKit/CPApplication.j | 7 -- AppKit/CPWindow/CPWindow.j | 109 ++++++++++-------------- AppKit/CPWindow/_CPHUDWindowView.j | 1 - AppKit/CPWindow/_CPStandardWindowView.j | 11 ++- 4 files changed, 49 insertions(+), 79 deletions(-) diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index 1237f65e3..55d7fa5dd 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -926,13 +926,6 @@ CPRunContinuesResponse = -1002; */ - (void)beginSheet:(CPWindow)aSheet modalForWindow:(CPWindow)aWindow modalDelegate:(id)aModalDelegate didEndSelector:(SEL)aDidEndSelector contextInfo:(id)aContextInfo { - /*var styleMask = [aSheet styleMask]; - if (!(styleMask & CPDocModalWindowMask)) - { - [CPException raise:CPInternalInconsistencyException reason:@"Currently only CPDocModalWindowMask style mask is supported for attached sheets"]; - return; - }*/ - if ([aWindow isSheet]) { [CPException raise:CPInternalInconsistencyException reason:@"The target window of beginSheet: cannot be a sheet"]; diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index fb2b182e8..b2180fde8 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -347,8 +347,6 @@ var CPWindowActionMessageKeys = [ CPDictionary _sheetContext; CPWindow _parentView; BOOL _isSheet; - CPDictionary _nextSheetContext; - _CPWindowFrameAnimation _frameAnimation; } @@ -423,7 +421,6 @@ CPTexturedBackgroundWindowMask _isSheet = NO; _sheetContext = nil; - _nextSheetContext = nil; _parentView = nil; // Set up our window number. @@ -772,7 +769,6 @@ CPTexturedBackgroundWindowMask size.width = newSize.width; size.height = newSize.height; - //CPLog.debug("%@ %@ view=%dx%d", [self class], _cmd, size.width, size.height); [_windowView setFrameSize:size]; if (_hasShadow) @@ -885,8 +881,6 @@ CPTexturedBackgroundWindowMask { if ([self isSheet]) { - CPLog("%@ %@", [self class], _cmd); - // -dw- as in Cocoa, orderOut: detaches the sheet and animates out [self._parentView _detachSheetWindow]; return; @@ -2334,42 +2328,20 @@ CPTexturedBackgroundWindowMask - (void)_attachSheet:(CPWindow)aSheet modalDelegate:(id)aModalDelegate didEndSelector:(SEL)aDidEndSelector contextInfo:(id)aContextInfo { - CPLog("%@ %@", [self class], _cmd); - - // the willAnimateOut flag is used to handle a sheet that is orderedOut, but - // has not finished animating yet. In this case, we allow the sheet - // attachment, and run the sheet as soon as the animation completes. - if (_sheetContext && !_sheetContext["willAnimateOut"]) + if (_sheetContext) { [CPException raise:CPInternalInconsistencyException reason:@"The target window of beginSheet: already has a sheet, did you forget orderOut: ?"]; return; } - // it is possible to call beginSheet: multiple times while animating a sheet out, because - // we do not block in _detachSheetWindow - if (_sheetContext && _nextSheetContext) - { - [CPException raise:CPInternalInconsistencyException - reason:@"The target window of beginSheet: already has another sheet queued for attachment"]; - return; - } - var sheetFrame = [aSheet frame]; - var sheetContext = {"sheet":aSheet, "modalDelegate":aModalDelegate, "endSelector":aDidEndSelector, + + _sheetContext = {"sheet":aSheet, "modalDelegate":aModalDelegate, "endSelector":aDidEndSelector, "contextInfo":aContextInfo, "frame":CGRectMakeCopy(sheetFrame), "returnCode":-1, "opened": NO }; - if (_sheetContext) - { - // _nextSheetContext will animate in when the current context animates out - _nextSheetContext = sheetContext; - } - else - { - _sheetContext = sheetContext; - [self _attachSheetWindow]; - } + [self _attachSheetWindow]; } /* @ignore @@ -2378,7 +2350,7 @@ CPTexturedBackgroundWindowMask */ - (void)_attachSheetWindow { - CPLog("%@ %@", [self class], _cmd); + _sheetContext["isAttached"] = YES; // it would be ideal to block here and spin an event loop, until attach is complete [CPTimer scheduledTimerWithTimeInterval:0.0 @@ -2394,14 +2366,19 @@ CPTexturedBackgroundWindowMask */ - (void)_endSheet { - CPLog("%@ %@", [self class], _cmd); - - var sheet = _sheetContext["sheet"], - delegate = _sheetContext["modalDelegate"], + var delegate = _sheetContext["modalDelegate"], endSelector = _sheetContext["endSelector"]; + // if the sheet has been ordered out, defer didEndSelector until after sheet animates out, + // this must be done since we cannot block an wait for the animation to complete if (delegate != nil && endSelector != nil) - objj_msgSend(delegate, endSelector, sheet, _sheetContext["returnCode"], _sheetContext["contextInfo"]); + { + if (_sheetContext["isAttached"]) + objj_msgSend(delegate, endSelector, _sheetContext["sheet"], _sheetContext["returnCode"], + _sheetContext["contextInfo"]); + else + _sheetContext["deferDidEndSelector"] = YES; + } } /* @ignore @@ -2410,9 +2387,7 @@ CPTexturedBackgroundWindowMask */ - (void)_detachSheetWindow { - CPLog("%@ %@", [self class], _cmd); - - _sheetContext["willAnimateOut"] = YES; + _sheetContext["isAttached"] = NO; // it would be ideal to block here and spin the event loop, until attach is complete [CPTimer scheduledTimerWithTimeInterval:0.0 @@ -2427,10 +2402,9 @@ CPTexturedBackgroundWindowMask */ - (void)_cleanupSheetWindow { - CPLog("%@ %@", [self class], _cmd); - var sheet = _sheetContext["sheet"], - lastFrame = _sheetContext["frame"]; + lastFrame = _sheetContext["frame"], + deferDidEnd = _sheetContext["deferDidEndSelector"]; [sheet setFrame:lastFrame]; [self _restoreMasksForView:[sheet contentView]]; @@ -2439,29 +2413,38 @@ CPTexturedBackgroundWindowMask if (sheet._isModal) [CPApp stopModal]; - _sheetContext = nil; - sheet._parentView = nil; - sheet._isSheet = NO; - - [sheet orderOut:self]; - + // restore the state of window before it was sheetified [sheet._windowView _enableSheet:NO]; + // close it + sheet._isSheet = NO; + [sheet orderOut:self]; + [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidEndSheetNotification object:self]; - if (_nextSheetContext) + if (deferDidEnd) { - _sheetContext = _nextSheetContext; - _nextSheetContext = nil; - [self _attachSheetWindow]; + var delegate = _sheetContext["modalDelegate"]; + selector = _sheetContext["endSelector"], + returnCode = _sheetContext["returnCode"], + contextInfo = _sheetContext["contextInfo"], + + // context must be destroyed, since didEnd might want to attach another sheet + _sheetContext = nil; + sheet._parentView = nil; + + objj_msgSend(delegate, selector, sheet, returnCode, contextInfo); + } + else + { + _sheetContext = nil; + sheet._parentView = nil; } } /* @ignore */ - (void)animationDidEnd:(id)anim { - CPLog("%@ %@", [self class], _cmd); - var sheet = _sheetContext["sheet"]; if (anim._window != sheet) return; @@ -2476,8 +2459,6 @@ CPTexturedBackgroundWindowMask /* @ignore */ - (void)_sheetShouldAnimateIn:(CPTimer)timer { - CPLog("%@ %@", [self class], _cmd); - // can't open sheet while opening or closing animation is going on if (_sheetContext["isOpening"] || _sheetContext["isClosing"]) @@ -2524,10 +2505,9 @@ CPTexturedBackgroundWindowMask [sheet becomeKeyWindow]; } +/* @ignore */ - (void)_sheetShouldAnimateOut:(CPTimer)timer { - CPLog("%@ %@", [self class], _cmd); - var sheet = _sheetContext["sheet"], startFrame = [sheet frame], endFrame = CGRectMakeCopy(startFrame); @@ -2559,20 +2539,19 @@ CPTexturedBackgroundWindowMask } } +/* @ignore */ - (void)_sheetAnimationDidEnd:(CPTimer)timer { - CPLog("%@ %@", [self class], _cmd); - var sheet = _sheetContext["sheet"]; - + _sheetContext["isOpening"] = NO; _sheetContext["isClosing"] = NO; - + 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]; diff --git a/AppKit/CPWindow/_CPHUDWindowView.j b/AppKit/CPWindow/_CPHUDWindowView.j index abb1385e5..f2cc01ff7 100644 --- a/AppKit/CPWindow/_CPHUDWindowView.j +++ b/AppKit/CPWindow/_CPHUDWindowView.j @@ -222,7 +222,6 @@ var HUD_TITLEBAR_HEIGHT = 26.0; { [super _enableSheet:enable]; - // convert window to "sheet mode" and back again [_closeButton setHidden:enable]; [_titleField setHidden:enable]; diff --git a/AppKit/CPWindow/_CPStandardWindowView.j b/AppKit/CPWindow/_CPStandardWindowView.j index 91e81abd7..474c57269 100644 --- a/AppKit/CPWindow/_CPStandardWindowView.j +++ b/AppKit/CPWindow/_CPStandardWindowView.j @@ -147,11 +147,8 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, return _CPStandardWindowViewTitleBackgroundColor; } - + (CGRect)contentRectForFrameRect:(CGRect)aFrameRect { - CPLog("%@ %@: static", [self class], _cmd); - var contentRect = CGRectMakeCopy(aFrameRect), titleBarHeight = [self titleBarHeight] + 1.0; @@ -163,8 +160,6 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, + (CGRect)frameRectForContentRect:(CGRect)aContentRect { - CPLog("%@ %@: static", [self class], _cmd); - var frameRect = CGRectMakeCopy(aContentRect), titleBarHeight = [self titleBarHeight] + 1.0; @@ -421,13 +416,17 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, { [super _enableSheet:enable]; - // convert window to "sheet mode" and back again [_headView setHidden:enable]; [_dividerView setHidden:enable]; [_closeButton setHidden:enable]; [_minimizeButton setHidden:enable]; [_titleField setHidden:enable]; + if (enable) + [_bodyView setBackgroundColor:[_CPDocModalWindowView bodyBackgroundColor]]; + else + [_bodyView setBackgroundColor:[[self class] bodyBackgroundColor]]; + // resize the window var window = [self window], frame = [window frame]; From 098f72651ce5682cf50c3bcf69a94ee12ac2f44f Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 12 May 2012 15:05:48 -0400 Subject: [PATCH 015/114] -correct documentation --- AppKit/CPWindow/CPWindow.j | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index b2180fde8..26d58da51 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -265,8 +265,7 @@ var CPWindowActionMessageKeys = [ @delegate -(BOOL)windowDidEndSheet:(CPNotification)notification; Sent from the notification center when an attached sheet on the - delegate's window has been animated out. Called after the - sheet's didEndSelector. + delegate's window has been animated out and is no longer visible. @param notification contains information about the event @return \c YES allows the window to close. \c NO From 32e3df1e803983d7a64e15f67f447f15450a1903 Mon Sep 17 00:00:00 2001 From: Martin Carlberg Date: Mon, 25 Jun 2012 08:23:14 +0200 Subject: [PATCH 016/114] Added key value binding support for CPPopupButton --- AppKit/CPKeyValueBinding.j | 38 ++++++---- AppKit/CPPopUpButton.j | 142 ++++++++++++++++++++++++++++++++----- 2 files changed, 152 insertions(+), 28 deletions(-) diff --git a/AppKit/CPKeyValueBinding.j b/AppKit/CPKeyValueBinding.j index 608f7ae4a..af94f07a2 100644 --- a/AppKit/CPKeyValueBinding.j +++ b/AppKit/CPKeyValueBinding.j @@ -546,18 +546,32 @@ CPNotApplicableMarker = @"CPNotApplicableMarker"; CPNullMarker = @"CPNullMarker"; // Binding name constants -CPAlignmentBinding = @"alignment"; -CPEditableBinding = @"editable"; -CPEnabledBinding = @"enabled"; -CPFontBinding = @"font"; -CPHiddenBinding = @"hidden"; -CPSelectedIndexBinding = @"selectedIndex"; -CPTextColorBinding = @"textColor"; -CPToolTipBinding = @"toolTip"; -CPValueBinding = @"value"; -CPValueURLBinding = @"valueURL"; -CPValuePathBinding = @"valuePath"; -CPDataBinding = @"data"; +CPAlignmentBinding = @"alignment"; +CPContentArrayBinding = @"contentArray"; +CPContentBinding = @"content"; +CPContentObjectBinding = @"contentObject"; +CPContentObjectsBinding = @"contentObjects"; +CPContentValuesBinding = @"contentValues"; +CPEnabledBinding = @"enabled"; +CPFontBinding = @"font"; +CPFontNameBinding = @"fontName"; +CPFontBoldBinding = @"fontBold"; +CPHiddenBinding = @"hidden"; +CPFilterPredicateBinding = @"filterPredicate"; +CPPredicateBinding = @"predicate"; +CPSelectedIndexBinding = @"selectedIndex"; +CPSelectedLabelBinding = @"selectedLabel"; +CPSelectedObjectBinding = @"selectedObject"; +CPSelectedObjectsBinding = @"selectedObjects"; +CPSelectedTagBinding = @"selectedTag"; +CPSelectedValueBinding = @"selectedValue"; +CPSelectedValuesBinding = @"selectedValues"; +CPSelectionIndexesBinding = @"selectionIndexes"; +CPTitleBinding = @"title"; +CPValueBinding = @"value"; +CPValueURLBinding = @"valueURL"; +CPValuePathBinding = @"valuePath"; +CPDataBinding = @"data"; //Binding options constants CPAllowsEditingMultipleValuesSelectionBindingOption = @"CPAllowsEditingMultipleValuesSelection"; diff --git a/AppKit/CPPopUpButton.j b/AppKit/CPPopUpButton.j index cbc011db0..2d3af0fd9 100644 --- a/AppKit/CPPopUpButton.j +++ b/AppKit/CPPopUpButton.j @@ -24,6 +24,7 @@ @import "CPGeometry.j" @import "CPMenu.j" @import "CPMenuItem.j" +@import var VISIBLE_MARGIN = 7.0; @@ -246,22 +247,6 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); return _selectedIndex; } -/*! - @ignore -*/ -- (int)_selectedTag -{ - return [[self selectedItem] tag]; -} - -/*! - @ignore -*/ -- (void)_setSelectedTag:(int)aTag -{ - [self selectItemWithTag:aTag]; -} - // Setting the Current Selection /*! Selects the specified menu item. @@ -313,6 +298,11 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); [[self selectedItem] setState:CPOnState]; [self synchronizeTitleAndSelectedItem]; + + var binder = [CPBinder getBinding:CPSelectedIndexBinding forObject:self]; + [binder reverseSetValueFor:CPSelectedIndexBinding]; + binder = [CPBinder getBinding:CPSelectedObjectBinding forObject:self]; + [binder reverseSetValueFor:CPSelectedObjectBinding]; } - (id)objectValue @@ -788,6 +778,126 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); @end +@implementation CPPopUpButton (BindingSupport) +/* +- (void)_setItemValues:(CPArray)values forKey:(CPString)key +{ + var i, + count = [values count]; + + if (count != [self numberOfItems]) + { + [self removeAllItems]; + var count2 = count; + while (count2--) + [self addItemWithTitle:@""]; + } + + if (!key) + return; + + while (count--) + [[self itemAtIndex:count] setValue:[values objectAtIndex:count] forKey:key]; +} +*/ +- (CPUInteger)selectedIndex +{ + return [self indexOfSelectedItem]; +} + +- (void)setSelectedIndex:(CPUInteger)aValue +{ + [self selectItemAtIndex:aValue]; +} + +- (CPString)selectedValue +{ + return [self titleOfSelectedItem]; +} + +- (void)setSelectedValue:(CPString)aValue +{ + [self selectItemWithTitle:aValue]; +} + +- (id)selectedObject +{ + return [[self selectedItem] representedObject]; +} + +- (void)setSelectedObject:(id)aValue +{ + [self selectItemAtIndex:[self indexOfItemWithRepresentedObject:aValue]]; +} + +- (CPInteger)selectedTag +{ + return [[self selectedItem] tag]; +} + +- (void)setSelectedTag:(CPInteger)aValue +{ + [self selectItemWithTag:aValue]; +} + +- (CPArray)contentValues +{ + return [self valueForKeyPath:@"itemArray.title"]; +} + +- (void)setContentValues:(CPArray)aValue +{ + var count = [aValue count]; + + if (count != [self numberOfItems]) + { + [self removeAllItems]; + for (var i = 0; i < count; i++) + [self addItemWithTitle:[aValue objectAtIndex:i]]; + } + else + { + for (var i = 0; i < count; i++) + [[self itemAtIndex:i] setTitle:[aValue objectAtIndex:i]]; + } + [self synchronizeTitleAndSelectedItem]; +} + +- (CPArray)content +{ + return [self valueForKeyPath:@"itemArray.representedObject"]; +} + +- (void)setContent:(CPArray)aValue +{ + var count = [aValue count]; + + if (count != [self numberOfItems]) + { + [self removeAllItems]; + for (var i = 0; i < count; i++) + { + var item = [[CPMenuItem alloc] initWithTitle:@"" action:NULL keyEquivalent:nil]; + [item setRepresentedObject:[aValue objectAtIndex:i]]; + [self addItem:item]; + } + } + else + { + for (var i = 0; i < count; i++) + [[self itemAtIndex:i] setRepresentedObject:[aValue objectAtIndex:i]]; + } + + if (![self infoForBinding:CPContentValuesBinding]) + { + var descriptions = [aValue valueForKey:@"description"]; + for (var i = 0; i < count; i++) + [[self itemAtIndex:i] setTitle:[descriptions objectAtIndex:i]]; + } +} + +@end + var DEPRECATED_CPPopUpButtonMenuKey = @"CPPopUpButtonMenuKey", DEPRECATED_CPPopUpButtonSelectedIndexKey = @"CPPopUpButtonSelectedIndexKey"; From 8e2afde3e412256d25c8532ec7f404b9d42b8903 Mon Sep 17 00:00:00 2001 From: cacaodev Date: Fri, 29 Jun 2012 19:29:53 +0200 Subject: [PATCH 017/114] CPKeyValueBinding -reverseSetValueFor: -> extract a method for getting the source value for a given binding. the goal is to facilitate subclassing. --- AppKit/CPKeyValueBinding.j | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/AppKit/CPKeyValueBinding.j b/AppKit/CPKeyValueBinding.j index 608f7ae4a..f7ac25126 100644 --- a/AppKit/CPKeyValueBinding.j +++ b/AppKit/CPKeyValueBinding.j @@ -190,7 +190,7 @@ var CPBindingOperationAnd = 0, var destination = [_info objectForKey:CPObservedObjectKey], keyPath = [_info objectForKey:CPObservedKeyPathKey], options = [_info objectForKey:CPOptionsKey], - newValue = [_source valueForKeyPath:aBinding]; + newValue = [self valueForBinding:aBinding]; newValue = [self reverseTransformValue:newValue withOptions:options]; @@ -199,6 +199,11 @@ var CPBindingOperationAnd = 0, [self unsuppressSpecificNotificationFromObject:destination keyPath:keyPath]; } +- (id)valueForBinding:(CPString)aBinding +{ + return [_source valueForKeyPath:aBinding]; +} + - (void)observeValueForKeyPath:(CPString)aKeyPath ofObject:(id)anObject change:(CPDictionary)changes context:(id)context { if (!changes) From fec1586380d0916a455be04d1aa00c04a6ffeecf Mon Sep 17 00:00:00 2001 From: Martin Carlberg Date: Mon, 25 Jun 2012 08:23:14 +0200 Subject: [PATCH 018/114] CPPopUpButton bindings support (set for all and reverse for selection related bindings) using a CPBinder subclass instead of dedicated selectors. --- AppKit/CPKeyValueBinding.j | 38 +++-- AppKit/CPPopUpButton.j | 156 +++++++++++++++--- .../CPPopUpButtonBindings/AppController.j | 41 +++++ 3 files changed, 202 insertions(+), 33 deletions(-) create mode 100644 Tests/Manual/CPPopUpButtonBindings/AppController.j diff --git a/AppKit/CPKeyValueBinding.j b/AppKit/CPKeyValueBinding.j index f7ac25126..7b75920ad 100644 --- a/AppKit/CPKeyValueBinding.j +++ b/AppKit/CPKeyValueBinding.j @@ -551,18 +551,32 @@ CPNotApplicableMarker = @"CPNotApplicableMarker"; CPNullMarker = @"CPNullMarker"; // Binding name constants -CPAlignmentBinding = @"alignment"; -CPEditableBinding = @"editable"; -CPEnabledBinding = @"enabled"; -CPFontBinding = @"font"; -CPHiddenBinding = @"hidden"; -CPSelectedIndexBinding = @"selectedIndex"; -CPTextColorBinding = @"textColor"; -CPToolTipBinding = @"toolTip"; -CPValueBinding = @"value"; -CPValueURLBinding = @"valueURL"; -CPValuePathBinding = @"valuePath"; -CPDataBinding = @"data"; +CPAlignmentBinding = @"alignment"; +CPContentArrayBinding = @"contentArray"; +CPContentBinding = @"content"; +CPContentObjectBinding = @"contentObject"; +CPContentObjectsBinding = @"contentObjects"; +CPContentValuesBinding = @"contentValues"; +CPEnabledBinding = @"enabled"; +CPFontBinding = @"font"; +CPFontNameBinding = @"fontName"; +CPFontBoldBinding = @"fontBold"; +CPHiddenBinding = @"hidden"; +CPFilterPredicateBinding = @"filterPredicate"; +CPPredicateBinding = @"predicate"; +CPSelectedIndexBinding = @"selectedIndex"; +CPSelectedLabelBinding = @"selectedLabel"; +CPSelectedObjectBinding = @"selectedObject"; +CPSelectedObjectsBinding = @"selectedObjects"; +CPSelectedTagBinding = @"selectedTag"; +CPSelectedValueBinding = @"selectedValue"; +CPSelectedValuesBinding = @"selectedValues"; +CPSelectionIndexesBinding = @"selectionIndexes"; +CPTitleBinding = @"title"; +CPValueBinding = @"value"; +CPValueURLBinding = @"valueURL"; +CPValuePathBinding = @"valuePath"; +CPDataBinding = @"data"; //Binding options constants CPAllowsEditingMultipleValuesSelectionBindingOption = @"CPAllowsEditingMultipleValuesSelection"; diff --git a/AppKit/CPPopUpButton.j b/AppKit/CPPopUpButton.j index cbc011db0..859231f0e 100644 --- a/AppKit/CPPopUpButton.j +++ b/AppKit/CPPopUpButton.j @@ -22,10 +22,10 @@ @import "CPButton.j" @import "CPGeometry.j" +@import "CPKeyValueBinding.j" @import "CPMenu.j" @import "CPMenuItem.j" - var VISIBLE_MARGIN = 7.0; CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); @@ -246,22 +246,6 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); return _selectedIndex; } -/*! - @ignore -*/ -- (int)_selectedTag -{ - return [[self selectedItem] tag]; -} - -/*! - @ignore -*/ -- (void)_setSelectedTag:(int)aTag -{ - [self selectItemWithTag:aTag]; -} - // Setting the Current Selection /*! Selects the specified menu item. @@ -778,16 +762,146 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); - (void)_reverseSetBinding { - var binderClass = [[self class] _binderClassForBinding:CPSelectedIndexBinding], - theBinding = [binderClass getBinding:CPSelectedIndexBinding forObject:self]; - - [theBinding reverseSetValueFor:@"objectValue"]; + [_CPPopUpButtonSelectionBinder reverseSetValueForObject:self]; [super _reverseSetBinding]; } @end +@implementation CPPopUpButton (BindingSupport) + ++ (Class)_binderClassForBinding:(CPString)aBinding +{ + if (aBinding == CPSelectedIndexBinding || + aBinding == CPSelectedObjectBinding || + aBinding == CPSelectedTagBinding || + aBinding == CPSelectedValueBinding) + return [_CPPopUpButtonSelectionBinder class]; + + return [super _binderClassForBinding:aBinding]; +} + +- (CPArray)_contentValues +{ + return [self valueForKeyPath:@"itemArray.title"]; +} + +- (void)_setContentValues:(CPArray)aValue +{ + var count = [aValue count]; + + if (count != [self numberOfItems]) + { + [self removeAllItems]; + for (var i = 0; i < count; i++) + [self addItemWithTitle:[aValue objectAtIndex:i]]; + } + else + { + for (var i = 0; i < count; i++) + [[self itemAtIndex:i] setTitle:[aValue objectAtIndex:i]]; + } + [self synchronizeTitleAndSelectedItem]; +} + +- (CPArray)_content +{ + return [self valueForKeyPath:@"itemArray.representedObject"]; +} + +- (void)_setContent:(CPArray)aValue +{ + var count = [aValue count]; + + if (count != [self numberOfItems]) + { + [self removeAllItems]; + for (var i = 0; i < count; i++) + { + var item = [[CPMenuItem alloc] initWithTitle:@"" action:NULL keyEquivalent:nil]; + [item setRepresentedObject:[aValue objectAtIndex:i]]; + [self addItem:item]; + } + } + else + { + for (var i = 0; i < count; i++) + [[self itemAtIndex:i] setRepresentedObject:[aValue objectAtIndex:i]]; + } + + if (![self infoForBinding:CPContentValuesBinding]) + { + for (var i = 0; i < count; i++) + [[self itemAtIndex:i] setTitle:[[aValue objectAtIndex:i] description]]; + } +} + +@end + +var binderForObject = {}, + selectionBindings = [CPSelectedIndexBinding, CPSelectedObjectBinding, CPSelectedTagBinding, CPSelectedValueBinding]; + +@implementation _CPPopUpButtonSelectionBinder : CPBinder +{ + CPString _selectionBinding @accessors(property=binding); +} + ++ (void)reverseSetValueForObject:(id)aSource +{ + var uid = [aSource UID], + binder = binderForObject[uid]; + + if (binder == nil) + { + var count = selectionBindings.length; + while (count--) + { + var binding = selectionBindings[count]; + binder = [self getBinding:binding forObject:aSource]; + if (binder != nil) + { + binderForObject[uid] = binder; + [binder setBinding:binding]; + break; + } + } + } + + [binder reverseSetValueFor:[binder binding]]; +} + +- (void)setValue:(id)aValue forBinding:(CPString)aBinding +{ + if (aBinding == CPSelectedIndexBinding) + [_source selectItemAtIndex:aValue]; + else if (aBinding == CPSelectedObjectBinding) + [_source selectItemAtIndex:[_source indexOfItemWithRepresentedObject:aValue]]; + else if (aBinding == CPSelectedTagBinding) + [_source selectItemWithTag:aValue]; + else if (aBinding == CPSelectedValueBinding) + [_source selectItemWithTitle:aValue]; +} + +- (void)setPlaceholderValue:(id)aValue withMarker:(CPString)aMarker forBinding:(CPString)aBinding +{ + [self setValue:aValue forBinding:aBinding]; +} + +- (id)valueForBinding:(CPString)aBinding +{ + if (aBinding == CPSelectedIndexBinding) + return [_source indexOfSelectedItem]; + else if (aBinding == CPSelectedObjectBinding) + return [[_source selectedItem] representedObject]; + else if (aBinding == CPSelectedTagBinding) + return [[_source selectedItem] tag]; + else if (aBinding == CPSelectedValueBinding) + return [_source titleOfSelectedItem]; +} + +@end + var DEPRECATED_CPPopUpButtonMenuKey = @"CPPopUpButtonMenuKey", DEPRECATED_CPPopUpButtonSelectedIndexKey = @"CPPopUpButtonSelectedIndexKey"; diff --git a/Tests/Manual/CPPopUpButtonBindings/AppController.j b/Tests/Manual/CPPopUpButtonBindings/AppController.j new file mode 100644 index 000000000..74b2e940f --- /dev/null +++ b/Tests/Manual/CPPopUpButtonBindings/AppController.j @@ -0,0 +1,41 @@ +/* + * AppController.j + * CPPopUpButtonBindings + * + * Created by You on December 2, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +@import + +@implementation AppController : CPObject +{ + @outlet CPWindow mainWindow; + @outlet CPPopUpButton tagPopUp; + + CPArray people @accessors; +} + +- (void)awakeFromCib +{ + var array = []; + [array addObject:[CPDictionary dictionaryWithObjectsAndKeys:@"John",@"name",@"Butcher",@"job",@"john@meat.com",@"email", 2, @"tag"]]; + [array addObject:[CPDictionary dictionaryWithObjectsAndKeys:@"Alberto",@"name",@"Seller",@"job",@"alberto@gmail.com",@"email", 0, @"tag"]]; + [array addObject:[CPDictionary dictionaryWithObjectsAndKeys:@"Barack",@"name",@"President",@"job",@"barack@whitehouse.gov",@"email", 1, @"tag"]]; + + [self setPeople:array]; + +// Setup tags for the second popup + var items = [tagPopUp itemArray]; + [items enumerateObjectsUsingBlock:function(item, idx) + { + [item setTag:idx]; + [item setTitle:([item title] + " Tag:" + idx)]; + }]; + + [mainWindow setFullBridge:YES]; + +} + +@end + From c865644e6c6c534d0e7a35832f06fb4e97348d75 Mon Sep 17 00:00:00 2001 From: cacaodev Date: Mon, 25 Jun 2012 16:20:49 +0200 Subject: [PATCH 019/114] Test for CPPopUpButton bindings. --- .../CPPopUpButtonBindings/CPPopUpButton.j | 1 + Tests/Manual/CPPopUpButtonBindings/Info.plist | 12 + Tests/Manual/CPPopUpButtonBindings/Jakefile | 94 + .../Resources/MainMenu.cib | 4 + .../Resources/MainMenu.xib | 1506 +++++++++++++++++ .../Resources/spinner.gif | Bin 0 -> 1849 bytes .../CPPopUpButtonBindings/index-debug.html | 104 ++ Tests/Manual/CPPopUpButtonBindings/index.html | 78 + Tests/Manual/CPPopUpButtonBindings/main.j | 18 + 9 files changed, 1817 insertions(+) create mode 120000 Tests/Manual/CPPopUpButtonBindings/CPPopUpButton.j create mode 100644 Tests/Manual/CPPopUpButtonBindings/Info.plist create mode 100644 Tests/Manual/CPPopUpButtonBindings/Jakefile create mode 100644 Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib create mode 100644 Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib create mode 100644 Tests/Manual/CPPopUpButtonBindings/Resources/spinner.gif create mode 100644 Tests/Manual/CPPopUpButtonBindings/index-debug.html create mode 100644 Tests/Manual/CPPopUpButtonBindings/index.html create mode 100644 Tests/Manual/CPPopUpButtonBindings/main.j diff --git a/Tests/Manual/CPPopUpButtonBindings/CPPopUpButton.j b/Tests/Manual/CPPopUpButtonBindings/CPPopUpButton.j new file mode 120000 index 000000000..1c4925ca5 --- /dev/null +++ b/Tests/Manual/CPPopUpButtonBindings/CPPopUpButton.j @@ -0,0 +1 @@ +../../../AppKit/CPPopUpButton.j \ No newline at end of file diff --git a/Tests/Manual/CPPopUpButtonBindings/Info.plist b/Tests/Manual/CPPopUpButtonBindings/Info.plist new file mode 100644 index 000000000..1e7a1ead9 --- /dev/null +++ b/Tests/Manual/CPPopUpButtonBindings/Info.plist @@ -0,0 +1,12 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CPPopUpButtonBindings + CPPrincipalClass + CPApplication + + diff --git a/Tests/Manual/CPPopUpButtonBindings/Jakefile b/Tests/Manual/CPPopUpButtonBindings/Jakefile new file mode 100644 index 000000000..94c73db0d --- /dev/null +++ b/Tests/Manual/CPPopUpButtonBindings/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * CPPopUpButtonBindings + * + * Created by You on November 2, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("CPPopUpButtonBindings", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "CPPopUpButtonBindings.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPPopUpButtonBindings"); + task.setIdentifier("com.yourcompany.CPPopUpButtonBindings"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPPopUpButtonBindings"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["CPPopUpButtonBindings"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "CPPopUpButtonBindings", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "CPPopUpButtonBindings", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "CPPopUpButtonBindings")); + OS.system(["press", "-f", FILE.join("Build", "Release", "CPPopUpButtonBindings"), FILE.join("Build", "Deployment", "CPPopUpButtonBindings")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "CPPopUpButtonBindings")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CPPopUpButtonBindings"), FILE.join("Build", "Desktop", "CPPopUpButtonBindings", "CPPopUpButtonBindings.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "CPPopUpButtonBindings", "CPPopUpButtonBindings.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "CPPopUpButtonBindings")); + print("----------------------------"); +} diff --git a/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib new file mode 100644 index 000000000..2fbee6e7b --- /dev/null +++ b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib @@ -0,0 +1,4 @@ +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;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;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;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;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;41E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;45E;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;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;56E;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;63E;D;K;6;CP$UIDd;2;64E;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;66E;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;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;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;43E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;73E;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;88E;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;89E;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;81E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;90E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;47E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;91E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;48E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;43E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;49E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;94E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;96E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;68E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;97E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;102E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;103E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;106E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;107E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;108E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;110E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;61E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;111E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;113E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;114E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;116E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;117E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;118E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;119E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;120E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;121E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;122E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;123E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;103E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;125E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;126E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;127E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;128E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;81E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;129E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;130E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;131E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;132E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;48E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;133E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;134E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;137E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;139E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;140E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;60E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;141E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;117E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;142E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;144E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;145E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;58E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;146E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;147E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;88E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;148E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;149E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;150E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;151E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;152E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;45E;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;44E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;154E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;154E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;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;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;157E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;171E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;172E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;174E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;175E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;176E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;177E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;178E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;180E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;182E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;3;183E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;53E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;54E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;184E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;166E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;166E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;166E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;185E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;153E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;153E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;187E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;189E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;51E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;192E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;153E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;193E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;194E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;194E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;189E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;195E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;51E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;196E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;153E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;197E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;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;3;182E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;198E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;198E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;182E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;170E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;199E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;12;$agrid-colorD;K;6;CP$UIDd;3;200E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;201E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;202E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;153E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;165E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;166E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;166E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;166E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;166E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;166E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;203E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;200E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;3;153E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;204E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;206E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;63E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;207E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;208E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;209E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;212E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;213E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;3;216E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;217E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;218E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;209E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;219E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;220E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;221E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;222E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;184E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;223E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;224E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;225E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;184E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;226E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;227E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;228E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;62E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;183E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;229E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;183E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;230E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;56E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;3;166E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;231E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;234E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;235E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;236E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;237E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;238E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;87E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;239E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;86E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;250E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;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;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;85E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;251E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;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;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;252E;E;D;K;10;$classnameS;17;CPArrayControllerK;8;$classesA;S;17;CPArrayControllerS;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;253E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;166E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;204E;K;37;CPArrayControllerAvoidsEmptySelectionD;K;6;CP$UIDd;3;166E;K;49;CPArrayControllerClearsFilterPredicateOnInsertionD;K;6;CP$UIDd;3;204E;K;41;CPArrayControllerFilterRestrictsInsertionD;K;6;CP$UIDd;3;166E;K;35;CPArrayControllerPreservesSelectionD;K;6;CP$UIDd;3;166E;K;39;CPArrayControllerSelectsInsertedObjectsD;K;6;CP$UIDd;3;166E;K;47;CPArrayControllerAlwaysUsesMultipleValuesMarkerD;K;6;CP$UIDd;3;204E;K;47;CPArrayControllerAutomaticallyRearrangesObjectsD;K;6;CP$UIDd;3;204E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;257E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;43E;E;E;S;8;delegateS;10;emailLabelS;8;jobLabelS;10;mainWindowS;9;nameLabelS;21;ordersArrayControllerS;15;ordersTableViewS;8;tagPopUpS;24;content: arrangedObjectsS;7;contentS;15;arrangedObjectsD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;35;contentValues: arrangedObjects.nameS;13;contentValuesS;20;arrangedObjects.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;29;selectedValue: selection.nameS;13;selectedValueS;14;selection.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.tagS;5;valueS;19;arrangedObjects.tagD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;34;contentValues: arrangedObjects.jobS;19;arrangedObjects.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;selectedTag: selection.tagS;11;selectedTagS;13;selection.tagD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;22;CPValidatesImmediatelyD;K;6;CP$UIDd;3;166E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;29;selectedIndex: selectionIndexS;13;selectedIndexS;14;selectionIndexD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;20;contentArray: peopleS;12;contentArrayS;6;peopleD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;22;CPValidatesImmediatelyD;K;6;CP$UIDd;3;166E;E;E;S;20;value: selection.jobS;13;selection.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;22;value: selection.emailS;15;selection.emailD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;21;value: selection.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;28;value: arrangedObjects.emailS;21;arrangedObjects.emailD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;27;value: arrangedObjects.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{335, 278}, {951, 373}}d;1;7S;6;Windowd;1;0S;20;{{0, 0}, {951, 373}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;E;E;S;6;normalS;22;{{14, 295}, {448, 29}}S;19;{{0, 0}, {448, 29}}d;2;12S;9;textfieldS;19;bezeled+placeholderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;258E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;159E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;204E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;204E;E;d;1;2d;1;4T;S;0;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;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;259E;E;S;5;EmailS;22;{{14, 327}, {448, 29}}S;3;JobS;22;{{14, 263}, {448, 29}}S;4;NameS;22;{{-1, -1}, {461, 260}}S;20;{{0, 0}, {461, 260}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;185E;E;E;d;2;20S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;181E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;198E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;198E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;260E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;261E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;56E;E;D;K;6;$classD;K;6;CP$UIDd;3;181E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;262E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;263E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;264E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;261E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;63E;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;22;{{467, 15}, {15, 228}}S;19;{{0, 0}, {15, 228}}d;1;8d;11;-2147483648S;8;scrollerS;17;disabled+verticalS;27;_verticalScrollerDidScroll:f;18;0.9382716049382716S;19;{{0, 0}, {482, 15}}S;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.9938144329896907S;20;{{0, 0}, {461, 243}}S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;3;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;266E;E;d;2;23S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;E;E;F;D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;205E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;267E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;268E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;269E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;4;named;3;101d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;270E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;271E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;175E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;272E;K;6;$afontD;K;6;CP$UIDd;3;274E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;276E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;d;1;3D;K;10;$classnameS;16;CPSortDescriptorK;8;$classesA;S;16;CPSortDescriptorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;215E;K;22;CPSortDescriptorKeyKeyD;K;6;CP$UIDd;3;207E;K;28;CPSortDescriptorAscendingKeyD;K;6;CP$UIDd;3;166E;K;27;CPSortDescriptorSelectorKeyD;K;6;CP$UIDd;3;277E;E;S;5;emaild;3;150D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;278E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;271E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;171E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;272E;K;6;$afontD;K;6;CP$UIDd;3;279E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;280E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;S;3;jobd;3;106D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;281E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;271E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;173E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;272E;K;6;$afontD;K;6;CP$UIDd;3;282E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;283E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;d;2;92f;22;3.4028234663852886e+38D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;284E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;271E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;285E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;272E;K;6;$afontD;K;6;CP$UIDd;3;286E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;287E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;S;19;{{0, 0}, {461, 23}}S;14;tableHeaderRowS;22;{{496, 23}, {217, 42}}S;19;{{0, 0}, {217, 42}}d;2;33S;53;CPSelectedIndexBinding +arrangedObjects.selectionIndexS;22;{{496, 68}, {217, 42}}S;34;CPSelectedTagBinding +selection.tagS;23;{{496, 118}, {217, 42}}S;37;CPSelectedValueBinding +selection.nameS;22;{{729, 77}, {191, 24}}S;19;{{0, 0}, {191, 24}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;162E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;258E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;159E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;166E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;204E;E;S;6;Item 1S;17;_popUpItemAction:d;1;1d;7;1048576S;6;Item 2S;6;Item 3S;22;{{729, 32}, {191, 24}}S;23;{{729, 127}, {191, 24}}S;13;AppControllerS;12;CPDictionaryS;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;E;E;S;17;Arial, sans-serifD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;56E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;288E;E;S;21;{{0, 243}, {461, 17}}S;19;{{0, 0}, {461, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;63E;E;E;S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;3;246E;E;E;S;22;{{467, 237}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;291E;E;E;S;12;columnHeaderS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;273E;K;4;nameD;K;6;CP$UIDd;3;292E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;293E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;275E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;294E;E;S;8;compare:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;295E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;273E;K;4;nameD;K;6;CP$UIDd;3;292E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;3;275E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;294E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;297E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;273E;K;4;nameD;K;6;CP$UIDd;3;292E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;3;275E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;294E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;299E;E;E;S;3;TagD;K;6;$classD;K;6;CP$UIDd;3;273E;K;4;nameD;K;6;CP$UIDd;3;292E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;300E;E;D;K;6;$classD;K;6;CP$UIDd;3;275E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;294E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;E;E;f;3;0.5D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;290E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;212E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;212E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;301E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;4;fontD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;290E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;219E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;219E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;301E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;290E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;223E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;223E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;301E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;290E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;227E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;227E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;301E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;d;2;18E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib new file mode 100644 index 000000000..472f784d5 --- /dev/null +++ b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib @@ -0,0 +1,1506 @@ + + + + 1070 + 11E53 + 2541 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2541 + + + NSArrayController + NSCustomObject + NSMenu + NSMenuItem + NSPopUpButton + NSPopUpButtonCell + NSScrollView + NSScroller + NSTableColumn + NSTableHeaderView + NSTableView + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + 7 + 2 + {{335, 377}, {951, 373}} + 1946157056 + Window + NSWindow + + + + + 256 + + + + 276 + + + + 2304 + + + + 256 + {461, 243} + + + + YES + + + 256 + {461, 17} + + + + + + + + -2147483392 + {{467, 0}, {16, 17}} + + + + + + + name + 101 + 40 + 1000 + + 75628096 + 2048 + Name + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 337772096 + 2048 + Text Cell + + LucidaGrande + 13 + 1044 + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + 3 + YES + YES + + + name + YES + compare: + + + + email + 150 + 40 + 1000 + + 75628096 + 2048 + Email + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + job + 106 + 10 + 1000 + + 75628096 + 2048 + Job + + + 6 + System + headerColor + + 3 + MQA + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 92 + 10 + 3.4028234663852886e+38 + + 75628096 + 2048 + Tag + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + -566231040 + + + 4 + 15 + 0 + YES + 0 + 1 + + + {{0, 17}, {461, 243}} + + + + + + 4 + + + + -2147483392 + {{467, 17}, {15, 228}} + + + + + _doScroller: + 0.93827160493827155 + + + + -2147483392 + {{0, 245}, {482, 15}} + + + + 1 + + _doScroller: + 0.99381443298969074 + + + + 2304 + + + + {461, 17} + + + + + + 4 + + + + {{-1, 114}, {461, 260}} + + + + 133680 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 292 + {{20, 84}, {440, 22}} + + + + YES + + -1804468671 + 272630784 + + + Name + + YES + + 6 + System + textBackgroundColor + + + + 6 + System + textColor + + + + + + + 292 + {{20, 52}, {440, 22}} + + + + YES + + -1804468671 + 272630784 + + + Email + + YES + + + + + + + 292 + {{20, 20}, {440, 22}} + + + + YES + + -1804468671 + 272630784 + + + Job + + YES + + + + + + + 265 + {{728, 315}, {197, 26}} + + + + YES + + -2076049856 + 2048 + + + 109199615 + 129 + + + 400 + 75 + + + Item 1 + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 265 + {{728, 270}, {197, 26}} + + + + _NS:9 + YES + + -2076049856 + 2048 + + _NS:9 + + 109199360 + 129 + + + 400 + 75 + + + Item 1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 265 + {{728, 220}, {197, 26}} + + + + _NS:9 + YES + + -2076049856 + 2048 + + _NS:9 + + 109199360 + 129 + + + 400 + 75 + + + Item 1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 265 + {{496, 308}, {217, 42}} + + + + _NS:1549 + YES + + 67108864 + 272629760 + Q1BTZWxlY3RlZEluZGV4QmluZGluZwphcnJhbmdlZE9iamVjdHMuc2VsZWN0aW9uSW5kZXg + + _NS:1549 + + + 6 + System + controlColor + + + + + + + + 265 + {{496, 263}, {217, 42}} + + + + _NS:1549 + YES + + 67108864 + 272629760 + Q1BTZWxlY3RlZFRhZ0JpbmRpbmcKc2VsZWN0aW9uLnRhZw + + _NS:1549 + + + + + + + + 265 + {{496, 213}, {217, 42}} + + + + _NS:1549 + YES + + 67108864 + 272629760 + Q1BTZWxlY3RlZFZhbHVlQmluZGluZwpzZWxlY3Rpb24ubmFtZQ + + _NS:1549 + + + + + + + {951, 373} + + + + + {{0, 0}, {1680, 1028}} + {10000000000000, 10000000000000} + YES + + + AppController + + + + name + email + job + tag + + CPDictionary + YES + + YES + YES + YES + YES + + + + + + + delegate + + + + 451 + + + + mainWindow + + + + 464 + + + + ordersTableView + + + + 476 + + + + nameLabel + + + + 488 + + + + emailLabel + + + + 489 + + + + jobLabel + + + + 490 + + + + ordersArrayController + + + + 493 + + + + tagPopUp + + + + 599 + + + + value: arrangedObjects.name + + + + + + value: arrangedObjects.name + value + arrangedObjects.name + 2 + + + 575 + + + + value: arrangedObjects.email + + + + + + value: arrangedObjects.email + value + arrangedObjects.email + 2 + + + 576 + + + + value: arrangedObjects.job + + + + + + value: arrangedObjects.job + value + arrangedObjects.job + 2 + + + 577 + + + + value: selection.name + + + + + + value: selection.name + value + selection.name + 2 + + + 581 + + + + value: selection.email + + + + + + value: selection.email + value + selection.email + 2 + + + 582 + + + + value: selection.job + + + + + + value: selection.job + value + selection.job + 2 + + + 583 + + + + contentArray: people + + + + + + contentArray: people + contentArray + people + + NSValidatesImmediately + + + 2 + + + 578 + + + + content: arrangedObjects + + + + + + content: arrangedObjects + content + arrangedObjects + 2 + + + 534 + + + + contentValues: arrangedObjects.name + + + + + + contentValues: arrangedObjects.name + contentValues + arrangedObjects.name + + 2 + + + 579 + + + + selectedIndex: selectionIndex + + + + + + selectedIndex: selectionIndex + selectedIndex + selectionIndex + + 2 + + + 580 + + + + content: arrangedObjects + + + + + + content: arrangedObjects + content + arrangedObjects + 2 + + + 590 + + + + contentValues: arrangedObjects.job + + + + + + contentValues: arrangedObjects.job + contentValues + arrangedObjects.job + + 2 + + + 592 + + + + selectedTag: selection.tag + + + + + + selectedTag: selection.tag + selectedTag + selection.tag + + NSValidatesImmediately + + + + 2 + + + 617 + + + + value: arrangedObjects.tag + + + + + + value: arrangedObjects.tag + value + arrangedObjects.tag + 2 + + + 598 + + + + content: arrangedObjects + + + + + + content: arrangedObjects + content + arrangedObjects + 2 + + + 606 + + + + contentValues: arrangedObjects.name + + + + + + contentValues: arrangedObjects.name + contentValues + arrangedObjects.name + + 2 + + + 608 + + + + selectedValue: selection.name + + + + + + selectedValue: selection.name + selectedValue + selection.name + + 2 + + + 610 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 371 + + + + + + + + 372 + + + + + + + + + + + + + + + + + 450 + + + + + 467 + + + + + + + + + + + 468 + + + + + 469 + + + + + 470 + + + + + + + + + + + 471 + + + + + 472 + + + + + + + + 473 + + + + + + + + 474 + + + + + 475 + + + + + 480 + + + + + + + + 481 + + + + + 482 + + + + + + + + 483 + + + + + 484 + + + + + + + + 485 + + + + + 486 + + + + + + + + 487 + + + + + 492 + + + + + 528 + + + + + + + + 529 + + + + + + + + 530 + + + + + + + + + + 531 + + + + + 532 + + + + + 533 + + + + + 584 + + + + + + + + 585 + + + + + + + + 586 + + + + + + + + + + 587 + + + + + 588 + + + + + 589 + + + + + 595 + + + + + + + + 596 + + + + + 600 + + + + + + + + 601 + + + + + + + + 602 + + + + + + + + + + 603 + + + + + 604 + + + + + 605 + + + + + 611 + + + + + + + + 612 + + + + + 613 + + + + + + + + 614 + + + + + 615 + + + + + + + + 616 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{246, 335}, {728, 373}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 617 + + + + + AppController + NSObject + + NSWindow + NSPopUpButton + + + + mainWindow + NSWindow + + + tagPopUp + NSPopUpButton + + + + IBProjectSource + ./Classes/AppController.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + + diff --git a/Tests/Manual/CPPopUpButtonBindings/Resources/spinner.gif b/Tests/Manual/CPPopUpButtonBindings/Resources/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..06dbc2bc21dddcf0e09b566d5b211aee89570f52 GIT binary patch literal 1849 zcma*odr(tX9tZHtz31lM+(&Y`A`Ou`NeG&R#DrIfV%?hng21vs6v>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% literal 0 HcmV?d00001 diff --git a/Tests/Manual/CPPopUpButtonBindings/index-debug.html b/Tests/Manual/CPPopUpButtonBindings/index-debug.html new file mode 100644 index 000000000..1d257d406 --- /dev/null +++ b/Tests/Manual/CPPopUpButtonBindings/index-debug.html @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + CPPopUpButtonBindings + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPPopUpButtonBindings/index.html b/Tests/Manual/CPPopUpButtonBindings/index.html new file mode 100644 index 000000000..2114299d9 --- /dev/null +++ b/Tests/Manual/CPPopUpButtonBindings/index.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + CPPopUpButtonBindings + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPPopUpButtonBindings/main.j b/Tests/Manual/CPPopUpButtonBindings/main.j new file mode 100644 index 000000000..28679968f --- /dev/null +++ b/Tests/Manual/CPPopUpButtonBindings/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPPopUpButtonBindings + * + * Created by You on November 2, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} From ef30e21506f1333b4e052966b742c27f91d607f5 Mon Sep 17 00:00:00 2001 From: Martin Carlberg Date: Sat, 30 Jun 2012 09:20:50 +0200 Subject: [PATCH 020/114] Missed to remove some line in manual merge --- AppKit/CPPopUpButton.j | 5 ----- 1 file changed, 5 deletions(-) diff --git a/AppKit/CPPopUpButton.j b/AppKit/CPPopUpButton.j index 1297ea3e7..c8bcc6b21 100644 --- a/AppKit/CPPopUpButton.j +++ b/AppKit/CPPopUpButton.j @@ -298,11 +298,6 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); [[self selectedItem] setState:CPOnState]; [self synchronizeTitleAndSelectedItem]; - - var binder = [CPBinder getBinding:CPSelectedIndexBinding forObject:self]; - [binder reverseSetValueFor:CPSelectedIndexBinding]; - binder = [CPBinder getBinding:CPSelectedObjectBinding forObject:self]; - [binder reverseSetValueFor:CPSelectedObjectBinding]; } - (id)objectValue From e5f4a7c39aa5f3a1b7741e50909c866c3e6c809a Mon Sep 17 00:00:00 2001 From: Martin Carlberg Date: Tue, 3 Jul 2012 12:36:19 +0200 Subject: [PATCH 021/114] Added support for CPNullPlaceholderBindingOption and made some clean up of code --- AppKit/CPPopUpButton.j | 168 +++++++++++++++++++++----- Tests/AppKit/CPPopUpButtonTest.j | 200 +++++++++++++++++++++++++++++++ 2 files changed, 339 insertions(+), 29 deletions(-) diff --git a/AppKit/CPPopUpButton.j b/AppKit/CPPopUpButton.j index c8bcc6b21..734e17f04 100644 --- a/AppKit/CPPopUpButton.j +++ b/AppKit/CPPopUpButton.j @@ -778,7 +778,11 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); aBinding == CPSelectedObjectBinding || aBinding == CPSelectedTagBinding || aBinding == CPSelectedValueBinding) - return [_CPPopUpButtonSelectionBinder class]; + { + var capitalizedBinding = aBinding.charAt(0).toUpperCase() + aBinding.substr(1); + + return [CPClassFromString(@"_CPPopUpButton" + capitalizedBinding + "Binder") class]; + } return [super _binderClassForBinding:aBinding]; } @@ -788,21 +792,52 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); return [self valueForKeyPath:@"itemArray.title"]; } +- (id)_valueOrNilIfCPNull:(id)aValue +{ + if (aValue === [CPNull null]) + return nil; + + return aValue; +} + +- (id)_getNullPlaceholderFromOptions:(CPDictionary)someOptions +{ + var placeholder = [someOptions objectForKey:CPNullPlaceholderBindingOption] || @""; + + if (placeholder === [CPNull null]) + placeholder = @""; + + return placeholder; +} + - (void)_setContentValues:(CPArray)aValue { - var count = [aValue count]; + var infoDictionary = [self infoForBinding:CPContentValuesBinding], + options = [infoDictionary objectForKey:CPOptionsKey], + insertNullValue = [options objectForKey:CPInsertsNullPlaceholderBindingOption], + insertNull = [insertNullValue boolValue] ? 1 : 0, + nullPlaceHolderValue = [self _getNullPlaceholderFromOptions:options], + count = [aValue count]; - if (count != [self numberOfItems]) + if (count + insertNull != [self numberOfItems]) { [self removeAllItems]; + + if (insertNull) + [self addItemWithTitle:nullPlaceHolderValue]; + for (var i = 0; i < count; i++) - [self addItemWithTitle:[aValue objectAtIndex:i]]; + [self addItemWithTitle:[self _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; } else { + if (insertNull) + [[self itemAtIndex:0] setTitle:nullPlaceHolderValue]; + for (var i = 0; i < count; i++) - [[self itemAtIndex:i] setTitle:[aValue objectAtIndex:i]]; + [[self itemAtIndex:i + insertNull] setTitle:[self _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; } + [self synchronizeTitleAndSelectedItem]; } @@ -813,11 +848,22 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); - (void)_setContent:(CPArray)aValue { - var count = [aValue count]; + var infoDictionary = [self infoForBinding:CPContentBinding], + options = [infoDictionary objectForKey:CPOptionsKey], + insertNullValue = [options objectForKey:CPInsertsNullPlaceholderBindingOption], + insertNull = [insertNullValue boolValue] ? 1 : 0, + count = [aValue count]; - if (count != [self numberOfItems]) + if (count + insertNull != [self numberOfItems]) { [self removeAllItems]; + + if (insertNull) + { + var item = [[CPMenuItem alloc] initWithTitle:[self _getNullPlaceholderFromOptions:options] action:NULL keyEquivalent:nil]; + [self addItem:item]; + } + for (var i = 0; i < count; i++) { var item = [[CPMenuItem alloc] initWithTitle:@"" action:NULL keyEquivalent:nil]; @@ -828,13 +874,18 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); else { for (var i = 0; i < count; i++) - [[self itemAtIndex:i] setRepresentedObject:[aValue objectAtIndex:i]]; + { + [[self itemAtIndex:i + insertNull] setRepresentedObject:[aValue objectAtIndex:i]]; + } } if (![self infoForBinding:CPContentValuesBinding]) { + if (insertNull) + [[self itemAtIndex:0] setTitle:[self _getNullPlaceholderFromOptions:options]]; + for (var i = 0; i < count; i++) - [[self itemAtIndex:i] setTitle:[[aValue objectAtIndex:i] description]]; + [[self itemAtIndex:i + insertNull] setTitle:[[aValue objectAtIndex:i] description]]; } } @@ -872,33 +923,92 @@ var binderForObject = {}, [binder reverseSetValueFor:[binder binding]]; } -- (void)setValue:(id)aValue forBinding:(CPString)aBinding -{ - if (aBinding == CPSelectedIndexBinding) - [_source selectItemAtIndex:aValue]; - else if (aBinding == CPSelectedObjectBinding) - [_source selectItemAtIndex:[_source indexOfItemWithRepresentedObject:aValue]]; - else if (aBinding == CPSelectedTagBinding) - [_source selectItemWithTag:aValue]; - else if (aBinding == CPSelectedValueBinding) - [_source selectItemWithTitle:aValue]; -} - - (void)setPlaceholderValue:(id)aValue withMarker:(CPString)aMarker forBinding:(CPString)aBinding { [self setValue:aValue forBinding:aBinding]; } +@end + +@implementation _CPPopUpButtonSelectedIndexBinder : _CPPopUpButtonSelectionBinder +{ +} + +- (void)setValue:(id)aValue forBinding:(CPString)aBinding +{ + [_source selectItemAtIndex:aValue]; +} + - (id)valueForBinding:(CPString)aBinding { - if (aBinding == CPSelectedIndexBinding) - return [_source indexOfSelectedItem]; - else if (aBinding == CPSelectedObjectBinding) - return [[_source selectedItem] representedObject]; - else if (aBinding == CPSelectedTagBinding) - return [[_source selectedItem] tag]; - else if (aBinding == CPSelectedValueBinding) - return [_source titleOfSelectedItem]; + return [_source indexOfSelectedItem]; +} + +@end + +@implementation _CPPopUpButtonSelectedObjectBinder : _CPPopUpButtonSelectionBinder +{ +} + +- (void)setValue:(id)aValue forBinding:(CPString)aBinding +{ + var index = [_source indexOfItemWithRepresentedObject:aValue]; + + // If the content binding has the option CPNullPlaceholderBindingOption and the object to select is nil, select the first item (i.e., the placeholder). + // Other cases to consider: + // 1. no binding: + // 1.1 there's no item with a represented object matching the object to select. + // 1.2 the object to select is nil/CPNull + // 2. there's a binding: + // 2.1 there's a CPNullPlaceholderBindingOption: + // 2.1.1 there's no item with a represented object matching the object to select? + // 2.1.2 the object to select is nil/CPNull + // 2.2 there's no CPNullPlaceholderBindingOption: + // 2.2.1 there's no item with a represented object matching the object to select? + // 2.2.2 the object to select is nil/CPNull + // More cases? Behaviour that depends on array controller settings? + + if ([[[[CPBinder infoForBinding:CPContentBinding forObject:_source] objectForKey:CPOptionsKey] objectForKey:CPInsertsNullPlaceholderBindingOption] boolValue] && index === CPNotFound) + index = 0; + + [_source selectItemAtIndex:index]; +} + +- (id)valueForBinding:(CPString)aBinding +{ + return [[_source selectedItem] representedObject]; +} + +@end + +@implementation _CPPopUpButtonSelectedTagBinder : _CPPopUpButtonSelectionBinder +{ +} + +- (void)setValue:(id)aValue forBinding:(CPString)aBinding +{ + [_source selectItemWithTag:aValue]; +} + +- (id)valueForBinding:(CPString)aBinding +{ + return [[_source selectedItem] tag]; +} + +@end + +@implementation _CPPopUpButtonSelectedValueBinder : _CPPopUpButtonSelectionBinder +{ +} + +- (void)setValue:(id)aValue forBinding:(CPString)aBinding +{ + [_source selectItemWithTitle:aValue]; +} + +- (id)valueForBinding:(CPString)aBinding +{ + return [_source titleOfSelectedItem]; } @end diff --git a/Tests/AppKit/CPPopUpButtonTest.j b/Tests/AppKit/CPPopUpButtonTest.j index e2c9ebc62..a9c35e9e9 100644 --- a/Tests/AppKit/CPPopUpButtonTest.j +++ b/Tests/AppKit/CPPopUpButtonTest.j @@ -1,10 +1,12 @@ +@import @import @import @implementation CPPopUpButtonTest : OJTestCase { CPPopUpButton button @accessors; + id objects @accessors; } - (void)setUp @@ -202,4 +204,202 @@ [self assert:2 equals:[[self button] indexOfItemWithTitle:@"three"]]; } +- (void)testSimpleStringBindingArrayController +{ + var arrayController = [[CPArrayController alloc] init], + objectController = [[CPObjectController alloc] init], + testObject = [CPMutableDictionary dictionary], + martin = @"Martin", + malte = @"Malte", + johan = @"Johan", + menuObjects = [martin, malte, johan]; + + [testObject setObject:@"I'm a testObject" forKey:@"Who am I"]; + [arrayController setContent:menuObjects]; + [objectController setContent:testObject]; + + [button bind:CPContentBinding toObject:arrayController withKeyPath:@"arrangedObjects" options:nil]; + [button bind:CPSelectedObjectBinding toObject:objectController withKeyPath:@"selection.xxx" options:nil]; + + [[self button] selectItemWithTitle:@"Martin"]; + [[self button] sendAction:@selector(actionTest:) to:self]; // This has to be done to trigger the reverse set of the binding + [self assert:martin equals:[testObject objectForKey:@"xxx"]]; + [[self button] selectItemWithTitle:@"Malte"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assert:malte equals:[testObject objectForKey:@"xxx"]]; + [[self button] selectItemWithTitle:@"Johan"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assert:johan equals:[testObject objectForKey:@"xxx"]]; + + [testObject setObject:martin forKey:@"xxx"]; + [self assert:0 equals:[[self button] indexOfSelectedItem]]; + [testObject setObject:malte forKey:@"xxx"]; + [self assert:1 equals:[[self button] indexOfSelectedItem]]; + [testObject setObject:johan forKey:@"xxx"]; + [self assert:2 equals:[[self button] indexOfSelectedItem]]; +} + +- (void)testSimpleStringBindingNullPlaceholderOption +{ + var arrayController = [[CPArrayController alloc] init], + objectController = [[CPObjectController alloc] init], + testObject = [CPMutableDictionary dictionary], + martin = @"Martin", + malte = @"Malte", + johan = @"Johan", + menuObjects = [martin, malte, johan], + insertsNullPlaceholderOption = [CPDictionary dictionaryWithObjects:[YES, @"Null Placeholder"] forKeys:[CPInsertsNullPlaceholderBindingOption, CPNullPlaceholderBindingOption]]; + + [testObject setObject:@"I'm a testObject" forKey:@"Who am I"]; + [arrayController setContent:menuObjects]; + [objectController setContent:testObject]; + + [button bind:CPContentBinding toObject:arrayController withKeyPath:@"arrangedObjects" options:insertsNullPlaceholderOption]; + [button bind:CPSelectedObjectBinding toObject:objectController withKeyPath:@"selection.xxx" options:insertsNullPlaceholderOption]; + + [[self button] selectItemWithTitle:@"Martin"]; + [[self button] sendAction:@selector(actionTest:) to:self]; // This has to be done to trigger the reverse set of the binding + [self assert:martin equals:[testObject objectForKey:@"xxx"]]; + [[self button] selectItemWithTitle:@"Malte"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assert:malte equals:[testObject objectForKey:@"xxx"]]; + [[self button] selectItemWithTitle:@"Johan"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assert:johan equals:[testObject objectForKey:@"xxx"]]; + + [[self button] selectItemWithTitle:@"Null Placeholder"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assertNull:[testObject objectForKey:@"xxx"]]; + + [testObject setObject:martin forKey:@"xxx"]; + [self assert:1 equals:[[self button] indexOfSelectedItem]]; + [testObject setObject:malte forKey:@"xxx"]; + [self assert:2 equals:[[self button] indexOfSelectedItem]]; + [testObject setObject:johan forKey:@"xxx"]; + [self assert:3 equals:[[self button] indexOfSelectedItem]]; + + [testObject removeObjectForKey:@"xxx"]; + [self assert:0 equals:[[self button] indexOfSelectedItem]]; +} + +- (void)testSimpleObjectBindingArrayController +{ + var arrayController = [[CPArrayController alloc] init], + objectController = [[CPObjectController alloc] init], + testObject = [CPMutableDictionary dictionary], + martin = [CPDictionary dictionaryWithJSObject:{@"name": @"Martin"}], + malte = [CPDictionary dictionaryWithJSObject:{@"name": @"Malte"}], + johan = [CPDictionary dictionaryWithJSObject:{@"name": @"Johan"}], + menuObjects = [martin, malte, johan]; + + [testObject setObject:@"I'm a testObject" forKey:@"Who am I"]; + [arrayController setContent:menuObjects]; + [objectController setContent:testObject]; + + [button bind:CPContentBinding toObject:arrayController withKeyPath:@"arrangedObjects" options:nil]; + [button bind:CPContentValuesBinding toObject:arrayController withKeyPath:@"arrangedObjects.name" options:nil]; + [button bind:CPSelectedObjectBinding toObject:objectController withKeyPath:@"selection.xxx" options:nil]; + + [[self button] selectItemWithTitle:@"Martin"]; + [[self button] sendAction:@selector(actionTest:) to:self]; // This has to be done to trigger the reverse set of the binding + [self assert:martin equals:[testObject objectForKey:@"xxx"]]; + [[self button] selectItemWithTitle:@"Malte"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assert:malte equals:[testObject objectForKey:@"xxx"]]; + [[self button] selectItemWithTitle:@"Johan"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assert:johan equals:[testObject objectForKey:@"xxx"]]; + + [testObject setObject:martin forKey:@"xxx"]; + [self assert:0 equals:[[self button] indexOfSelectedItem]]; + [testObject setObject:malte forKey:@"xxx"]; + [self assert:1 equals:[[self button] indexOfSelectedItem]]; + [testObject setObject:johan forKey:@"xxx"]; + [self assert:2 equals:[[self button] indexOfSelectedItem]]; +} + +- (void)testObjectBindingNullPlaceholderOption +{ + var arrayController = [[CPArrayController alloc] init], + martin = [CPDictionary dictionaryWithJSObject:{@"name": @"Martin"}], + malte = [CPDictionary dictionaryWithJSObject:{@"name": @"Malte"}], + johan = [CPDictionary dictionaryWithJSObject:{@"name": @"Johan"}], + menuObjects = [martin, malte, johan], + insertsNullPlaceholderOption = [CPDictionary dictionaryWithObjects:[YES, @"Null Placeholder"] forKeys:[CPInsertsNullPlaceholderBindingOption, CPNullPlaceholderBindingOption]]; + + [arrayController setContent:menuObjects]; + [button bind:CPContentBinding toObject:arrayController withKeyPath:@"arrangedObjects" options:insertsNullPlaceholderOption]; + [button bind:CPContentValuesBinding toObject:arrayController withKeyPath:@"arrangedObjects.name" options:insertsNullPlaceholderOption]; + + [self assert:4 equals:[[self button] numberOfItems]]; + [self assert:0 equals:[[self button] indexOfItemWithTitle:@"Null Placeholder"]]; + [self assert:1 equals:[[self button] indexOfItemWithTitle:@"Martin"]]; + [self assert:2 equals:[[self button] indexOfItemWithTitle:@"Malte"]]; + [self assert:3 equals:[[self button] indexOfItemWithTitle:@"Johan"]]; + + [button unbind:CPContentValuesBinding]; + [button unbind:CPContentBinding]; + [button bind:CPContentValuesBinding toObject: arrayController withKeyPath:@"arrangedObjects.name" options:nil]; + [button bind:CPContentBinding toObject:arrayController withKeyPath:@"arrangedObjects" options:nil]; + + [self assert:3 equals:[[self button] numberOfItems]]; + [self assert:0 equals:[[self button] indexOfItemWithTitle:@"Martin"]]; + [self assert:1 equals:[[self button] indexOfItemWithTitle:@"Malte"]]; + [self assert:2 equals:[[self button] indexOfItemWithTitle:@"Johan"]]; +} + +- (void)testSelectedObjectBindingArrayController +{ + var arrayController = [[CPArrayController alloc] init], + objectController = [[CPObjectController alloc] init], + testObject = [CPMutableDictionary dictionary], + martin = [CPDictionary dictionaryWithJSObject:{@"name": @"Martin"}], + malte = [CPDictionary dictionaryWithJSObject:{@"name": @"Malte"}], + johan = [CPDictionary dictionaryWithJSObject:{@"name": @"Johan"}], + menuObjects = [martin, malte, johan], + insertsNullPlaceholderOption = [CPDictionary dictionaryWithObjects:[YES, @"Null Placeholder"] forKeys:[CPInsertsNullPlaceholderBindingOption, CPNullPlaceholderBindingOption]]; + + [testObject setObject:@"I'm a testObject" forKey:@"Who am I"]; + [arrayController setContent:menuObjects]; + [objectController setContent:testObject]; + + [button bind:CPContentBinding toObject:arrayController withKeyPath:@"arrangedObjects" options:insertsNullPlaceholderOption]; + [button bind:CPContentValuesBinding toObject:arrayController withKeyPath:@"arrangedObjects.name" options:insertsNullPlaceholderOption]; + [button bind:CPSelectedObjectBinding toObject:objectController withKeyPath:@"selection.xxx" options:nil]; + + [self assert:4 equals:[[self button] numberOfItems]]; + [self assert:0 equals:[[self button] indexOfItemWithTitle:@"Null Placeholder"]]; + [self assert:1 equals:[[self button] indexOfItemWithTitle:@"Martin"]]; + [self assert:2 equals:[[self button] indexOfItemWithTitle:@"Malte"]]; + [self assert:3 equals:[[self button] indexOfItemWithTitle:@"Johan"]]; + + [[self button] selectItemWithTitle:@"Martin"]; + [[self button] sendAction:@selector(actionTest:) to:self]; // This has to be done to trigger the reverse set of the binding + [self assert:martin equals:[testObject objectForKey:@"xxx"]]; + [[self button] selectItemWithTitle:@"Malte"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assert:malte equals:[testObject objectForKey:@"xxx"]]; + [[self button] selectItemWithTitle:@"Johan"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assert:johan equals:[testObject objectForKey:@"xxx"]]; + + [[self button] selectItemWithTitle:@"Null Placeholder"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assertNull:[testObject objectForKey:@"xxx"]]; + + [testObject setObject:martin forKey:@"xxx"]; + [self assert:1 equals:[[self button] indexOfSelectedItem]]; + [testObject setObject:malte forKey:@"xxx"]; + [self assert:2 equals:[[self button] indexOfSelectedItem]]; + [testObject setObject:johan forKey:@"xxx"]; + [self assert:3 equals:[[self button] indexOfSelectedItem]]; + + [testObject removeObjectForKey:@"xxx"]; + [self assert:0 equals:[[self button] indexOfSelectedItem]]; +} + +- (void)actionTest:(id)sender +{ +} + @end From c7a8124be8b6b045983422632f8959d4fe2d254f Mon Sep 17 00:00:00 2001 From: cacaodev Date: Wed, 4 Jul 2012 09:51:56 +0200 Subject: [PATCH 022/114] CPPopUpButtonTest test CPContentValuesBinding with value transformer. Currently failing. --- Tests/AppKit/CPPopUpButtonTest.j | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Tests/AppKit/CPPopUpButtonTest.j b/Tests/AppKit/CPPopUpButtonTest.j index a9c35e9e9..40f20e0b9 100644 --- a/Tests/AppKit/CPPopUpButtonTest.j +++ b/Tests/AppKit/CPPopUpButtonTest.j @@ -398,8 +398,38 @@ [self assert:0 equals:[[self button] indexOfSelectedItem]]; } +- (void)testContentValuesWithValueTransformer +{ + var arrayController = [[CPArrayController alloc] init], + martin = [CPDictionary dictionaryWithJSObject:{@"name": @"Martin"}], + malte = [CPDictionary dictionaryWithJSObject:{@"name": @"Malte"}], + johan = [CPDictionary dictionaryWithJSObject:{@"name": @"Johan"}], + menuObjects = [martin, malte, johan]; + + [arrayController setContent:menuObjects]; + + [button bind:CPContentBinding toObject:arrayController withKeyPath:@"arrangedObjects" options:nil]; + var options = [CPDictionary dictionary]; + [options setObject:[ContentValuesTransformer new] forKey:CPValueTransformerBindingOption]; + [button bind:CPContentValuesBinding toObject:arrayController withKeyPath:@"arrangedObjects.name" options:options]; + + [self assert:@"Transformed-Malte" equals:[[[self button] itemAtIndex:1] title]]; +} + - (void)actionTest:(id)sender { } @end + + +@implementation ContentValuesTransformer : CPValueTransformer +{ +} + +- (id)transformedValue:(id)aValue +{ + return "Transformed-" + aValue; +} + +@end \ No newline at end of file From 42f49795afae32f07919fe08e1d04b21d13a47f9 Mon Sep 17 00:00:00 2001 From: cacaodev Date: Wed, 4 Jul 2012 19:35:53 +0200 Subject: [PATCH 023/114] Ignore Value Transformers, no error and log an info message. --- AppKit/CPPopUpButton.j | 138 ++++++++++++------ .../CPPopUpButtonBindings/AppController.j | 22 ++- .../Resources/MainMenu.cib | 4 +- .../Resources/MainMenu.xib | 28 ++-- 4 files changed, 121 insertions(+), 71 deletions(-) diff --git a/AppKit/CPPopUpButton.j b/AppKit/CPPopUpButton.j index 734e17f04..c800b875f 100644 --- a/AppKit/CPPopUpButton.j +++ b/AppKit/CPPopUpButton.j @@ -25,7 +25,6 @@ @import "CPKeyValueBinding.j" @import "CPMenu.j" @import "CPMenuItem.j" -@import var VISIBLE_MARGIN = 7.0; @@ -777,7 +776,10 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); if (aBinding == CPSelectedIndexBinding || aBinding == CPSelectedObjectBinding || aBinding == CPSelectedTagBinding || - aBinding == CPSelectedValueBinding) + aBinding == CPSelectedValueBinding || + aBinding == CPContentBinding || + aBinding == CPContentObjectsBinding || + aBinding == CPContentValuesBinding) { var capitalizedBinding = aBinding.charAt(0).toUpperCase() + aBinding.substr(1); @@ -787,11 +789,6 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); return [super _binderClassForBinding:aBinding]; } -- (CPArray)_contentValues -{ - return [self valueForKeyPath:@"itemArray.title"]; -} - - (id)_valueOrNilIfCPNull:(id)aValue { if (aValue === [CPNull null]) @@ -810,85 +807,132 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); return placeholder; } -- (void)_setContentValues:(CPArray)aValue +@end + +@implementation _CPPopUpButtonContentBinder : CPBinder { - var infoDictionary = [self infoForBinding:CPContentValuesBinding], - options = [infoDictionary objectForKey:CPOptionsKey], - insertNullValue = [options objectForKey:CPInsertsNullPlaceholderBindingOption], - insertNull = [insertNullValue boolValue] ? 1 : 0, - nullPlaceHolderValue = [self _getNullPlaceholderFromOptions:options], - count = [aValue count]; - - if (count + insertNull != [self numberOfItems]) - { - [self removeAllItems]; - - if (insertNull) - [self addItemWithTitle:nullPlaceHolderValue]; - - for (var i = 0; i < count; i++) - [self addItemWithTitle:[self _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; - } - else - { - if (insertNull) - [[self itemAtIndex:0] setTitle:nullPlaceHolderValue]; - - for (var i = 0; i < count; i++) - [[self itemAtIndex:i + insertNull] setTitle:[self _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; - } - - [self synchronizeTitleAndSelectedItem]; } -- (CPArray)_content +- (id)transformValue:(id)aValue withOptions:(CPDictionary)options { - return [self valueForKeyPath:@"itemArray.representedObject"]; + CPLogConsole("Value Transformers are not supported yet for CP(Content|ContentObjects|ContentValues)Binding. Ignoring."); + return aValue; +} + +- (void)setValue:(id)aValue forBinding:(CPString)aBinding +{ + [self _setContent:aValue]; +} + +- (void)valueForBinding:(CPString)aBinding +{ + return [self _content]; } - (void)_setContent:(CPArray)aValue { - var infoDictionary = [self infoForBinding:CPContentBinding], - options = [infoDictionary objectForKey:CPOptionsKey], + var options = [_info objectForKey:CPOptionsKey], insertNullValue = [options objectForKey:CPInsertsNullPlaceholderBindingOption], insertNull = [insertNullValue boolValue] ? 1 : 0, count = [aValue count]; - if (count + insertNull != [self numberOfItems]) + if (count + insertNull != [_source numberOfItems]) { - [self removeAllItems]; + [_source removeAllItems]; if (insertNull) { - var item = [[CPMenuItem alloc] initWithTitle:[self _getNullPlaceholderFromOptions:options] action:NULL keyEquivalent:nil]; - [self addItem:item]; + var item = [[CPMenuItem alloc] initWithTitle:[_source _getNullPlaceholderFromOptions:options] action:NULL keyEquivalent:nil]; + [_source addItem:item]; } for (var i = 0; i < count; i++) { var item = [[CPMenuItem alloc] initWithTitle:@"" action:NULL keyEquivalent:nil]; [item setRepresentedObject:[aValue objectAtIndex:i]]; - [self addItem:item]; + [_source addItem:item]; } } else { for (var i = 0; i < count; i++) { - [[self itemAtIndex:i + insertNull] setRepresentedObject:[aValue objectAtIndex:i]]; + [[_source itemAtIndex:i + insertNull] setRepresentedObject:[aValue objectAtIndex:i]]; } } if (![self infoForBinding:CPContentValuesBinding]) { if (insertNull) - [[self itemAtIndex:0] setTitle:[self _getNullPlaceholderFromOptions:options]]; + [[_source itemAtIndex:0] setTitle:[_source _getNullPlaceholderFromOptions:options]]; for (var i = 0; i < count; i++) - [[self itemAtIndex:i + insertNull] setTitle:[[aValue objectAtIndex:i] description]]; + [[_source itemAtIndex:i + insertNull] setTitle:[[aValue objectAtIndex:i] description]]; } } +- (CPArray)_content +{ + return [_source valueForKeyPath:@"itemArray.representedObject"]; +} + +@end + +@implementation _CPPopUpButtonContentValuesBinder : CPBinder +{ +} + +- (id)transformValue:(id)aValue withOptions:(CPDictionary)options +{ + CPLogConsole("Value Transformers are not supported yet for CP(Content|ContentObjects|ContentValues)Binding. Ignoring."); + return aValue; +} + +- (void)setValue:(id)aValue forBinding:(CPString)aBinding +{ + [self _setContentValues:aValue]; +} + +- (void)valueForBinding:(CPString)aBinding +{ + return [self _content]; +} + +- (void)_setContentValues:(CPArray)aValue +{ + var options = [_info objectForKey:CPOptionsKey], + insertNullValue = [options objectForKey:CPInsertsNullPlaceholderBindingOption], + insertNull = [insertNullValue boolValue] ? 1 : 0, + nullPlaceHolderValue = [_source _getNullPlaceholderFromOptions:options], + count = [aValue count]; + + if (count + insertNull != [_source numberOfItems]) + { + [_source removeAllItems]; + + if (insertNull) + [_source addItemWithTitle:nullPlaceHolderValue]; + + for (var i = 0; i < count; i++) + [_source addItemWithTitle:[_source _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; + } + else + { + if (insertNull) + [[_source itemAtIndex:0] setTitle:nullPlaceHolderValue]; + + for (var i = 0; i < count; i++) + [[_source itemAtIndex:i + insertNull] setTitle:[_source _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; + } + + [_source synchronizeTitleAndSelectedItem]; +} + +- (CPArray)_content +{ + return [_source valueForKeyPath:@"itemArray.title"]; +} + @end var binderForObject = {}, diff --git a/Tests/Manual/CPPopUpButtonBindings/AppController.j b/Tests/Manual/CPPopUpButtonBindings/AppController.j index 74b2e940f..7eda84695 100644 --- a/Tests/Manual/CPPopUpButtonBindings/AppController.j +++ b/Tests/Manual/CPPopUpButtonBindings/AppController.j @@ -7,6 +7,7 @@ */ @import +//@import "CPPopUpButton.j" @implementation AppController : CPObject { @@ -16,12 +17,17 @@ CPArray people @accessors; } ++ (void)initialize +{ + [CPValueTransformer setValueTransformer:[Transformer new] forName:@"Transformer"]; +} + - (void)awakeFromCib { var array = []; - [array addObject:[CPDictionary dictionaryWithObjectsAndKeys:@"John",@"name",@"Butcher",@"job",@"john@meat.com",@"email", 2, @"tag"]]; - [array addObject:[CPDictionary dictionaryWithObjectsAndKeys:@"Alberto",@"name",@"Seller",@"job",@"alberto@gmail.com",@"email", 0, @"tag"]]; - [array addObject:[CPDictionary dictionaryWithObjectsAndKeys:@"Barack",@"name",@"President",@"job",@"barack@whitehouse.gov",@"email", 1, @"tag"]]; + [array addObject:[CPDictionary dictionaryWithObjectsAndKeys:@"John",@"name",@"Butcher",@"job",@"john@meat.com",@"email", 2, @"tag", @"Resources/Jakabos1.jpg", @"image"]]; + [array addObject:[CPDictionary dictionaryWithObjectsAndKeys:@"Alberto",@"name",@"Seller",@"job",@"alberto@gmail.com",@"email", 0, @"tag", @"Resources/Jakabos2.jpg", @"image"]]; + [array addObject:[CPDictionary dictionaryWithObjectsAndKeys:@"Barack",@"name",@"President",@"job",@"barack@whitehouse.gov",@"email", 1, @"tag", @"Resources/Jakabos4.jpg", @"image"]]; [self setPeople:array]; @@ -39,3 +45,13 @@ @end +@implementation Transformer : CPValueTransformer +{ +} + +- (id)transformedValue:(CPString)aValue +{ + return "transformed " + aValue; +} + +@end \ No newline at end of file diff --git a/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib index 2fbee6e7b..7e92460dd 100644 --- a/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib +++ b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib @@ -1,4 +1,4 @@ -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;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;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;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;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;41E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;45E;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;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;56E;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;63E;D;K;6;CP$UIDd;2;64E;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;66E;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;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;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;43E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;73E;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;88E;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;89E;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;81E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;90E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;47E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;91E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;48E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;43E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;49E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;94E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;96E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;68E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;97E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;102E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;103E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;106E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;107E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;108E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;110E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;61E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;111E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;113E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;114E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;116E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;117E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;118E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;119E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;120E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;121E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;122E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;123E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;103E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;125E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;126E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;127E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;128E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;81E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;129E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;130E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;131E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;132E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;48E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;133E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;134E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;137E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;139E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;140E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;60E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;141E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;117E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;142E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;144E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;145E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;58E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;146E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;147E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;88E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;148E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;149E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;150E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;151E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;152E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;45E;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;44E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;154E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;154E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;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;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;157E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;171E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;172E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;174E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;175E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;176E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;177E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;178E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;180E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;182E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;3;183E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;53E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;54E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;184E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;166E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;166E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;166E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;185E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;153E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;153E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;187E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;189E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;51E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;192E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;153E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;193E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;194E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;194E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;189E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;195E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;51E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;196E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;153E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;197E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;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;3;182E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;198E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;198E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;182E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;170E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;199E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;12;$agrid-colorD;K;6;CP$UIDd;3;200E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;201E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;202E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;153E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;165E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;166E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;166E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;166E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;166E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;166E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;203E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;200E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;3;153E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;204E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;206E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;63E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;207E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;208E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;209E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;212E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;213E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;3;216E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;217E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;218E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;209E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;219E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;220E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;221E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;222E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;184E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;223E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;224E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;225E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;184E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;226E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;227E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;228E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;62E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;183E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;229E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;183E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;230E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;56E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;3;166E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;231E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;234E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;235E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;236E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;237E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;238E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;87E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;239E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;86E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;250E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;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;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;85E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;251E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;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;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;252E;E;D;K;10;$classnameS;17;CPArrayControllerK;8;$classesA;S;17;CPArrayControllerS;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;253E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;166E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;204E;K;37;CPArrayControllerAvoidsEmptySelectionD;K;6;CP$UIDd;3;166E;K;49;CPArrayControllerClearsFilterPredicateOnInsertionD;K;6;CP$UIDd;3;204E;K;41;CPArrayControllerFilterRestrictsInsertionD;K;6;CP$UIDd;3;166E;K;35;CPArrayControllerPreservesSelectionD;K;6;CP$UIDd;3;166E;K;39;CPArrayControllerSelectsInsertedObjectsD;K;6;CP$UIDd;3;166E;K;47;CPArrayControllerAlwaysUsesMultipleValuesMarkerD;K;6;CP$UIDd;3;204E;K;47;CPArrayControllerAutomaticallyRearrangesObjectsD;K;6;CP$UIDd;3;204E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;257E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;43E;E;E;S;8;delegateS;10;emailLabelS;8;jobLabelS;10;mainWindowS;9;nameLabelS;21;ordersArrayControllerS;15;ordersTableViewS;8;tagPopUpS;24;content: arrangedObjectsS;7;contentS;15;arrangedObjectsD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;35;contentValues: arrangedObjects.nameS;13;contentValuesS;20;arrangedObjects.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;29;selectedValue: selection.nameS;13;selectedValueS;14;selection.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.tagS;5;valueS;19;arrangedObjects.tagD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;34;contentValues: arrangedObjects.jobS;19;arrangedObjects.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;selectedTag: selection.tagS;11;selectedTagS;13;selection.tagD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;22;CPValidatesImmediatelyD;K;6;CP$UIDd;3;166E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;29;selectedIndex: selectionIndexS;13;selectedIndexS;14;selectionIndexD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;20;contentArray: peopleS;12;contentArrayS;6;peopleD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;22;CPValidatesImmediatelyD;K;6;CP$UIDd;3;166E;E;E;S;20;value: selection.jobS;13;selection.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;22;value: selection.emailS;15;selection.emailD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;21;value: selection.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;28;value: arrangedObjects.emailS;21;arrangedObjects.emailD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;27;value: arrangedObjects.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{335, 278}, {951, 373}}d;1;7S;6;Windowd;1;0S;20;{{0, 0}, {951, 373}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;E;E;S;6;normalS;22;{{14, 295}, {448, 29}}S;19;{{0, 0}, {448, 29}}d;2;12S;9;textfieldS;19;bezeled+placeholderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;258E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;159E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;204E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;204E;E;d;1;2d;1;4T;S;0;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;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;259E;E;S;5;EmailS;22;{{14, 327}, {448, 29}}S;3;JobS;22;{{14, 263}, {448, 29}}S;4;NameS;22;{{-1, -1}, {461, 260}}S;20;{{0, 0}, {461, 260}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;185E;E;E;d;2;20S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;181E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;198E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;198E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;260E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;261E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;56E;E;D;K;6;$classD;K;6;CP$UIDd;3;181E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;262E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;263E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;264E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;261E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;63E;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;22;{{467, 15}, {15, 228}}S;19;{{0, 0}, {15, 228}}d;1;8d;11;-2147483648S;8;scrollerS;17;disabled+verticalS;27;_verticalScrollerDidScroll:f;18;0.9382716049382716S;19;{{0, 0}, {482, 15}}S;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.9938144329896907S;20;{{0, 0}, {461, 243}}S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;3;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;266E;E;d;2;23S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;E;E;F;D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;205E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;267E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;268E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;269E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;4;named;3;101d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;270E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;271E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;175E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;272E;K;6;$afontD;K;6;CP$UIDd;3;274E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;276E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;d;1;3D;K;10;$classnameS;16;CPSortDescriptorK;8;$classesA;S;16;CPSortDescriptorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;215E;K;22;CPSortDescriptorKeyKeyD;K;6;CP$UIDd;3;207E;K;28;CPSortDescriptorAscendingKeyD;K;6;CP$UIDd;3;166E;K;27;CPSortDescriptorSelectorKeyD;K;6;CP$UIDd;3;277E;E;S;5;emaild;3;150D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;278E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;271E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;171E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;272E;K;6;$afontD;K;6;CP$UIDd;3;279E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;280E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;S;3;jobd;3;106D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;281E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;271E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;173E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;272E;K;6;$afontD;K;6;CP$UIDd;3;282E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;283E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;d;2;92f;22;3.4028234663852886e+38D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;284E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;271E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;285E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;272E;K;6;$afontD;K;6;CP$UIDd;3;286E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;287E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;S;19;{{0, 0}, {461, 23}}S;14;tableHeaderRowS;22;{{496, 23}, {217, 42}}S;19;{{0, 0}, {217, 42}}d;2;33S;53;CPSelectedIndexBinding +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;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;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;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;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;41E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;45E;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;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;56E;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;63E;D;K;6;CP$UIDd;2;64E;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;66E;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;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;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;43E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;73E;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;88E;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;89E;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;81E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;90E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;47E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;91E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;48E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;43E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;49E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;94E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;96E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;68E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;97E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;102E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;103E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;106E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;107E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;108E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;110E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;61E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;111E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;113E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;114E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;116E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;117E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;118E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;119E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;120E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;121E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;122E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;123E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;103E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;125E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;126E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;127E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;128E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;81E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;129E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;130E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;131E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;132E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;48E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;133E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;134E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;137E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;139E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;140E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;60E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;141E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;117E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;142E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;144E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;145E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;58E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;146E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;147E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;88E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;148E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;149E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;150E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;151E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;152E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;45E;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;44E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;154E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;154E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;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;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;157E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;171E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;172E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;174E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;175E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;176E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;177E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;178E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;180E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;182E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;3;183E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;53E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;54E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;184E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;166E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;166E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;166E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;185E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;153E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;153E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;187E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;189E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;51E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;192E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;153E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;193E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;194E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;194E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;189E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;195E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;51E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;196E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;153E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;197E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;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;3;182E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;198E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;198E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;182E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;170E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;199E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;12;$agrid-colorD;K;6;CP$UIDd;3;200E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;201E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;202E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;153E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;165E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;166E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;166E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;166E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;166E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;166E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;203E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;200E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;3;153E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;204E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;206E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;63E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;207E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;208E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;209E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;212E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;213E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;3;216E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;217E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;218E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;209E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;219E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;220E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;221E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;222E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;184E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;223E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;224E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;225E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;184E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;226E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;227E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;228E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;62E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;183E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;229E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;183E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;230E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;56E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;3;166E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;231E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;234E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;235E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;236E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;237E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;238E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;87E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;239E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;159E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;153E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;86E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;250E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;159E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;153E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;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;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;85E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;251E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;159E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;153E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;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;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;252E;E;D;K;10;$classnameS;17;CPArrayControllerK;8;$classesA;S;17;CPArrayControllerS;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;253E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;166E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;204E;K;37;CPArrayControllerAvoidsEmptySelectionD;K;6;CP$UIDd;3;166E;K;49;CPArrayControllerClearsFilterPredicateOnInsertionD;K;6;CP$UIDd;3;204E;K;41;CPArrayControllerFilterRestrictsInsertionD;K;6;CP$UIDd;3;166E;K;35;CPArrayControllerPreservesSelectionD;K;6;CP$UIDd;3;166E;K;39;CPArrayControllerSelectsInsertedObjectsD;K;6;CP$UIDd;3;166E;K;47;CPArrayControllerAlwaysUsesMultipleValuesMarkerD;K;6;CP$UIDd;3;204E;K;47;CPArrayControllerAutomaticallyRearrangesObjectsD;K;6;CP$UIDd;3;204E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;257E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;43E;E;E;S;8;delegateS;10;emailLabelS;8;jobLabelS;10;mainWindowS;9;nameLabelS;21;ordersArrayControllerS;15;ordersTableViewS;8;tagPopUpS;24;content: arrangedObjectsS;7;contentS;15;arrangedObjectsD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;35;contentValues: arrangedObjects.nameS;13;contentValuesS;20;arrangedObjects.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;29;selectedValue: selection.nameS;13;selectedValueS;14;selection.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.tagS;5;valueS;19;arrangedObjects.tagD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;34;contentValues: arrangedObjects.jobS;19;arrangedObjects.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;selectedTag: selection.tagS;11;selectedTagS;13;selection.tagD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;22;CPValidatesImmediatelyD;K;6;CP$UIDd;3;166E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;22;CPValueTransformerNameD;K;6;CP$UIDd;3;258E;E;E;S;29;selectedIndex: selectionIndexS;13;selectedIndexS;14;selectionIndexD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;20;contentArray: peopleS;12;contentArrayS;6;peopleD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;22;CPValidatesImmediatelyD;K;6;CP$UIDd;3;166E;E;E;S;20;value: selection.jobS;13;selection.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;22;value: selection.emailS;15;selection.emailD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;21;value: selection.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;28;value: arrangedObjects.emailS;21;arrangedObjects.emailD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;27;value: arrangedObjects.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{335, 278}, {951, 373}}d;1;7S;6;Windowd;1;0S;20;{{0, 0}, {951, 373}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;E;E;S;6;normalS;22;{{14, 295}, {448, 29}}S;19;{{0, 0}, {448, 29}}d;2;12S;9;textfieldS;19;bezeled+placeholderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;259E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;159E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;204E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;204E;E;d;1;2d;1;4T;S;0;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;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;260E;E;S;5;EmailS;22;{{14, 327}, {448, 29}}S;3;JobS;22;{{14, 263}, {448, 29}}S;4;NameS;22;{{-1, -1}, {461, 260}}S;20;{{0, 0}, {461, 260}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;185E;E;E;d;2;20S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;181E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;198E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;198E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;261E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;262E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;56E;E;D;K;6;$classD;K;6;CP$UIDd;3;181E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;263E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;264E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;262E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;63E;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;22;{{467, 15}, {15, 228}}S;19;{{0, 0}, {15, 228}}d;1;8d;11;-2147483648S;8;scrollerS;17;disabled+verticalS;27;_verticalScrollerDidScroll:f;18;0.9382716049382716S;19;{{0, 0}, {482, 15}}S;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.9938144329896907S;20;{{0, 0}, {461, 243}}S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;3;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;267E;E;d;2;23S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;E;E;F;D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;205E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;268E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;269E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;270E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;4;named;3;101d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;271E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;272E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;175E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;273E;K;6;$afontD;K;6;CP$UIDd;3;275E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;277E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;d;1;3D;K;10;$classnameS;16;CPSortDescriptorK;8;$classesA;S;16;CPSortDescriptorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;215E;K;22;CPSortDescriptorKeyKeyD;K;6;CP$UIDd;3;207E;K;28;CPSortDescriptorAscendingKeyD;K;6;CP$UIDd;3;166E;K;27;CPSortDescriptorSelectorKeyD;K;6;CP$UIDd;3;278E;E;S;5;emaild;3;150D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;279E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;272E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;171E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;273E;K;6;$afontD;K;6;CP$UIDd;3;280E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;281E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;S;3;jobd;3;106D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;282E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;272E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;173E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;273E;K;6;$afontD;K;6;CP$UIDd;3;283E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;284E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;d;2;92f;22;3.4028234663852886e+38D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;285E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;272E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;286E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;273E;K;6;$afontD;K;6;CP$UIDd;3;287E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;288E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;S;19;{{0, 0}, {461, 23}}S;14;tableHeaderRowS;22;{{496, 23}, {217, 42}}S;19;{{0, 0}, {217, 42}}d;2;33S;53;CPSelectedIndexBinding arrangedObjects.selectionIndexS;22;{{496, 68}, {217, 42}}S;34;CPSelectedTagBinding selection.tagS;23;{{496, 118}, {217, 42}}S;37;CPSelectedValueBinding -selection.nameS;22;{{729, 77}, {191, 24}}S;19;{{0, 0}, {191, 24}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;162E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;258E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;159E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;166E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;204E;E;S;6;Item 1S;17;_popUpItemAction:d;1;1d;7;1048576S;6;Item 2S;6;Item 3S;22;{{729, 32}, {191, 24}}S;23;{{729, 127}, {191, 24}}S;13;AppControllerS;12;CPDictionaryS;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;E;E;S;17;Arial, sans-serifD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;56E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;288E;E;S;21;{{0, 243}, {461, 17}}S;19;{{0, 0}, {461, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;63E;E;E;S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;3;246E;E;E;S;22;{{467, 237}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;291E;E;E;S;12;columnHeaderS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;273E;K;4;nameD;K;6;CP$UIDd;3;292E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;293E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;275E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;294E;E;S;8;compare:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;295E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;273E;K;4;nameD;K;6;CP$UIDd;3;292E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;3;275E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;294E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;297E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;273E;K;4;nameD;K;6;CP$UIDd;3;292E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;3;275E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;294E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;299E;E;E;S;3;TagD;K;6;$classD;K;6;CP$UIDd;3;273E;K;4;nameD;K;6;CP$UIDd;3;292E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;300E;E;D;K;6;$classD;K;6;CP$UIDd;3;275E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;294E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;E;E;f;3;0.5D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;290E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;212E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;212E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;301E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;4;fontD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;290E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;219E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;219E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;301E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;290E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;223E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;223E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;301E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;290E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;227E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;227E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;301E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;d;2;18E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file +selection.nameS;22;{{729, 77}, {191, 24}}S;19;{{0, 0}, {191, 24}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;162E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;259E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;159E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;166E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;204E;E;S;6;Item 1S;17;_popUpItemAction:d;1;1d;7;1048576S;6;Item 2S;6;Item 3S;22;{{729, 32}, {191, 24}}S;23;{{729, 127}, {191, 24}}S;13;AppControllerS;12;CPDictionaryS;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;E;E;S;11;TransformerS;17;Arial, sans-serifD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;56E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;289E;E;S;21;{{0, 243}, {461, 17}}S;19;{{0, 0}, {461, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;63E;E;E;S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;290E;D;K;6;CP$UIDd;3;290E;D;K;6;CP$UIDd;3;290E;D;K;6;CP$UIDd;3;246E;E;E;S;22;{{467, 237}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;292E;E;E;S;12;columnHeaderS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;274E;K;4;nameD;K;6;CP$UIDd;3;293E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;294E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;276E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;295E;E;S;8;compare:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;296E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;274E;K;4;nameD;K;6;CP$UIDd;3;293E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;297E;E;D;K;6;$classD;K;6;CP$UIDd;3;276E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;295E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;298E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;274E;K;4;nameD;K;6;CP$UIDd;3;293E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;299E;E;D;K;6;$classD;K;6;CP$UIDd;3;276E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;295E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;300E;E;E;S;3;TagD;K;6;$classD;K;6;CP$UIDd;3;274E;K;4;nameD;K;6;CP$UIDd;3;293E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;301E;E;D;K;6;$classD;K;6;CP$UIDd;3;276E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;295E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;E;E;f;3;0.5D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;291E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;212E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;212E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;302E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;4;fontD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;291E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;219E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;219E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;302E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;291E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;223E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;223E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;302E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;291E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;227E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;227E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;302E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;d;2;18E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib index 472f784d5..625fb7078 100644 --- a/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib +++ b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib @@ -905,17 +905,21 @@ contentValues: arrangedObjects.name - + contentValues: arrangedObjects.name contentValues arrangedObjects.name + + NSValueTransformerName + Transformer + 2 - 579 + 618
@@ -928,11 +932,11 @@ selectedIndex: selectionIndex selectedIndex selectionIndex - + 2 - 580 + 619 @@ -1466,27 +1470,13 @@ - 617 + 619 AppController NSObject - - NSWindow - NSPopUpButton - - - - mainWindow - NSWindow - - - tagPopUp - NSPopUpButton - - IBProjectSource ./Classes/AppController.h From dbb88b8a170d9a6caa48a4b115801c491fe92430 Mon Sep 17 00:00:00 2001 From: Martin Carlberg Date: Fri, 6 Jul 2012 20:06:19 +0200 Subject: [PATCH 024/114] Included content and contentValue bindings improvments from cacaodev Fixed a small typo error --- AppKit/CPPopUpButton.j | 142 +++++++++++++++++++++++++++-------------- 1 file changed, 93 insertions(+), 49 deletions(-) diff --git a/AppKit/CPPopUpButton.j b/AppKit/CPPopUpButton.j index 734e17f04..ed0312699 100644 --- a/AppKit/CPPopUpButton.j +++ b/AppKit/CPPopUpButton.j @@ -25,7 +25,6 @@ @import "CPKeyValueBinding.j" @import "CPMenu.j" @import "CPMenuItem.j" -@import var VISIBLE_MARGIN = 7.0; @@ -777,7 +776,10 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); if (aBinding == CPSelectedIndexBinding || aBinding == CPSelectedObjectBinding || aBinding == CPSelectedTagBinding || - aBinding == CPSelectedValueBinding) + aBinding == CPSelectedValueBinding || + aBinding == CPContentBinding || + aBinding == CPContentObjectsBinding || + aBinding == CPContentValuesBinding) { var capitalizedBinding = aBinding.charAt(0).toUpperCase() + aBinding.substr(1); @@ -787,11 +789,6 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); return [super _binderClassForBinding:aBinding]; } -- (CPArray)_contentValues -{ - return [self valueForKeyPath:@"itemArray.title"]; -} - - (id)_valueOrNilIfCPNull:(id)aValue { if (aValue === [CPNull null]) @@ -810,85 +807,132 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); return placeholder; } -- (void)_setContentValues:(CPArray)aValue +@end + +@implementation _CPPopUpButtonContentBinder : CPBinder { - var infoDictionary = [self infoForBinding:CPContentValuesBinding], - options = [infoDictionary objectForKey:CPOptionsKey], - insertNullValue = [options objectForKey:CPInsertsNullPlaceholderBindingOption], - insertNull = [insertNullValue boolValue] ? 1 : 0, - nullPlaceHolderValue = [self _getNullPlaceholderFromOptions:options], - count = [aValue count]; - - if (count + insertNull != [self numberOfItems]) - { - [self removeAllItems]; - - if (insertNull) - [self addItemWithTitle:nullPlaceHolderValue]; - - for (var i = 0; i < count; i++) - [self addItemWithTitle:[self _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; - } - else - { - if (insertNull) - [[self itemAtIndex:0] setTitle:nullPlaceHolderValue]; - - for (var i = 0; i < count; i++) - [[self itemAtIndex:i + insertNull] setTitle:[self _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; - } - - [self synchronizeTitleAndSelectedItem]; } -- (CPArray)_content +- (id)transformValue:(id)aValue withOptions:(CPDictionary)options { - return [self valueForKeyPath:@"itemArray.representedObject"]; + CPLogConsole("Value Transformers are not supported yet for CP(Content|ContentObjects|ContentValues)Binding. Ignoring."); + return aValue; +} + +- (void)setValue:(id)aValue forBinding:(CPString)aBinding +{ + [self _setContent:aValue]; +} + +- (void)valueForBinding:(CPString)aBinding +{ + return [self _content]; } - (void)_setContent:(CPArray)aValue { - var infoDictionary = [self infoForBinding:CPContentBinding], - options = [infoDictionary objectForKey:CPOptionsKey], + var options = [_info objectForKey:CPOptionsKey], insertNullValue = [options objectForKey:CPInsertsNullPlaceholderBindingOption], insertNull = [insertNullValue boolValue] ? 1 : 0, count = [aValue count]; - if (count + insertNull != [self numberOfItems]) + if (count + insertNull != [_source numberOfItems]) { - [self removeAllItems]; + [_source removeAllItems]; if (insertNull) { - var item = [[CPMenuItem alloc] initWithTitle:[self _getNullPlaceholderFromOptions:options] action:NULL keyEquivalent:nil]; - [self addItem:item]; + var item = [[CPMenuItem alloc] initWithTitle:[_source _getNullPlaceholderFromOptions:options] action:NULL keyEquivalent:nil]; + [_source addItem:item]; } for (var i = 0; i < count; i++) { var item = [[CPMenuItem alloc] initWithTitle:@"" action:NULL keyEquivalent:nil]; [item setRepresentedObject:[aValue objectAtIndex:i]]; - [self addItem:item]; + [_source addItem:item]; } } else { for (var i = 0; i < count; i++) { - [[self itemAtIndex:i + insertNull] setRepresentedObject:[aValue objectAtIndex:i]]; + [[_source itemAtIndex:i + insertNull] setRepresentedObject:[aValue objectAtIndex:i]]; } } - if (![self infoForBinding:CPContentValuesBinding]) + if (![_source infoForBinding:CPContentValuesBinding]) { if (insertNull) - [[self itemAtIndex:0] setTitle:[self _getNullPlaceholderFromOptions:options]]; + [[_source itemAtIndex:0] setTitle:[_source _getNullPlaceholderFromOptions:options]]; for (var i = 0; i < count; i++) - [[self itemAtIndex:i + insertNull] setTitle:[[aValue objectAtIndex:i] description]]; + [[_source itemAtIndex:i + insertNull] setTitle:[[aValue objectAtIndex:i] description]]; } } +- (CPArray)_content +{ + return [_source valueForKeyPath:@"itemArray.representedObject"]; +} + +@end + +@implementation _CPPopUpButtonContentValuesBinder : CPBinder +{ +} + +- (id)transformValue:(id)aValue withOptions:(CPDictionary)options +{ + CPLogConsole("Value Transformers are not supported yet for CP(Content|ContentObjects|ContentValues)Binding. Ignoring."); + return aValue; +} + +- (void)setValue:(id)aValue forBinding:(CPString)aBinding +{ + [self _setContentValues:aValue]; +} + +- (void)valueForBinding:(CPString)aBinding +{ + return [self _content]; +} + +- (void)_setContentValues:(CPArray)aValue +{ + var options = [_info objectForKey:CPOptionsKey], + insertNullValue = [options objectForKey:CPInsertsNullPlaceholderBindingOption], + insertNull = [insertNullValue boolValue] ? 1 : 0, + nullPlaceHolderValue = [_source _getNullPlaceholderFromOptions:options], + count = [aValue count]; + + if (count + insertNull != [_source numberOfItems]) + { + [_source removeAllItems]; + + if (insertNull) + [_source addItemWithTitle:nullPlaceHolderValue]; + + for (var i = 0; i < count; i++) + [_source addItemWithTitle:[_source _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; + } + else + { + if (insertNull) + [[_source itemAtIndex:0] setTitle:nullPlaceHolderValue]; + + for (var i = 0; i < count; i++) + [[_source itemAtIndex:i + insertNull] setTitle:[_source _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; + } + + [_source synchronizeTitleAndSelectedItem]; +} + +- (CPArray)_content +{ + return [_source valueForKeyPath:@"itemArray.title"]; +} + @end var binderForObject = {}, @@ -1053,4 +1097,4 @@ var DEPRECATED_CPPopUpButtonMenuKey = @"CPPopUpButtonMenuKey", return self; } -@end +@end \ No newline at end of file From f5160785106a30d9c7e926d0d314d6fd9c7c24a4 Mon Sep 17 00:00:00 2001 From: cacaodev Date: Fri, 6 Jul 2012 22:32:36 +0200 Subject: [PATCH 025/114] PR #1573 Support value transformers for CPContent and CPContentValues bindings. Made _CPPopUpContentValuesBinder a subclass of CPPopUpContentBinder and reuse setContent:. Fixed a bug in selectedIndex binding set and reverse set when insertsNull options is on. _CPPopUPSelectionBinder : simplified the code for getting the unique selection binder in use. ojunit and manual tests for contentvalues + value transformer. --- AppKit/CPPopUpButton.j | 192 ++++---- .../CPPopUpButtonBindings/AppController.j | 2 +- .../Resources/MainMenu.cib | 11 +- .../Resources/MainMenu.xib | 456 ++++++++---------- 4 files changed, 293 insertions(+), 368 deletions(-) diff --git a/AppKit/CPPopUpButton.j b/AppKit/CPPopUpButton.j index e50ccc4a2..870186443 100644 --- a/AppKit/CPPopUpButton.j +++ b/AppKit/CPPopUpButton.j @@ -20,11 +20,11 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -@import "CPButton.j" -@import "CPGeometry.j" -@import "CPKeyValueBinding.j" -@import "CPMenu.j" -@import "CPMenuItem.j" +@import +@import +@import +@import +@import var VISIBLE_MARGIN = 7.0; @@ -789,17 +789,23 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); return [super _binderClassForBinding:aBinding]; } -- (id)_valueOrNilIfCPNull:(id)aValue -{ - if (aValue === [CPNull null]) - return nil; +@end - return aValue; +@implementation _CPPopUpButtonContentBinder : CPBinder +{ } -- (id)_getNullPlaceholderFromOptions:(CPDictionary)someOptions +- (CPInteger)_getInsertNullOffset { - var placeholder = [someOptions objectForKey:CPNullPlaceholderBindingOption] || @""; + var options = [_info objectForKey:CPOptionsKey]; + + return [options objectForKey:CPInsertsNullPlaceholderBindingOption] ? 1 : 0; +} + +- (CPString)_getNullPlaceholder +{ + var options = [_info objectForKey:CPOptionsKey], + placeholder = [options objectForKey:CPNullPlaceholderBindingOption] || @""; if (placeholder === [CPNull null]) placeholder = @""; @@ -807,21 +813,16 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); return placeholder; } -@end - -@implementation _CPPopUpButtonContentBinder : CPBinder +- (id)transformValue:(CPArray)contentArray withOptions:(CPDictionary)options { + // Desactivate the full array transformation forced by super because we don't want this. We want individual transformations (see below). + return contentArray; } -- (id)transformValue:(id)aValue withOptions:(CPDictionary)options +- (void)setValue:(CPArray)contentArray forBinding:(CPString)aBinding { - CPLogConsole("Value Transformers are not supported yet for CP(Content|ContentObjects|ContentValues)Binding. Ignoring."); - return aValue; -} - -- (void)setValue:(id)aValue forBinding:(CPString)aBinding -{ - [self _setContent:aValue]; + [self _setContent:contentArray]; + [self _setContentValuesIfNeeded:contentArray]; } - (void)valueForBinding:(CPString)aBinding @@ -831,25 +832,21 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); - (void)_setContent:(CPArray)aValue { - var options = [_info objectForKey:CPOptionsKey], - insertNullValue = [options objectForKey:CPInsertsNullPlaceholderBindingOption], - insertNull = [insertNullValue boolValue] ? 1 : 0, - count = [aValue count]; + var count = [aValue count], + options = [_info objectForKey:CPOptionsKey], + offset = [self _getInsertNullOffset]; - if (count + insertNull != [_source numberOfItems]) + if (count + offset != [_source numberOfItems]) { [_source removeAllItems]; - if (insertNull) - { - var item = [[CPMenuItem alloc] initWithTitle:[_source _getNullPlaceholderFromOptions:options] action:NULL keyEquivalent:nil]; - [_source addItem:item]; - } + if (offset) + [_source addItemWithTitle:[self _getNullPlaceholder]]; for (var i = 0; i < count; i++) { var item = [[CPMenuItem alloc] initWithTitle:@"" action:NULL keyEquivalent:nil]; - [item setRepresentedObject:[aValue objectAtIndex:i]]; + [self _setValue:[aValue objectAtIndex:i] forItem:item withOptions:options]; [_source addItem:item]; } } @@ -857,20 +854,37 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); { for (var i = 0; i < count; i++) { - [[_source itemAtIndex:i + insertNull] setRepresentedObject:[aValue objectAtIndex:i]]; + [self _setValue:[aValue objectAtIndex:i] forItem:[_source itemAtIndex:i + offset] withOptions:options]; } } +} + +- (void)_setContentValuesIfNeeded:(CPArray)values +{ + var offset = [self _getInsertNullOffset]; if (![_source infoForBinding:CPContentValuesBinding]) { - if (insertNull) - [[_source itemAtIndex:0] setTitle:[_source _getNullPlaceholderFromOptions:options]]; + if (offset) + [[_source itemAtIndex:0] setTitle:[self _getNullPlaceholder]]; + var count = [values count]; for (var i = 0; i < count; i++) - [[_source itemAtIndex:i + insertNull] setTitle:[[aValue objectAtIndex:i] description]]; + [[_source itemAtIndex:i + offset] setTitle:[[values objectAtIndex:i] description]]; } } +- (void)_setValue:(id)aValue forItem:(CPMenuItem)aMenuItem withOptions:(CPDictionary)options +{ + var value = [self _transformValue:aValue withOptions:options]; + [aMenuItem setRepresentedObject:value]; +} + +- (id)_transformValue:(id)aValue withOptions:(CPDictionary)options +{ + return [super transformValue:aValue withOptions:options]; +} + - (CPArray)_content { return [_source valueForKeyPath:@"itemArray.representedObject"]; @@ -878,54 +892,22 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); @end -@implementation _CPPopUpButtonContentValuesBinder : CPBinder +@implementation _CPPopUpButtonContentValuesBinder : _CPPopUpButtonContentBinder { } -- (id)transformValue:(id)aValue withOptions:(CPDictionary)options -{ - CPLogConsole("Value Transformers are not supported yet for CP(Content|ContentObjects|ContentValues)Binding. Ignoring."); - return aValue; -} - - (void)setValue:(id)aValue forBinding:(CPString)aBinding { - [self _setContentValues:aValue]; + [super _setContent:aValue]; } -- (void)valueForBinding:(CPString)aBinding +- (void)_setValue:(id)aValue forItem:(CPMenuItem)aMenuItem withOptions:(CPDictionary)options { - return [self _content]; -} + if (aValue === [CPNull null]) + aValue = nil; -- (void)_setContentValues:(CPArray)aValue -{ - var options = [_info objectForKey:CPOptionsKey], - insertNullValue = [options objectForKey:CPInsertsNullPlaceholderBindingOption], - insertNull = [insertNullValue boolValue] ? 1 : 0, - nullPlaceHolderValue = [_source _getNullPlaceholderFromOptions:options], - count = [aValue count]; - - if (count + insertNull != [_source numberOfItems]) - { - [_source removeAllItems]; - - if (insertNull) - [_source addItemWithTitle:nullPlaceHolderValue]; - - for (var i = 0; i < count; i++) - [_source addItemWithTitle:[_source _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; - } - else - { - if (insertNull) - [[_source itemAtIndex:0] setTitle:nullPlaceHolderValue]; - - for (var i = 0; i < count; i++) - [[_source itemAtIndex:i + insertNull] setTitle:[_source _valueOrNilIfCPNull:[aValue objectAtIndex:i]]]; - } - - [_source synchronizeTitleAndSelectedItem]; + var value = [self _transformValue:aValue withOptions:options]; + [aMenuItem setTitle:value]; } - (CPArray)_content @@ -935,36 +917,29 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); @end -var binderForObject = {}, - selectionBindings = [CPSelectedIndexBinding, CPSelectedObjectBinding, CPSelectedTagBinding, CPSelectedValueBinding]; +var binderForObject = {}; @implementation _CPPopUpButtonSelectionBinder : CPBinder { - CPString _selectionBinding @accessors(property=binding); + CPString _selectionBinding @accessors; +} + +- (id)initWithBinding:(CPString)aBinding name:(CPString)aName to:(id)aDestination keyPath:(CPString)aKeyPath options:(CPDictionary)options from:(id)aSource +{ + self = [super initWithBinding:aBinding name:aName to:aDestination keyPath:aKeyPath options:options from:aSource]; + if (self) + { + binderForObject[[aSource UID]] = self; + _selectionBinding = aName; + } + + return self; } + (void)reverseSetValueForObject:(id)aSource { - var uid = [aSource UID], - binder = binderForObject[uid]; - - if (binder == nil) - { - var count = selectionBindings.length; - while (count--) - { - var binding = selectionBindings[count]; - binder = [self getBinding:binding forObject:aSource]; - if (binder != nil) - { - binderForObject[uid] = binder; - [binder setBinding:binding]; - break; - } - } - } - - [binder reverseSetValueFor:[binder binding]]; + var binder = binderForObject[[aSource UID]]; + [binder reverseSetValueFor:[binder _selectionBinding]]; } - (void)setPlaceholderValue:(id)aValue withMarker:(CPString)aMarker forBinding:(CPString)aBinding @@ -972,6 +947,14 @@ var binderForObject = {}, [self setValue:aValue forBinding:aBinding]; } +- (CPInteger)_getInsertNullOffset +{ + var info = [CPBinder infoForBinding:CPContentBinding forObject:_source]; + var options = [info objectForKey:CPOptionsKey]; + + return [options objectForKey:CPInsertsNullPlaceholderBindingOption] ? 1 : 0; +} + @end @implementation _CPPopUpButtonSelectedIndexBinder : _CPPopUpButtonSelectionBinder @@ -980,12 +963,12 @@ var binderForObject = {}, - (void)setValue:(id)aValue forBinding:(CPString)aBinding { - [_source selectItemAtIndex:aValue]; + [_source selectItemAtIndex:aValue + [self _getInsertNullOffset]]; } - (id)valueForBinding:(CPString)aBinding { - return [_source indexOfSelectedItem]; + return [_source indexOfSelectedItem] - [self _getInsertNullOffset]; } @end @@ -996,7 +979,8 @@ var binderForObject = {}, - (void)setValue:(id)aValue forBinding:(CPString)aBinding { - var index = [_source indexOfItemWithRepresentedObject:aValue]; + var index = [_source indexOfItemWithRepresentedObject:aValue], + offset = [self _getInsertNullOffset]; // If the content binding has the option CPNullPlaceholderBindingOption and the object to select is nil, select the first item (i.e., the placeholder). // Other cases to consider: @@ -1012,7 +996,7 @@ var binderForObject = {}, // 2.2.2 the object to select is nil/CPNull // More cases? Behaviour that depends on array controller settings? - if ([[[[CPBinder infoForBinding:CPContentBinding forObject:_source] objectForKey:CPOptionsKey] objectForKey:CPInsertsNullPlaceholderBindingOption] boolValue] && index === CPNotFound) + if (offset === 1 && index === CPNotFound) index = 0; [_source selectItemAtIndex:index]; diff --git a/Tests/Manual/CPPopUpButtonBindings/AppController.j b/Tests/Manual/CPPopUpButtonBindings/AppController.j index 7eda84695..25b2e8e45 100644 --- a/Tests/Manual/CPPopUpButtonBindings/AppController.j +++ b/Tests/Manual/CPPopUpButtonBindings/AppController.j @@ -7,7 +7,7 @@ */ @import -//@import "CPPopUpButton.j" +@import "CPPopUpButton.j" @implementation AppController : CPObject { diff --git a/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib index 7e92460dd..1ccc6430f 100644 --- a/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib +++ b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.cib @@ -1,4 +1,7 @@ -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;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;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;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;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;41E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;45E;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;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;56E;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;63E;D;K;6;CP$UIDd;2;64E;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;66E;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;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;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;43E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;73E;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;88E;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;89E;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;81E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;90E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;47E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;91E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;48E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;43E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;49E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;94E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;96E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;68E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;97E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;102E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;103E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;106E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;107E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;108E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;110E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;61E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;111E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;113E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;114E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;116E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;117E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;118E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;119E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;120E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;121E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;122E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;99E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;123E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;103E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;125E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;126E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;127E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;128E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;81E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;129E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;130E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;131E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;132E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;48E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;133E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;134E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;137E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;139E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;140E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;60E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;141E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;117E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;142E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;144E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;145E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;58E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;146E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;147E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;88E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;148E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;149E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;150E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;151E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;152E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;45E;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;44E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;154E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;154E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;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;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;157E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;171E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;172E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;174E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;161E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;166E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;166E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;170E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;164E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;175E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;176E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;177E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;178E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;180E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;182E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;3;183E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;53E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;54E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;184E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;184E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;166E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;166E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;166E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;185E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;153E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;153E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;187E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;189E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;51E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;192E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;153E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;193E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;194E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;194E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;189E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;195E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;51E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;196E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;153E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;197E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;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;3;182E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;198E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;198E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;182E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;170E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;199E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;12;$agrid-colorD;K;6;CP$UIDd;3;200E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;201E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;202E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;153E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;165E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;166E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;166E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;166E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;166E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;166E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;203E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;200E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;3;153E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;204E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;206E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;63E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;207E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;208E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;209E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;212E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;213E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;3;216E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;217E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;218E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;209E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;219E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;220E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;221E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;222E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;184E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;210E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;223E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;224E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;225E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;184E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;226E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;227E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;228E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;214E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;204E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;166E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;62E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;183E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;229E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;183E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;230E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;56E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;3;166E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;231E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;234E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;235E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;236E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;237E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;6;$afontD;K;6;CP$UIDd;3;163E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;153E;K;11;$aalignmentD;K;6;CP$UIDd;3;165E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;166E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;238E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;204E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;204E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;153E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;165E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;87E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;239E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;159E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;153E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;68E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;86E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;250E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;159E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;153E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;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;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;73E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;45E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;85E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;251E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;45E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;233E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;165E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;204E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;159E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;153E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;166E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;164E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;153E;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;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;246E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;69E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;245E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;252E;E;D;K;10;$classnameS;17;CPArrayControllerK;8;$classesA;S;17;CPArrayControllerS;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;253E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;166E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;204E;K;37;CPArrayControllerAvoidsEmptySelectionD;K;6;CP$UIDd;3;166E;K;49;CPArrayControllerClearsFilterPredicateOnInsertionD;K;6;CP$UIDd;3;204E;K;41;CPArrayControllerFilterRestrictsInsertionD;K;6;CP$UIDd;3;166E;K;35;CPArrayControllerPreservesSelectionD;K;6;CP$UIDd;3;166E;K;39;CPArrayControllerSelectsInsertedObjectsD;K;6;CP$UIDd;3;166E;K;47;CPArrayControllerAlwaysUsesMultipleValuesMarkerD;K;6;CP$UIDd;3;204E;K;47;CPArrayControllerAutomaticallyRearrangesObjectsD;K;6;CP$UIDd;3;204E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;257E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;43E;E;E;S;8;delegateS;10;emailLabelS;8;jobLabelS;10;mainWindowS;9;nameLabelS;21;ordersArrayControllerS;15;ordersTableViewS;8;tagPopUpS;24;content: arrangedObjectsS;7;contentS;15;arrangedObjectsD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;35;contentValues: arrangedObjects.nameS;13;contentValuesS;20;arrangedObjects.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;29;selectedValue: selection.nameS;13;selectedValueS;14;selection.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.tagS;5;valueS;19;arrangedObjects.tagD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;34;contentValues: arrangedObjects.jobS;19;arrangedObjects.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;selectedTag: selection.tagS;11;selectedTagS;13;selection.tagD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;22;CPValidatesImmediatelyD;K;6;CP$UIDd;3;166E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;22;CPValueTransformerNameD;K;6;CP$UIDd;3;258E;E;E;S;29;selectedIndex: selectionIndexS;13;selectedIndexS;14;selectionIndexD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;20;contentArray: peopleS;12;contentArrayS;6;peopleD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;22;CPValidatesImmediatelyD;K;6;CP$UIDd;3;166E;E;E;S;20;value: selection.jobS;13;selection.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;22;value: selection.emailS;15;selection.emailD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;21;value: selection.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.jobD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;28;value: arrangedObjects.emailS;21;arrangedObjects.emailD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;27;value: arrangedObjects.nameD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;E;E;S;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{335, 278}, {951, 373}}d;1;7S;6;Windowd;1;0S;20;{{0, 0}, {951, 373}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;E;E;S;6;normalS;22;{{14, 295}, {448, 29}}S;19;{{0, 0}, {448, 29}}d;2;12S;9;textfieldS;19;bezeled+placeholderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;259E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;159E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;204E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;204E;E;d;1;2d;1;4T;S;0;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;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;260E;E;S;5;EmailS;22;{{14, 327}, {448, 29}}S;3;JobS;22;{{14, 263}, {448, 29}}S;4;NameS;22;{{-1, -1}, {461, 260}}S;20;{{0, 0}, {461, 260}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;185E;E;E;d;2;20S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;181E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;198E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;198E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;261E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;262E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;56E;E;D;K;6;$classD;K;6;CP$UIDd;3;181E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;263E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;264E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;262E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;63E;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;22;{{467, 15}, {15, 228}}S;19;{{0, 0}, {15, 228}}d;1;8d;11;-2147483648S;8;scrollerS;17;disabled+verticalS;27;_verticalScrollerDidScroll:f;18;0.9382716049382716S;19;{{0, 0}, {482, 15}}S;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.9938144329896907S;20;{{0, 0}, {461, 243}}S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;3;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;267E;E;d;2;23S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;E;E;F;D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;205E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;153E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;268E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;269E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;188E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;270E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;4;named;3;101d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;271E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;272E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;175E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;273E;K;6;$afontD;K;6;CP$UIDd;3;275E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;277E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;d;1;3D;K;10;$classnameS;16;CPSortDescriptorK;8;$classesA;S;16;CPSortDescriptorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;215E;K;22;CPSortDescriptorKeyKeyD;K;6;CP$UIDd;3;207E;K;28;CPSortDescriptorAscendingKeyD;K;6;CP$UIDd;3;166E;K;27;CPSortDescriptorSelectorKeyD;K;6;CP$UIDd;3;278E;E;S;5;emaild;3;150D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;279E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;272E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;171E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;273E;K;6;$afontD;K;6;CP$UIDd;3;280E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;281E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;S;3;jobd;3;106D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;282E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;272E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;173E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;273E;K;6;$afontD;K;6;CP$UIDd;3;283E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;284E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;d;2;92f;22;3.4028234663852886e+38D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;285E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;272E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;153E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;286E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;273E;K;6;$afontD;K;6;CP$UIDd;3;287E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;165E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;164E;K;11;$aalignmentD;K;6;CP$UIDd;3;153E;K;15;$acontent-insetD;K;6;CP$UIDd;3;288E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;167E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;168E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;165E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;153E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;S;19;{{0, 0}, {461, 23}}S;14;tableHeaderRowS;22;{{496, 23}, {217, 42}}S;19;{{0, 0}, {217, 42}}d;2;33S;53;CPSelectedIndexBinding -arrangedObjects.selectionIndexS;22;{{496, 68}, {217, 42}}S;34;CPSelectedTagBinding -selection.tagS;23;{{496, 118}, {217, 42}}S;37;CPSelectedValueBinding -selection.nameS;22;{{729, 77}, {191, 24}}S;19;{{0, 0}, {191, 24}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;162E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;259E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;159E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;166E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;204E;E;S;6;Item 1S;17;_popUpItemAction:d;1;1d;7;1048576S;6;Item 2S;6;Item 3S;22;{{729, 32}, {191, 24}}S;23;{{729, 127}, {191, 24}}S;13;AppControllerS;12;CPDictionaryS;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;E;E;S;11;TransformerS;17;Arial, sans-serifD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;56E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;169E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;289E;E;S;21;{{0, 243}, {461, 17}}S;19;{{0, 0}, {461, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;63E;E;E;S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;290E;D;K;6;CP$UIDd;3;290E;D;K;6;CP$UIDd;3;290E;D;K;6;CP$UIDd;3;246E;E;E;S;22;{{467, 237}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;292E;E;E;S;12;columnHeaderS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;274E;K;4;nameD;K;6;CP$UIDd;3;293E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;294E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;276E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;295E;E;S;8;compare:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;296E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;274E;K;4;nameD;K;6;CP$UIDd;3;293E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;297E;E;D;K;6;$classD;K;6;CP$UIDd;3;276E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;295E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;298E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;274E;K;4;nameD;K;6;CP$UIDd;3;293E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;299E;E;D;K;6;$classD;K;6;CP$UIDd;3;276E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;295E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;300E;E;E;S;3;TagD;K;6;$classD;K;6;CP$UIDd;3;274E;K;4;nameD;K;6;CP$UIDd;3;293E;K;12;defaultValueD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;301E;E;D;K;6;$classD;K;6;CP$UIDd;3;276E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;295E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;E;E;f;3;0.5D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;291E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;212E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;212E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;302E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;S;4;fontD;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;291E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;219E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;219E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;302E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;291E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;223E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;223E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;302E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;291E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;227E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;227E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;302E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;243E;K;6;normalD;K;6;CP$UIDd;3;163E;E;E;d;2;18E;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;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;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;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;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;43E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;47E;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;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;58E;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;2;66E;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;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;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;45E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;72E;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;83E;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;84E;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;76E;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;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;49E;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;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;50E;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;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;45E;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;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;90E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;58E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;91E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;72E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;92E;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;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;70E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;71E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;94E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;95E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;96E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;97E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;99E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;101E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;102E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;103E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;104E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;105E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;106E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;107E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;108E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;110E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;111E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;72E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;112E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;113E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;114E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;72E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;116E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;101E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;117E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;118E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;95E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;96E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;97E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;119E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;100E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;101E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;102E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;120E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;121E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;122E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;123E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;78E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;76E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;125E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;126E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;127E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;128E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;50E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;129E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;130E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;132E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;133E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;134E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;51E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;135E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;106E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;62E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;117E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;61E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;139E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;140E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;60E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;142E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;109E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;102E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;143E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;83E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;144E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;145E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;146E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;147E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;148E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;47E;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;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;150E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;150E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;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;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;154E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;159E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;160E;K;11;$aalignmentD;K;6;CP$UIDd;3;161E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;162E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;163E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;164E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;162E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;166E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;160E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;161E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;168E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;154E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;159E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;160E;K;11;$aalignmentD;K;6;CP$UIDd;3;161E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;162E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;163E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;164E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;162E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;166E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;160E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;161E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;169E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;170E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;154E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;159E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;160E;K;11;$aalignmentD;K;6;CP$UIDd;3;161E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;162E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;163E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;164E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;162E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;166E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;160E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;161E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;171E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;172E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;173E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;174E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;175E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;176E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;178E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;3;179E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;55E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;56E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;180E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;180E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;180E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;180E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;162E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;162E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;162E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;181E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;149E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;149E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;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;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;182E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;183E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;184E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;185E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;186E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;187E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;149E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;53E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;188E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;149E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;189E;K;18;CPScrollerStyleKeyD;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;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;190E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;191E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;184E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;185E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;186E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;192E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;149E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;53E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;193E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;149E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;194E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;178E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;195E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;195E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;178E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;166E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;196E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;12;$agrid-colorD;K;6;CP$UIDd;3;197E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;198E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;199E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;149E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;161E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;162E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;162E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;162E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;162E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;162E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;200E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;197E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;3;149E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;201E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;203E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;65E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;204E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;205E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;206E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;207E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;209E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;210E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;211E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;201E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;162E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;214E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;215E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;206E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;207E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;216E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;217E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;211E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;201E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;162E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;218E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;219E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;180E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;207E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;220E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;221E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;211E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;201E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;162E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;222E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;180E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;223E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;224E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;225E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;211E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;201E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;162E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;64E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;179E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;226E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;226E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;227E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;58E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;228E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;230E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;6;$afontD;K;6;CP$UIDd;3;159E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;149E;K;11;$aalignmentD;K;6;CP$UIDd;3;161E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;162E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;231E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;164E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;201E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;201E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;201E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;149E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;161E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;82E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;232E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;233E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;230E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;234E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;235E;K;6;$afontD;K;6;CP$UIDd;3;236E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;161E;K;11;$aalignmentD;K;6;CP$UIDd;3;149E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;237E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;201E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;155E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;149E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;162E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;160E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;149E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;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;69E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;238E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;239E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;240E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;16;$aimage-positionD;K;6;CP$UIDd;3;243E;K;6;$afontD;K;6;CP$UIDd;3;236E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;149E;K;11;$aalignmentD;K;6;CP$UIDd;3;160E;K;7;$aimageD;K;6;CP$UIDd;3;245E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;243E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;246E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;201E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;247E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;149E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;162E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;243E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;149E;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;69E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;248E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;239E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;240E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;242E;K;16;$aimage-positionD;K;6;CP$UIDd;3;243E;K;6;$afontD;K;6;CP$UIDd;3;236E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;149E;K;11;$aalignmentD;K;6;CP$UIDd;3;160E;K;7;$aimageD;K;6;CP$UIDd;3;249E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;243E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;246E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;201E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;247E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;149E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;162E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;243E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;149E;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;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;81E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;250E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;233E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;230E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;234E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;235E;K;6;$afontD;K;6;CP$UIDd;3;236E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;161E;K;11;$aalignmentD;K;6;CP$UIDd;3;149E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;237E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;201E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;155E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;149E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;162E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;160E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;149E;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;67E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;80E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;251E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;233E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;230E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;234E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;235E;K;6;$afontD;K;6;CP$UIDd;3;236E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;161E;K;11;$aalignmentD;K;6;CP$UIDd;3;149E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;237E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;201E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;155E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;149E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;162E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;160E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;149E;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;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;252E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;230E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;6;$afontD;K;6;CP$UIDd;3;159E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;149E;K;11;$aalignmentD;K;6;CP$UIDd;3;161E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;162E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;253E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;164E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;201E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;201E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;201E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;149E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;161E;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;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;254E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;230E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;6;$afontD;K;6;CP$UIDd;3;159E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;149E;K;11;$aalignmentD;K;6;CP$UIDd;3;161E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;162E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;255E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;164E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;201E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;201E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;201E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;149E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;161E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;256E;E;D;K;10;$classnameS;17;CPArrayControllerK;8;$classesA;S;17;CPArrayControllerS;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;257E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;162E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;201E;K;37;CPArrayControllerAvoidsEmptySelectionD;K;6;CP$UIDd;3;162E;K;49;CPArrayControllerClearsFilterPredicateOnInsertionD;K;6;CP$UIDd;3;201E;K;41;CPArrayControllerFilterRestrictsInsertionD;K;6;CP$UIDd;3;162E;K;35;CPArrayControllerPreservesSelectionD;K;6;CP$UIDd;3;162E;K;39;CPArrayControllerSelectsInsertedObjectsD;K;6;CP$UIDd;3;162E;K;47;CPArrayControllerAlwaysUsesMultipleValuesMarkerD;K;6;CP$UIDd;3;201E;K;47;CPArrayControllerAutomaticallyRearrangesObjectsD;K;6;CP$UIDd;3;201E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;258E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;259E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;258E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;260E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;258E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;261E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;45E;E;E;S;8;delegateS;10;emailLabelS;8;jobLabelS;10;mainWindowS;9;nameLabelS;21;ordersArrayControllerS;15;ordersTableViewS;8;tagPopUpS;4;add:S;7;remove:S;24;content: arrangedObjectsS;7;contentS;15;arrangedObjectsD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;24;CPInsertsNullPlaceholderD;K;6;CP$UIDd;3;162E;E;E;S;35;contentValues: arrangedObjects.nameS;13;contentValuesS;20;arrangedObjects.nameD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;24;CPInsertsNullPlaceholderD;K;6;CP$UIDd;3;162E;E;E;S;29;selectedValue: selection.nameS;13;selectedValueS;14;selection.nameD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.tagS;5;valueS;19;arrangedObjects.tagD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;E;E;S;26;selectedTag: selection.tagS;11;selectedTagS;13;selection.tagD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;22;CPValidatesImmediatelyD;K;6;CP$UIDd;3;162E;E;E;S;34;contentValues: arrangedObjects.jobS;19;arrangedObjects.jobD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;22;CPValueTransformerNameD;K;6;CP$UIDd;3;262E;E;E;S;29;selectedIndex: selectionIndexS;13;selectedIndexS;14;selectionIndexD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;E;E;S;20;contentArray: peopleS;12;contentArrayS;6;peopleD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;22;CPValidatesImmediatelyD;K;6;CP$UIDd;3;162E;E;E;S;20;value: selection.jobS;13;selection.jobD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;E;E;S;22;value: selection.emailS;15;selection.emailD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;E;E;S;21;value: selection.nameD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.jobD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;E;E;S;28;value: arrangedObjects.emailS;21;arrangedObjects.emailD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;E;E;S;27;value: arrangedObjects.nameD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;E;E;S;32;{10000000000000, 10000000000000}S;8;CPWindowS;25;{{335, 278}, {1074, 373}}d;1;7S;6;Windowd;1;0S;21;{{0, 0}, {1074, 373}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;E;E;S;6;normalS;22;{{14, 295}, {448, 29}}S;19;{{0, 0}, {448, 29}}d;2;12S;9;textfieldS;19;bezeled+placeholderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;158E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;263E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;155E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;201E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;201E;E;d;1;2d;1;4T;S;0;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;165E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;264E;E;S;5;EmailS;22;{{14, 327}, {448, 29}}S;3;JobS;22;{{14, 263}, {448, 29}}S;4;NameS;22;{{-1, -1}, {461, 206}}S;20;{{0, 0}, {461, 206}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;181E;E;E;d;2;20S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;177E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;195E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;195E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;265E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;184E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;266E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;58E;E;D;K;6;$classD;K;6;CP$UIDd;3;177E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;267E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;268E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;269E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;184E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;266E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;65E;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;E;S;23;{{467, -39}, {15, 228}}S;19;{{0, 0}, {15, 228}}d;1;8d;11;-2147483648S;8;scrollerS;17;disabled+verticalS;27;_verticalScrollerDidScroll:f;18;0.9382716049382716S;21;{{0, -54}, {482, 15}}S;19;{{0, 0}, {482, 15}}S;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.9938144329896907S;20;{{0, 0}, {461, 189}}S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;3;165E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;271E;E;d;2;23S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;E;E;F;D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;202E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;149E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;272E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;273E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;184E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;274E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;E;S;4;named;3;101d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;208E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;275E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;276E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;149E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;171E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;159E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;277E;K;6;$afontD;K;6;CP$UIDd;3;279E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;161E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;160E;K;11;$aalignmentD;K;6;CP$UIDd;3;149E;K;15;$acontent-insetD;K;6;CP$UIDd;3;281E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;163E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;164E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;161E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;149E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;163E;E;d;1;3D;K;10;$classnameS;16;CPSortDescriptorK;8;$classesA;S;16;CPSortDescriptorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;212E;K;22;CPSortDescriptorKeyKeyD;K;6;CP$UIDd;3;204E;K;28;CPSortDescriptorAscendingKeyD;K;6;CP$UIDd;3;162E;K;27;CPSortDescriptorSelectorKeyD;K;6;CP$UIDd;3;282E;E;S;5;emaild;3;150D;K;6;$classD;K;6;CP$UIDd;3;208E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;283E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;276E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;149E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;167E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;159E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;277E;K;6;$afontD;K;6;CP$UIDd;3;284E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;161E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;160E;K;11;$aalignmentD;K;6;CP$UIDd;3;149E;K;15;$acontent-insetD;K;6;CP$UIDd;3;285E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;163E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;164E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;161E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;149E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;163E;E;S;3;jobd;3;106D;K;6;$classD;K;6;CP$UIDd;3;208E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;286E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;276E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;149E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;169E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;159E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;277E;K;6;$afontD;K;6;CP$UIDd;3;287E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;161E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;160E;K;11;$aalignmentD;K;6;CP$UIDd;3;149E;K;15;$acontent-insetD;K;6;CP$UIDd;3;288E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;163E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;164E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;161E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;149E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;163E;E;d;2;92f;22;3.4028234663852886e+38D;K;6;$classD;K;6;CP$UIDd;3;208E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;289E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;276E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;149E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;290E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;159E;E;D;K;6;$classD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;277E;K;6;$afontD;K;6;CP$UIDd;3;291E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;161E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;160E;K;11;$aalignmentD;K;6;CP$UIDd;3;149E;K;15;$acontent-insetD;K;6;CP$UIDd;3;292E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;163E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;164E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;161E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;149E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;163E;E;S;19;{{0, 0}, {461, 23}}S;14;tableHeaderRowS;22;{{551, 23}, {285, 51}}S;19;{{0, 0}, {285, 51}}d;2;33S;110;Binding: CPSelectedIndexBinding +KeyPath: arrangedObjects.selectionIndex +ContentValues Transformer: TransformerS;22;{{852, 32}, {191, 24}}S;19;{{0, 0}, {191, 24}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;158E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;263E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;155E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;201E;E;d;2;-1S;22;{{423, 204}, {35, 24}}S;18;{{0, 0}, {35, 24}}d;2;36S;6;buttonS;17;selected+borderedd;1;1D;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;244E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;293E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;294E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;295E;E;S;15;Gradient Buttond;2;14S;22;{{389, 204}, {35, 24}}D;K;6;$classD;K;6;CP$UIDd;3;244E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;293E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;296E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;297E;E;S;23;{{852, 107}, {191, 24}}S;23;{{852, 184}, {191, 24}}S;22;{{551, 93}, {285, 51}}S;70;Binding: CPSelectedTagBinding +KeyPath: selection.tag +Transformer: NoneS;23;{{551, 161}, {285, 51}}S;73;Binding: CPSelectedValueBinding +KeyPath: selection.name +Transformer: NoneS;13;AppControllerS;12;CPDictionaryS;10;OtherViewsD;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;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;11;TransformerS;17;Arial, sans-serifD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;243E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;58E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;165E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;298E;E;S;21;{{0, 189}, {461, 17}}S;19;{{0, 0}, {461, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;65E;E;E;S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;299E;D;K;6;CP$UIDd;3;299E;D;K;6;CP$UIDd;3;299E;D;K;6;CP$UIDd;3;243E;E;E;S;22;{{467, 183}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;301E;E;E;S;12;columnHeaderS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;278E;K;4;nameD;K;6;CP$UIDd;3;302E;K;12;defaultValueD;K;6;CP$UIDd;3;159E;K;6;valuesD;K;6;CP$UIDd;3;303E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;280E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;304E;E;S;8;compare:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;305E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;278E;K;4;nameD;K;6;CP$UIDd;3;302E;K;12;defaultValueD;K;6;CP$UIDd;3;159E;K;6;valuesD;K;6;CP$UIDd;3;306E;E;D;K;6;$classD;K;6;CP$UIDd;3;280E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;304E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;307E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;278E;K;4;nameD;K;6;CP$UIDd;3;302E;K;12;defaultValueD;K;6;CP$UIDd;3;159E;K;6;valuesD;K;6;CP$UIDd;3;308E;E;D;K;6;$classD;K;6;CP$UIDd;3;280E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;304E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;309E;E;E;S;3;TagD;K;6;$classD;K;6;CP$UIDd;3;278E;K;4;nameD;K;6;CP$UIDd;3;302E;K;12;defaultValueD;K;6;CP$UIDd;3;159E;K;6;valuesD;K;6;CP$UIDd;3;310E;E;D;K;6;$classD;K;6;CP$UIDd;3;280E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;304E;E;S;7;CPImageS;13;CPAddTemplateD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;311E;E;E;S;16;CPRemoveTemplateD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;312E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;243E;E;E;f;3;0.5D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;300E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;209E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;209E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;313E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;E;S;4;fontD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;236E;K;6;normalD;K;6;CP$UIDd;3;159E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;300E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;216E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;216E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;313E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;236E;K;6;normalD;K;6;CP$UIDd;3;159E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;300E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;220E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;220E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;313E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;236E;K;6;normalD;K;6;CP$UIDd;3;159E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;300E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;224E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;270E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;224E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;313E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;236E;K;6;normalD;K;6;CP$UIDd;3;159E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;280E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;314E;E;D;K;6;$classD;K;6;CP$UIDd;3;280E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;314E;E;d;2;18S;22;{"width":0,"height":0}E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib index 625fb7078..24b533bab 100644 --- a/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib +++ b/Tests/Manual/CPPopUpButtonBindings/Resources/MainMenu.xib @@ -12,9 +12,10 @@ NSArrayController + NSButton + NSButtonCell NSCustomObject NSMenu - NSMenuItem NSPopUpButton NSPopUpButtonCell NSScrollView @@ -47,7 +48,7 @@ 7 2 - {{335, 377}, {951, 373}} + {{335, 377}, {1074, 373}} 1946157056 Window NSWindow @@ -68,7 +69,7 @@ 256 - {461, 243} + {461, 189} @@ -268,7 +269,7 @@ 1 - {{0, 17}, {461, 243}} + {{0, 17}, {461, 189}} @@ -315,7 +316,7 @@ - {{-1, 114}, {461, 260}} + {{-1, 168}, {461, 206}} @@ -400,10 +401,10 @@ 265 - {{728, 315}, {197, 26}} + {{851, 315}, {197, 26}} - + YES -2076049856 @@ -416,54 +417,14 @@ 400 75 - - - Item 1 - - 1048576 - 2147483647 - 1 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - _popUpItemAction: - - + YES OtherViews - - - - - Item 2 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Item 3 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - + + -1 1 YES YES @@ -473,10 +434,10 @@ 265 - {{728, 270}, {197, 26}} + {{851, 240}, {197, 26}} - + _NS:9 YES @@ -491,48 +452,14 @@ 400 75 - - - Item 1 - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - + YES OtherViews - - - - - Item 2 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Item 3 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - + + -1 1 YES YES @@ -542,7 +469,7 @@ 265 - {{728, 220}, {197, 26}} + {{851, 163}, {197, 26}} @@ -560,48 +487,14 @@ 400 75 - - - Item 1 - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - + YES OtherViews - - - - - Item 2 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Item 3 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - + + -1 1 YES YES @@ -611,7 +504,7 @@ 265 - {{496, 308}, {217, 42}} + {{551, 299}, {285, 51}} @@ -620,7 +513,8 @@ 67108864 272629760 - Q1BTZWxlY3RlZEluZGV4QmluZGluZwphcnJhbmdlZE9iamVjdHMuc2VsZWN0aW9uSW5kZXg + QmluZGluZzogQ1BTZWxlY3RlZEluZGV4QmluZGluZwpLZXlQYXRoOiBhcnJhbmdlZE9iamVjdHMuc2Vs +ZWN0aW9uSW5kZXgKQ29udGVudFZhbHVlcyBUcmFuc2Zvcm1lcjogVHJhbnNmb3JtZXI _NS:1549 @@ -633,48 +527,106 @@ - + + + 268 + {{425, 145}, {35, 23}} + + + + _NS:22 + YES + + -2080374784 + 134217728 + Gradient Button + + _NS:22 + + -2033958912 + 162 + + NSImage + NSAddTemplate + + + + 400 + 75 + + + + + 268 + {{391, 145}, {35, 23}} + + + + _NS:22 + YES + + -2080374784 + 134217728 + Gradient Button + + _NS:22 + + -2033958912 + 162 + + NSImage + NSRemoveTemplate + + + + 400 + 75 + + + 265 - {{496, 263}, {217, 42}} + {{551, 229}, {285, 51}} _NS:1549 YES - + 67108864 272629760 - Q1BTZWxlY3RlZFRhZ0JpbmRpbmcKc2VsZWN0aW9uLnRhZw + QmluZGluZzogQ1BTZWxlY3RlZFRhZ0JpbmRpbmcKS2V5UGF0aDogc2VsZWN0aW9uLnRhZwpUcmFuc2Zv +cm1lcjogTm9uZQ _NS:1549 - + - + 265 - {{496, 213}, {217, 42}} + {{551, 161}, {285, 51}} _NS:1549 YES - + 67108864 272629760 - Q1BTZWxlY3RlZFZhbHVlQmluZGluZwpzZWxlY3Rpb24ubmFtZQ + QmluZGluZzogQ1BTZWxlY3RlZFZhbHVlQmluZGluZwpLZXlQYXRoOiBzZWxlY3Rpb24ubmFtZQpUcmFu +c2Zvcm1lcjogTm9uZQ _NS:1549 - + - {951, 373} + {1074, 373} @@ -884,6 +836,22 @@ 578 + + + add: + + + + 624 + + + + remove: + + + + 625 + content: arrangedObjects @@ -938,38 +906,21 @@ 619 - - - content: arrangedObjects - - - - - - content: arrangedObjects - content - arrangedObjects - 2 - - - 590 - contentValues: arrangedObjects.job - + contentValues: arrangedObjects.job contentValues arrangedObjects.job - 2 - 592 + 630 @@ -986,11 +937,10 @@ NSValidatesImmediately - 2 - 617 + 631 @@ -1013,33 +963,41 @@ content: arrangedObjects - + content: arrangedObjects content arrangedObjects + + NSInsertsNullPlaceholder + + 2 - 606 + 632 contentValues: arrangedObjects.name - + contentValues: arrangedObjects.name contentValues arrangedObjects.name - + + NSInsertsNullPlaceholder + + + 2 - 608 + 633 @@ -1052,11 +1010,11 @@ selectedValue: selection.name selectedValue selection.name - + 2 - 610 + 634 @@ -1102,11 +1060,13 @@ - - - + + + + + @@ -1254,28 +1214,9 @@ 530 - - - - - + - - 531 - - - - - 532 - - - - - 533 - - - 584 @@ -1295,28 +1236,9 @@ 586 - - - - - + - - 587 - - - - - 588 - - - - - 589 - - - 595 @@ -1349,28 +1271,9 @@ 602 - - - - - + - - 603 - - - - - 604 - - - - - 605 - - - 611 @@ -1385,30 +1288,56 @@ - 613 - + 620 + - + - 614 - - + 621 + + - 615 - + 622 + - + - 616 - - + 623 + + + + + 626 + + + + + + + + 627 + + + + + 628 + + + + + + + + 629 + + @@ -1442,41 +1371,50 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - 619 + 634 AppController NSObject + + NSWindow + NSPopUpButton + + + + mainWindow + NSWindow + + + tagPopUp + NSPopUpButton + + IBProjectSource ./Classes/AppController.h @@ -1489,8 +1427,8 @@ YES 3 - {11, 11} - {10, 3} + {8, 8} + {8, 8} From 2184c7ca4daa684beadb63ad147f274e6ecac213 Mon Sep 17 00:00:00 2001 From: Martin Carlberg Date: Mon, 23 Jul 2012 12:12:55 +0200 Subject: [PATCH 026/114] Fixed code format issues --- AppKit/CPPopUpButton.j | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/AppKit/CPPopUpButton.j b/AppKit/CPPopUpButton.j index f840c2360..98f837d4c 100644 --- a/AppKit/CPPopUpButton.j +++ b/AppKit/CPPopUpButton.j @@ -878,6 +878,7 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); [[_source itemAtIndex:0] setTitle:[self _getNullPlaceholder]]; var count = [values count]; + for (var i = 0; i < count; i++) [[_source itemAtIndex:i + offset] setTitle:[[values objectAtIndex:i] description]]; } @@ -936,6 +937,7 @@ var binderForObject = {}; - (id)initWithBinding:(CPString)aBinding name:(CPString)aName to:(id)aDestination keyPath:(CPString)aKeyPath options:(CPDictionary)options from:(id)aSource { self = [super initWithBinding:aBinding name:aName to:aDestination keyPath:aKeyPath options:options from:aSource]; + if (self) { binderForObject[[aSource UID]] = self; @@ -958,8 +960,7 @@ var binderForObject = {}; - (CPInteger)_getInsertNullOffset { - var info = [CPBinder infoForBinding:CPContentBinding forObject:_source]; - var options = [info objectForKey:CPOptionsKey]; + var options = [[CPBinder infoForBinding:CPContentBinding forObject:_source] objectForKey:CPOptionsKey]; return [options objectForKey:CPInsertsNullPlaceholderBindingOption] ? 1 : 0; } From a688a3de79279936e5a7c8203f4c8c21d7d0eafe Mon Sep 17 00:00:00 2001 From: Martin Carlberg Date: Mon, 23 Jul 2012 12:14:53 +0200 Subject: [PATCH 027/114] Added test case for selectedIndex binding with CPInsertsNullPlaceholderBindingOption --- Tests/AppKit/CPPopUpButtonTest.j | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/Tests/AppKit/CPPopUpButtonTest.j b/Tests/AppKit/CPPopUpButtonTest.j index 1e87a7616..b31366a42 100644 --- a/Tests/AppKit/CPPopUpButtonTest.j +++ b/Tests/AppKit/CPPopUpButtonTest.j @@ -408,7 +408,7 @@ malte = [CPDictionary dictionaryWithJSObject:{@"name": @"Malte"}], johan = [CPDictionary dictionaryWithJSObject:{@"name": @"Johan"}], menuObjects = [martin, malte, johan]; - + [arrayController setContent:menuObjects]; [button bind:CPContentBinding toObject:arrayController withKeyPath:@"arrangedObjects" options:nil]; @@ -419,6 +419,35 @@ [self assert:@"Transformed-Malte" equals:[[[self button] itemAtIndex:1] title]]; } +- (void)testSelectedIndexBindingWithInsertsNullOption +{ + var arrayController = [[CPArrayController alloc] init], + testObject = [CPMutableDictionary dictionary], + martin = @"Martin", + malte = @"Malte", + johan = @"Johan", + menuObjects = [martin, malte, johan], + insertsNullPlaceholderOption = [CPDictionary dictionaryWithObjects:[YES, @"Null Placeholder"] forKeys:[CPInsertsNullPlaceholderBindingOption, CPNullPlaceholderBindingOption]]; + + [arrayController setContent:menuObjects]; + [button bind:CPContentBinding toObject:arrayController withKeyPath:@"arrangedObjects" options:insertsNullPlaceholderOption]; + [button bind:CPSelectedIndexBinding toObject:testObject withKeyPath:@"index" options:nil]; + + [[self button] selectItemWithTitle:@"Martin"]; + [[self button] sendAction:@selector(actionTest:) to:self]; // This has to be done to trigger the reverse set of the binding + [self assert:0 equals:[testObject objectForKey:@"index"]]; + [[self button] selectItemWithTitle:@"Malte"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assert:1 equals:[testObject objectForKey:@"index"]]; + [[self button] selectItemWithTitle:@"Johan"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assert:2 equals:[testObject objectForKey:@"index"]]; + + [[self button] selectItemWithTitle:@"Null Placeholder"]; + [[self button] sendAction:@selector(actionTest:) to:self]; + [self assert:-1 equals:[testObject objectForKey:@"index"]]; +} + - (void)actionTest:(id)sender { } From 5456bad23d013266df5dc65e5905a588df7aee8f Mon Sep 17 00:00:00 2001 From: cacaodev Date: Mon, 23 Jul 2012 14:59:48 +0200 Subject: [PATCH 028/114] Remove unwanted import in AppController test app --- Tests/Manual/CPPopUpButtonBindings/AppController.j | 1 - 1 file changed, 1 deletion(-) diff --git a/Tests/Manual/CPPopUpButtonBindings/AppController.j b/Tests/Manual/CPPopUpButtonBindings/AppController.j index 25b2e8e45..f90914de8 100644 --- a/Tests/Manual/CPPopUpButtonBindings/AppController.j +++ b/Tests/Manual/CPPopUpButtonBindings/AppController.j @@ -7,7 +7,6 @@ */ @import -@import "CPPopUpButton.j" @implementation AppController : CPObject { From 1c18862e0f2b18801253c37448d06fe4291dd05f Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sun, 29 Jul 2012 12:54:34 -0400 Subject: [PATCH 029/114] -added manual test --- Tests/Manual/AttachedSheet2/AppController.j | 41 + Tests/Manual/AttachedSheet2/Info.plist | 10 + Tests/Manual/AttachedSheet2/Jakefile | 93 + .../AttachedSheet2/Resources/MainMenu.cib | 1 + .../AttachedSheet2/Resources/MainMenu.xib | 2810 +++++++++++++++++ .../AttachedSheet2/Resources/Window.cib | 1 + .../AttachedSheet2/Resources/Window.xib | 1646 ++++++++++ .../AttachedSheet2/Resources/spinner.gif | Bin 0 -> 1849 bytes .../AttachedSheet2/SheetWindowController.j | 468 +++ Tests/Manual/AttachedSheet2/index.html | 77 + Tests/Manual/AttachedSheet2/main.j | 19 + .../xcode/TestSheet.xcodeproj/project.pbxproj | 304 ++ .../contents.xcworkspacedata | 7 + .../xcode/TestSheet/AppDelegate.h | 16 + .../xcode/TestSheet/AppDelegate.m | 29 + .../xcode/TestSheet/SheetWindow.h | 13 + .../xcode/TestSheet/SheetWindow.m | 13 + .../xcode/TestSheet/SheetWindowController.h | 43 + .../xcode/TestSheet/SheetWindowController.m | 343 ++ .../xcode/TestSheet/TestSheet-Info.plist | 34 + .../xcode/TestSheet/TestSheet-Prefix.pch | 7 + .../xcode/TestSheet/en.lproj/Credits.rtf | 29 + .../TestSheet/en.lproj/InfoPlist.strings | 2 + .../AttachedSheet2/xcode/TestSheet/main.m | 14 + 24 files changed, 6020 insertions(+) create mode 100644 Tests/Manual/AttachedSheet2/AppController.j create mode 100644 Tests/Manual/AttachedSheet2/Info.plist create mode 100644 Tests/Manual/AttachedSheet2/Jakefile create mode 100644 Tests/Manual/AttachedSheet2/Resources/MainMenu.cib create mode 100644 Tests/Manual/AttachedSheet2/Resources/MainMenu.xib create mode 100644 Tests/Manual/AttachedSheet2/Resources/Window.cib create mode 100644 Tests/Manual/AttachedSheet2/Resources/Window.xib create mode 100644 Tests/Manual/AttachedSheet2/Resources/spinner.gif create mode 100644 Tests/Manual/AttachedSheet2/SheetWindowController.j create mode 100644 Tests/Manual/AttachedSheet2/index.html create mode 100644 Tests/Manual/AttachedSheet2/main.j create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet.xcodeproj/project.pbxproj create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet/AppDelegate.h create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet/AppDelegate.m create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindow.h create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindow.m create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindowController.h create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindowController.m create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet/TestSheet-Info.plist create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet/TestSheet-Prefix.pch create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet/en.lproj/Credits.rtf create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet/en.lproj/InfoPlist.strings create mode 100644 Tests/Manual/AttachedSheet2/xcode/TestSheet/main.m diff --git a/Tests/Manual/AttachedSheet2/AppController.j b/Tests/Manual/AttachedSheet2/AppController.j new file mode 100644 index 000000000..0c330312e --- /dev/null +++ b/Tests/Manual/AttachedSheet2/AppController.j @@ -0,0 +1,41 @@ +/* + * AppController.j + * TestSheet + * + * Created by You on April 14, 2012. + * Copyright 2012, Your Company All rights reserved. + */ + +@import + +@import "SheetWindowController.j" + +@implementation AppController : CPObject +{ + SheetController _sheetController; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + //[theWindow setFullPlatformWindow:YES]; + + _sheetController = [ [SheetWindowController alloc] initWithWindowCibName:@"Window"]; + [self newDocument:self]; +} + +- (void)newDocument:(id)sender +{ + [_sheetController newWindow:self]; +} + +@end diff --git a/Tests/Manual/AttachedSheet2/Info.plist b/Tests/Manual/AttachedSheet2/Info.plist new file mode 100644 index 000000000..a5876ce11 --- /dev/null +++ b/Tests/Manual/AttachedSheet2/Info.plist @@ -0,0 +1,10 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + TestSheet + + diff --git a/Tests/Manual/AttachedSheet2/Jakefile b/Tests/Manual/AttachedSheet2/Jakefile new file mode 100644 index 000000000..d59137d5b --- /dev/null +++ b/Tests/Manual/AttachedSheet2/Jakefile @@ -0,0 +1,93 @@ +/* + * Jakefile + * AttachedSheet2 + * + * Created by Saikat Chakrabarti on March 16, 2010. + * Copyright 2010, gomockingbird.com All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("AttachedSheet2", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "AttachedSheet2.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("AttachedSheet2"); + task.setIdentifier("com.gomockingbird.AttachedSheet2"); + task.setVersion("1.0"); + task.setAuthor("Saikat Chakrabarti and Sheena Pakanati"); + task.setEmail("contact @nospam@ gomockingbird.com"); + task.setSummary("AttachedSheet2"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/*")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +function printResults(configuration) +{ + print("----------------------------") + print(configuration+" app built at path: "+FILE.join("Build", configuration, "AttachedSheet2")); + print("----------------------------") +} + +task ("default", ["AttachedSheet2"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "AttachedSheet2", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "AttachedSheet2", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "AttachedSheet2")); + OS.system(["press", "-f", FILE.join("Build", "Release", "AttachedSheet2"), FILE.join("Build", "Deployment", "AttachedSheet2")]); + printResults("Deployment") +}); + +task ("press", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Press", "AttachedSheet2")); + OS.system(["press", "-f", FILE.join("Build", "Release", "AttachedSheet2"), FILE.join("Build", "Press", "AttachedSheet2")]); +}); + +task ("flatten", ["press"], function() +{ + FILE.mkdirs(FILE.join("Build", "Flatten", "AttachedSheet2")); + OS.system(["flatten", "-f", "--verbose", "--split", "3", "-c", "closure-compiler", FILE.join("Build", "Press", "AttachedSheet2"), FILE.join("Build", "Flatten", "AttachedSheet2")]); +}); diff --git a/Tests/Manual/AttachedSheet2/Resources/MainMenu.cib b/Tests/Manual/AttachedSheet2/Resources/MainMenu.cib new file mode 100644 index 000000000..6e058a471 --- /dev/null +++ b/Tests/Manual/AttachedSheet2/Resources/MainMenu.cib @@ -0,0 +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;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;30E;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;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;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;76E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;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;78E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;197E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;198E;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;3;196E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;199E;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;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;200E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;85E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;201E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;88E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;202E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;108E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;203E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;204E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;105E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;205E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;106E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;206E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;102E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;207E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;89E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;208E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;91E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;76E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;209E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;99E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;90E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;211E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;144E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;212E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;145E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;126E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;214E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;121E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;215E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;124E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;216E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;139E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;217E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;120E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;218E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;125E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;219E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;140E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;220E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;122E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;221E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;135E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;222E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;223E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;128E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;224E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;138E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;225E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;84E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;226E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;116E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;227E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;117E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;228E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;141E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;229E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;148E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;230E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;149E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;231E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;150E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;232E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;188E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;233E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;189E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;234E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;190E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;191E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;236E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;193E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;237E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;194E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;238E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;195E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;239E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;158E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;240E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;182E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;241E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;184E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;242E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;185E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;243E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;176E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;244E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;177E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;245E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;178E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;246E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;179E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;180E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;248E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;171E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;249E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;172E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;250E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;173E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;251E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;165E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;252E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;166E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;167E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;254E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;168E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;111E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;113E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;258E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;197E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;259E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;260E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;261E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;262E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;81E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;262E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;265E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;266E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;270E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;271E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;272E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;273E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;274E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;87E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;274E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;275E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;276E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;278E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;279E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;280E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;281E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;282E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;283E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;284E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;285E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;97E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;285E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;286E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;287E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;288E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;279E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;289E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;290E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;101E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;290E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;291E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;292E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;101E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;293E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;294E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;104E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;294E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;295E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;296E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;297E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;298E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;299E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;300E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;301E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;302E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;304E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;305E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;306E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;307E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;308E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;309E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;310E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;311E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;115E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;311E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;312E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;313E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;314E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;289E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;315E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;316E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;119E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;316E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;317E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;318E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;319E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;320E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;321E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;322E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;323E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;324E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;325E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;326E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;327E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;328E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;329E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;330E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;302E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;331E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;130E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;331E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;333E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;334E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;130E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;335E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;302E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;336E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;130E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;337E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;338E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;339E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;130E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;340E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;341E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;342E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;130E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;343E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;344E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;345E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;130E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;346E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;347E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;137E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;347E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;348E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;349E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;137E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;350E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;137E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;351E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;352E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;137E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;353E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;354E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;137E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;355E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;143E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;355E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;356E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;357E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;143E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;358E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;143E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;359E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;147E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;359E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;360E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;361E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;345E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;147E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;346E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;362E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;342E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;147E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;343E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;363E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;334E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;147E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;335E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;302E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;364E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;152E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;364E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;365E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;366E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;154E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;366E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;367E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;368E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;369E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;314E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;370E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;342E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;371E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;372E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;345E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;373E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;374E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;375E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;376E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;334E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;377E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;378E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;379E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;380E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;381E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;164E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;381E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;382E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;383E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;164E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;384E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;164E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;164E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;386E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;164E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;387E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;170E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;387E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;388E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;383E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;384E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;389E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;390E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;175E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;390E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;391E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;383E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;392E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;393E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;395E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;396E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;397E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;398E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;328E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;289E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;399E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;326E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;289E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;400E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;263E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;187E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;77E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;400E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;401E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;402E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;187E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;403E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;404E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;187E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;405E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;406E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;187E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;407E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;187E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;408E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;267E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;269E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;187E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;409E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;187E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;410E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;187E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;328E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;411E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;412E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;187E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;326E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;411E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;413E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;8;delegateS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;performClose:S;14;runPageLayout:S;6;print:S;12;newDocument:S;9;showHelp:S;5;hide:S;10;terminate:S;22;hideOtherApplications:S;22;unhideAllApplications:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;10;alignLeft:S;12;alignCenter:S;15;alignJustified:S;11;alignRight:S;12;toggleRuler:S;10;copyRuler:S;11;pasteRuler:S;10;underline:S;21;orderFrontColorPanel:S;9;copyFont:S;10;pasteFont:S;9;unscript:S;12;superscript:S;10;subscript:S;14;raiseBaseline:S;14;lowerBaseline:S;21;useStandardLigatures:S;17;turnOffLigatures:S;16;useAllLigatures:S;19;useStandardKerning:S;15;turnOffKerning:S;15;tightenKerning:S;14;loosenKerning:S;15;newModalWindow:S;9;newSheet:S;14;newModalSheet:S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;100E;E;E;S;6;WindowS;14;submenuAction:d;7;1048576S;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;E;E;T;S;0;F;S;18;Bring All to FrontS;4;ZoomS;8;MinimizeS;1;mS;14;NewApplicationS;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;91E;E;E;S;20;About NewApplicationS;19;Hide NewApplicationS;1;hS;8;Show AllS;19;Quit NewApplicationS;1;qS;12;Preferences…S;1;,S;8;ServicesS;15;_CPServicesMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;11;Hide Othersd;7;1572864S;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;102E;E;E;S;19;NewApplication HelpS;1;?S;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;105E;E;E;S;6;Print…S;1;pS;10;New WindowS;1;nS;13;Page Setup...S;1;Pd;7;1179648S;5;CloseS;1;wS;16;New Modal WindowS;1;NS;9;New SheetS;1;sS;15;New Modal SheetS;1;SS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;E;E;S;12;Show ToolbarS;1;tS;18;Customize Toolbar…S;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;142E;E;E;S;6;DeleteS;10;Select AllS;1;aS;4;UndoS;1;zS;3;CutS;1;xS;5;PasteS;1;vS;4;CopyS;1;cS;4;RedoS;1;ZS;4;FindD;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;134E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;132E;E;E;S;13;Find Previousd;1;3S;1;GS;17;Jump to SelectionS;1;jS;22;Use Selection for Findd;1;7S;1;eS;9;Find Nextd;1;2S;1;gS;5;Find…d;1;1S;1;fS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;141E;E;E;S;27;Check Spelling While TypingS;14;Check SpellingS;1;;S;14;Show Spelling…S;1;:S;27;Check Grammar With SpellingS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;144E;E;E;S;13;Stop SpeakingS;14;Start SpeakingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;6;FormatD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;186E;E;E;S;4;FontS;11;_CPFontMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;E;E;S;10;Show FontsS;4;BoldS;1;bS;6;ItalicS;1;iS;9;UnderlineS;1;uS;6;BiggerS;1;+S;7;Smallerd;1;4S;1;-S;4;KernD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;E;E;S;11;Use DefaultS;8;Use NoneS;7;TightenS;6;LoosenS;8;LigatureD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;E;E;S;7;Use AllS;8;BaselineD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;E;E;S;11;SuperscriptS;9;SubscriptS;5;RaiseS;5;LowerS;11;Show ColorsS;1;CS;10;Copy StyleS;11;Paste StyleS;4;TextD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;E;E;S;10;Align LeftS;1;{S;6;CenterS;1;|S;7;JustifyS;11;Align RightS;1;}S;10;Show RulerS;10;Copy Rulerd;7;1310720S;11;Paste RulerS;13;AppControllerE;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/AttachedSheet2/Resources/MainMenu.xib b/Tests/Manual/AttachedSheet2/Resources/MainMenu.xib new file mode 100644 index 000000000..9781a1d5b --- /dev/null +++ b/Tests/Manual/AttachedSheet2/Resources/MainMenu.xib @@ -0,0 +1,2810 @@ + + + + 1050 + 11D50d + 2182 + 1138.32 + 568.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2182 + + + YES + NSMenu + NSMenuItem + NSCustomObject + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + NewApplication + + YES + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide NewApplication + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New Window + n + 1048576 + 2147483647 + + + + + + New Modal Window + N + 1048576 + 2147483647 + + + + + + New Sheet + s + 1048576 + 2147483647 + + + + + + New Modal Sheet + S + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + NewApplication Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + AppController + + + + + YES + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 451 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + alignLeft: + + + + 442 + + + + alignJustified: + + + + 443 + + + + copyRuler: + + + + 444 + + + + alignCenter: + + + + 445 + + + + toggleRuler: + + + + 446 + + + + alignRight: + + + + 447 + + + + pasteRuler: + + + + 448 + + + + newModalWindow: + + + + 494 + + + + newSheet: + + + + 495 + + + + newModalSheet: + + + + 497 + + + + newDocument: + + + + 498 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + 78 + + + 6 + + + 82 + + + 9 + + + 77 + + + 5 + + + 73 + + + 1 + + + 74 + + + 2 + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 378 + + + YES + + + + + + 379 + + + YES + + + + + + + + + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 450 + + + + + 488 + + + 9 + + + 490 + + + 9 + + + 492 + + + 9 + + + 79 + + + 7 + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 103.IBPluginDependency + 106.IBPluginDependency + 111.IBPluginDependency + 129.IBPluginDependency + 130.IBPluginDependency + 131.IBPluginDependency + 134.IBPluginDependency + 136.IBPluginDependency + 143.IBPluginDependency + 144.IBPluginDependency + 145.IBPluginDependency + 149.IBPluginDependency + 150.IBPluginDependency + 19.IBPluginDependency + 195.IBPluginDependency + 196.IBPluginDependency + 197.IBPluginDependency + 198.IBPluginDependency + 199.IBPluginDependency + 200.IBPluginDependency + 201.IBPluginDependency + 202.IBPluginDependency + 203.IBPluginDependency + 204.IBPluginDependency + 205.IBPluginDependency + 206.IBPluginDependency + 207.IBPluginDependency + 208.IBPluginDependency + 209.IBPluginDependency + 210.IBPluginDependency + 211.IBPluginDependency + 212.IBPluginDependency + 213.IBPluginDependency + 214.IBPluginDependency + 215.IBPluginDependency + 216.IBPluginDependency + 217.IBPluginDependency + 218.IBPluginDependency + 219.IBPluginDependency + 220.IBPluginDependency + 221.IBPluginDependency + 23.IBPluginDependency + 236.IBPluginDependency + 239.IBPluginDependency + 24.IBPluginDependency + 29.IBPluginDependency + 295.IBPluginDependency + 296.IBPluginDependency + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 348.IBPluginDependency + 349.IBPluginDependency + 350.IBPluginDependency + 351.IBPluginDependency + 354.IBPluginDependency + 375.IBPluginDependency + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 386.IBPluginDependency + 387.IBPluginDependency + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 450.IBPluginDependency + 488.IBPluginDependency + 490.IBPluginDependency + 492.IBPluginDependency + 5.IBPluginDependency + 56.IBPluginDependency + 57.IBPluginDependency + 58.IBPluginDependency + 73.IBPluginDependency + 74.IBPluginDependency + 77.IBPluginDependency + 78.IBPluginDependency + 79.IBPluginDependency + 81.IBPluginDependency + 82.IBPluginDependency + 83.IBPluginDependency + 92.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + + + + YES + + + + + 498 + + + + YES + + AppController + NSObject + + IBProjectSource + ./Classes/AppController.h + + + + SheetWindowController + NSWindowController + + YES + + YES + newModalSheet: + newModalWindow: + newSheet: + newWindow: + + + YES + id + id + id + id + + + + YES + + YES + newModalSheet: + newModalWindow: + newSheet: + newWindow: + + + YES + + newModalSheet: + id + + + newModalWindow: + id + + + newSheet: + id + + + newWindow: + id + + + + + YES + + YES + _okButton + _sheetWindowHackCheckbox + + + YES + NSButton + NSButton + + + + YES + + YES + _okButton + _sheetWindowHackCheckbox + + + YES + + _okButton + NSButton + + + _sheetWindowHackCheckbox + NSButton + + + + + IBProjectSource + ./Classes/SheetWindowController.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {11, 11} + {10, 3} + + + + diff --git a/Tests/Manual/AttachedSheet2/Resources/Window.cib b/Tests/Manual/AttachedSheet2/Resources/Window.cib new file mode 100644 index 000000000..8470daf98 --- /dev/null +++ b/Tests/Manual/AttachedSheet2/Resources/Window.cib @@ -0,0 +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;30E;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;D;K;6;CP$UIDd;2;38E;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;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;43E;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;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;54E;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;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;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;63E;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;65E;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;2;69E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;71E;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;41E;D;K;6;CP$UIDd;2;43E;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;43E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;71E;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;72E;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;73E;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;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;50E;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;63E;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;54E;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;52E;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;64E;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;66E;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;67E;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;55E;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;60E;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;62E;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;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;41E;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;41E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;70E;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;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;69E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;70E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;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;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;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;90E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;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;29E;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;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;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;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;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;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;58E;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;29E;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;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;40E;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;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;100E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;101E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;102E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;43E;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;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;104E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;104E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;105E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;107E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;102E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;117E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;118E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;119E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;120E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;121E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;122E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;123E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;124E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;125E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;128E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;24;CPButtonKeyEquivalentKeyD;K;6;CP$UIDd;3;129E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;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;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;132E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;133E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;134E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;135E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;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;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;140E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;141E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;137E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;142E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;56E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;143E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;144E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;6;$afontD;K;6;CP$UIDd;3;146E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;115E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;147E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;148E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;149E;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;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;103E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;115E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;150E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;151E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;152E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;153E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;154E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;155E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;158E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;159E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;155E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;160E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;161E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;162E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;163E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;E;D;K;6;$classD;K;6;CP$UIDd;2;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;165E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;166E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;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;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;169E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;170E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;171E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;172E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;137E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;173E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;174E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;137E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;175E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;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;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;176E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;177E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;178E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;6;$afontD;K;6;CP$UIDd;3;180E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;181E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;182E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;103E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;183E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;103E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;184E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;185E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;178E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;186E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;115E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;147E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;187E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;149E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;147E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;147E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;147E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;189E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;114E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;115E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;155E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;155E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;158E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;_titledMaskButtonS;17;_windowTypeMatrixS;6;windowS;21;initialFirstResponderS;20;takeDoubleValueFrom:S;14;newModalSheet:S;10;newWindow:S;9;newSheet:S;15;newModalWindow:S;14;newAlertSheet:S;19;newColorPanelSheet:S;18;newOpenPanelSheet:S;18;newSavePanelSheet:S;13;CPApplicationS;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{71, -112}, {455, 523}}d;2;15S;6;Windowd;1;0S;20;{{0, 0}, {455, 523}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;57E;E;E;S;6;normalS;21;{{18, 18}, {138, 24}}S;19;{{0, 0}, {138, 24}}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;112E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;191E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;190E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;147E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;E;d;1;2d;1;4F;S;21;{{18, 50}, {138, 24}}S;12;Modal WindowS;21;{{18, 82}, {138, 24}}S;5;SheetS;22;{{18, 114}, {138, 24}}S;11;Modal SheetS;22;{{18, 146}, {138, 24}}S;11;Alert SheetS;22;{{365, 481}, {68, 24}}S;18;{{0, 0}, {68, 24}}d;1;9S;5;CloseS;4;CgA=S;23;{{218, 481}, {135, 24}}S;19;{{0, 0}, {135, 24}}S;16;Close Parent TooS;22;{{18, 481}, {110, 24}}S;19;{{0, 0}, {110, 24}}S;12;Chain SheetsS;22;{{12, 299}, {329, 18}}S;19;{{0, 0}, {329, 18}}S;9;check-boxD;K;6;$classD;K;6;CP$UIDd;3;112E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;191E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;190E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;E;S;25;orderOut: after endSheet:S;22;{{12, 368}, {329, 18}}S;36;Shade Window View of Non-CIB WindowsS;22;{{24, 323}, {368, 26}}S;19;{{0, 0}, {368, 26}}S;9;textfieldD;K;6;$classD;K;6;CP$UIDd;3;112E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;191E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;192E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;E;T;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;3072S;22;{{18, 208}, {138, 24}}S;16;Open Panel SheetS;22;{{18, 176}, {138, 24}}S;17;Color Panel SheetS;23;{{193, 139}, {174, 18}}S;19;{{0, 0}, {174, 18}}S;8;selectedd;1;1S;18;CPTitledWindowMaskS;23;{{193, 159}, {174, 18}}S;20;CPClosableWindowMaskS;23;{{194, 20}, {261, 113}}S;20;{{0, 0}, {261, 113}}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;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;E;E;S;23;{{192, 179}, {210, 18}}S;19;{{0, 0}, {210, 18}}S;26;CPMiniaturizableWindowMaskS;23;{{192, 199}, {180, 18}}S;19;{{0, 0}, {180, 18}}S;21;CPResizableWindowMaskS;22;{{18, 240}, {138, 24}}S;16;Save Panel SheetS;22;{{12, 388}, {329, 18}}S;36;Shade Content View of Non-CIB WindowS;22;{{12, 408}, {329, 18}}S;44;Shade Parent Window on windowWillBeginSheet:S;22;{{119, 446}, {96, 21}}S;18;{{0, 0}, {96, 21}}d;2;45S;6;sliderD;K;6;$classD;K;6;CP$UIDd;3;112E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;199E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;190E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;E;d;2;50d;2;68d;3;100S;23;{{215, 436}, {104, 29}}S;19;{{0, 0}, {104, 29}}S;19;bezeled+placeholderS;0;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;188E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;200E;E;d;2;12S;17;Arial, sans-serifd;2;10D;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;62E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;157E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;201E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;201E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;202E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;203E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;204E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;205E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;206E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;207E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;208E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;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;211E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;201E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;202E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;203E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;204E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;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;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;207E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;208E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;213E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;214E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;201E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;202E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;203E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;204E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;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;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;207E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;208E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;115E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;216E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;201E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;202E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;203E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;204E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;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;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;207E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;208E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;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;201E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;202E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;203E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;204E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;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;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;207E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;208E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;210E;E;S;9;HelveticaD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;157E;E;E;S;19;{{0, 0}, {261, 21}}d;2;18D;K;6;$classD;K;6;CP$UIDd;3;188E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;221E;E;S;5;radioS;17;selected+borderedS;10;CIB Windowf;3;0.5f;4;0.05D;K;10;$classnameS;12;CPRadioGroupK;8;$classesA;S;12;CPRadioGroupS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;209E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;222E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;194E;E;S;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;CPDocModalWindowMaskD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;223E;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;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;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 new file mode 100644 index 000000000..51bd9e416 --- /dev/null +++ b/Tests/Manual/AttachedSheet2/Resources/Window.xib @@ -0,0 +1,1646 @@ + + + + 1070 + 11D50d + 2182 + 1138.32 + 568.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2182 + + + NSTextField + NSView + NSWindowTemplate + NSTextFieldCell + NSSliderCell + NSMatrix + NSSlider + NSButtonCell + NSButton + NSCustomObject + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + SheetWindowController + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{71, 767}, {455, 523}} + 1946157056 + Window + NSWindow + + + + + 256 + + + + 301 + {{119, 56}, {96, 21}} + + + + YES + + -2079981824 + 0 + + + Helvetica + 12 + 16 + + + 100 + 0.0 + 50 + 0.0 + 0 + 1 + NO + NO + + + + + 301 + {{221, 61}, {96, 22}} + + + + YES + + -1804468671 + 272630784 + + + LucidaGrande + 13 + 1044 + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 289 + {{361, 12}, {80, 32}} + + + _NS:9 + YES + + 67239424 + 134217728 + Close + + _NS:9 + + -2038284033 + 129 + + DQ + 200 + 25 + + + + + 268 + {{14, 443}, {150, 32}} + + + + _NS:9 + YES + + 67239424 + 134217728 + Modal Window + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{14, 411}, {150, 32}} + + + + _NS:9 + YES + + 67239424 + 134217728 + Sheet + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{14, 475}, {150, 32}} + + + + _NS:9 + YES + + 67239424 + 134217728 + Window + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{14, 379}, {150, 32}} + + + + _NS:9 + YES + + 67239424 + 134217728 + Modal Sheet + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{14, 347}, {150, 32}} + + + + _NS:9 + YES + + 67239424 + 134217728 + Alert Sheet + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{14, 317}, {150, 32}} + + + + _NS:9 + YES + + 67239424 + 134217728 + Color Panel Sheet + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{14, 285}, {150, 32}} + + + + _NS:9 + YES + + 67239424 + 134217728 + Open Panel Sheet + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{14, 253}, {150, 32}} + + + + _NS:9 + YES + + 67239424 + 134217728 + Save Panel Sheet + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 289 + {{214, 12}, {147, 32}} + + + + _NS:9 + YES + + 67239424 + 134217728 + Close Parent Too + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 289 + {{14, 12}, {122, 32}} + + + + _NS:9 + YES + + 67239424 + 134217728 + Chain Sheets + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{12, 206}, {329, 18}} + + + + _NS:9 + YES + + 67239424 + 0 + orderOut: after endSheet: + + _NS:9 + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 268 + {{12, 137}, {329, 18}} + + + + _NS:9 + YES + + 67239424 + 0 + Shade Window View of Non-CIB Windows + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{12, 117}, {329, 18}} + + + + _NS:9 + YES + + 67239424 + 0 + Shade Content View of Non-CIB Window + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{12, 97}, {329, 18}} + + + _NS:9 + YES + + 67239424 + 0 + Shade Parent Window on windowWillBeginSheet: + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{193, 366}, {174, 18}} + + + + _NS:9 + YES + + -2080244224 + 0 + CPTitledWindowMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{193, 346}, {174, 18}} + + + + _NS:9 + YES + + -2080244224 + 0 + CPClosableWindowMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{194, 390}, {261, 113}} + + + + _NS:9 + YES + 5 + 1 + + + -2080244224 + 0 + CIB Window + + + 1 + 1211912703 + 0 + + NSRadioButton + + + + 200 + 25 + + + 67239424 + 0 + CPHUDBackgroundWindowMask + + + 2 + 1211912703 + 0 + + 549453824 + {18, 18} + + + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + 3 + MCAwAA + + + + 400 + 75 + + + 67239424 + 0 + CPBorderlessWindowMask + + + 3 + 1211912703 + 0 + + 400 + 75 + + + 67239424 + 0 + CPTexturedBackgroundWindowMask + + + 4 + 1211912703 + 0 + + 400 + 75 + + + 67239424 + 0 + CPDocModalWindowMask + + + 5 + 1211912703 + 0 + + 400 + 75 + + + {261, 21} + {4, 2} + 1151868928 + NSActionCell + + 67239424 + 0 + Radio + + 1211912703 + 0 + + 549453824 + {18, 18} + + + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + + + 400 + 75 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + + + + + 268 + {{192, 326}, {210, 18}} + + + + _NS:9 + YES + + -2080244224 + 0 + CPMiniaturizableWindowMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{192, 306}, {180, 18}} + + + + _NS:9 + YES + + -2080244224 + 0 + CPResizableWindowMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{24, 174}, {368, 26}} + + + + _NS:9 + {250, 750} + YES + + 67239424 + 272629760 + It is not specified if endSheet: or orderOut: on sheet should be called first. However, cannot call orderOut: after endSheet: when chaining. + + LucidaGrande + 10 + 16 + + _NS:9 + + + + 6 + System + controlTextColor + + + + + + {455, 523} + + + + + {{0, 0}, {1920, 1178}} + {10000000000000, 10000000000000} + YES + + + + 268 + {174, 18} + _NS:9 + YES + + -2080244224 + 0 + CPTitledWindowMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + + + + window + + + + 132 + + + + newModalWindow: + + + + 137 + + + + newSheet: + + + + 138 + + + + newWindow: + + + + 139 + + + + newModalSheet: + + + + 136 + + + + _closeButton + + + + 163 + + + + _altCloseButton + + + + 164 + + + + _otherCloseButton + + + + 165 + + + + _orderOutAfterCheckbox + + + + 168 + + + + _windowTypeMatrix + + + + 180 + + + + _titledMaskButton + + + + 194 + + + + _closableMaskButton + + + + 195 + + + + _miniaturizableMaskButton + + + + 196 + + + + _resizableMaskButton + + + + 197 + + + + newAlertSheet: + + + + 198 + + + + _shadeWindowView + + + + 205 + + + + _shadeContentView + + + + 206 + + + + newColorPanelSheet: + + + + 216 + + + + newOpenPanelSheet: + + + + 217 + + + + newSavePanelSheet: + + + + 218 + + + + _shadeParentWindow + + + + 223 + + + + initialFirstResponder + + + + 219 + + + + takeDoubleValueFrom: + + + + 33 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 3 + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + + + + + + + + 9 + + + + + + + + 19 + + + + + + + + 20 + + + + + 30 + + + + + 31 + + + + + 17 + + + + + + + + 22 + + + + + 16 + + + + + + + + 23 + + + + + 14 + + + + + + + + 25 + + + + + 11 + + + + + + + + 28 + + + + + 145 + + + + + + + + 146 + + + + + 159 + + + + + + + + 160 + + + + + 161 + + + + + + + + 162 + + + + + 166 + + + + + + + + 167 + + + + + 169 + + + + + + + + + + + + + 170 + + + + + 171 + + + + + 172 + + + + + 173 + + + + + 179 + + + + + 181 + + + + + 184 + + + + + + + + 185 + + + + + 186 + + + + + + + + 187 + + + + + 188 + + + + + + + + 189 + + + + + 190 + + + + + + + + 191 + + + + + 192 + + + + + + + + 193 + + + + + 199 + + + + + + + + 200 + + + + + 201 + + + + + + + + 202 + + + + + 203 + + + + + + + + 204 + + + + + 207 + + + + + + + + 208 + + + + + 210 + + + + + + + + 211 + + + + + 213 + + + + + + + + 214 + + + + + 220 + + + + + + + + 221 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{303, 221}, {480, 360}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 223 + + + + + SheetWindowController + NSWindowController + + id + id + id + id + id + id + id + id + + + + newAlertSheet: + id + + + newColorPanelSheet: + id + + + newModalSheet: + id + + + newModalWindow: + id + + + newOpenPanelSheet: + id + + + newSavePanelSheet: + id + + + newSheet: + id + + + newWindow: + id + + + + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSMatrix + + + + _altCloseButton + NSButton + + + _closableMaskButton + NSButton + + + _closeButton + NSButton + + + _miniaturizableMaskButton + NSButton + + + _orderOutAfterCheckbox + NSButton + + + _otherCloseButton + NSButton + + + _resizableMaskButton + NSButton + + + _shadeContentView + NSButton + + + _shadeParentWindow + NSButton + + + _shadeWindowView + NSButton + + + _titledMaskButton + NSButton + + + _windowTypeMatrix + NSMatrix + + + + IBProjectSource + ./Classes/SheetWindowController.h + + + + + 0 + IBCocoaFramework + YES + 3 + + NSSwitch + {15, 15} + + + diff --git a/Tests/Manual/AttachedSheet2/Resources/spinner.gif b/Tests/Manual/AttachedSheet2/Resources/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..06dbc2bc21dddcf0e09b566d5b211aee89570f52 GIT binary patch literal 1849 zcma*odr(tX9tZHtz31lM+(&Y`A`Ou`NeG&R#DrIfV%?hng21vs6v>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% literal 0 HcmV?d00001 diff --git a/Tests/Manual/AttachedSheet2/SheetWindowController.j b/Tests/Manual/AttachedSheet2/SheetWindowController.j new file mode 100644 index 000000000..4fb61bc8d --- /dev/null +++ b/Tests/Manual/AttachedSheet2/SheetWindowController.j @@ -0,0 +1,468 @@ + +@import "SheetWindow.j" + +@implementation SheetWindowController : CPWindowController +{ + @outlet CPButton _closeButton; + @outlet CPButton _sheetWindowHackCheckbox; + @outlet CPButton _altCloseButton; + @outlet CPButton _otherCloseButton; + @outlet CPButton _orderOutAfterCheckbox; + @outlet CPRadioGroup _windowTypeMatrix; + @outlet CPButton _titledMaskButton; + @outlet CPButton _closableMaskButton; + @outlet CPButton _miniaturizableMaskButton; + @outlet CPButton _resizableMaskButton; + @outlet CPButton _shadeWindowView; + @outlet CPButton _shadeContentView; + @outlet CPButton _shadeParentWindow; + + CPModalSession _modalSession; + CPWindow _parentWindow; + CPWindow _sheet; + int _returnCode; + CPColor _savedColor; +} + +-(void)initWithWindowCibName:(CPString)cibName +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + self = [super initWithWindowCibName:cibName]; + + _closeButton = nil; + + return self; +} + +-(void)positionWindow +{ + var keyWindow = [CPApp keyWindow]; + + var origin=CPPointMake(40,40); + if (keyWindow) + { + origin = ([keyWindow frame]).origin; + origin = CPPointMake(origin.x + 20, origin.y + 20); + } + + [[self window] setFrameOrigin:origin]; +} + +-(void)awakeFromCib +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + if (!_closeButton) + CPLog.fatal("_closeButton is not connected!"); + + [_closeButton setTarget:self]; + [_closeButton setAction:@selector(unsetAction:)]; + [_altCloseButton setTarget:self]; + [_altCloseButton setAction:@selector(unsetAction:)]; + [_otherCloseButton setTarget:self]; + [_otherCloseButton setAction:@selector(unsetAction:)]; +} + +-(void)unsetAction:(id)sender +{ + CPLog.warn("No action set on this %@", [sender class]); +} + +-(void)createCloseButton:(CPWindow)window +{ + _closeButton = [ [CPButton alloc] initWithFrame:CGRectMake(0,0,32,100)]; + [_closeButton setTitle:@"Close"]; + [_closeButton setButtonType:CPMomentaryPushInButton]; + [_closeButton setBezelStyle:CPBezelBorder]; + [_closeButton sizeToFit]; + [[window contentView] addSubview:_closeButton positioned:CPWindowAbove relativeTo:nil]; +} + +-(SheetWindowController)initWithStyleMask:(int)styleMask debug:(int)debug +{ + CPLog.debug("[%@ %@] mask=%d radioGroup=%@", [self class], _cmd, styleMask, _windowTypeMatrix); + + if (styleMask < 0) + return [self initWithWindowCibName:@"Window"]; + + var window = [ [CPWindow alloc] + initWithContentRect:CGRectMake(0,0,400,300) + styleMask:styleMask]; + + if (debug & 1) + [window setBackgroundColor:[CPColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:0.5]]; + if (debug & 2) + [[window contentView] setBackgroundColor:[CPColor colorWithCalibratedRed:0.0 green:0.0 blue:1.0 alpha:0.5]]; + + if (self = [super initWithWindow:window]) + { + [self createCloseButton:window]; + } + + return self; +} + +-(SheetWindowController)allocController +{ + CPLog.debug("[%@ %@] groupClass=%@", [self class], _cmd, + [ [ [ [ [_windowTypeMatrix subviews] objectAtIndex:0] radioGroup] selectedRadio] tag]); + + var type = 1; + if (_windowTypeMatrix) + type = [ [ [ [ [_windowTypeMatrix subviews] objectAtIndex:0] radioGroup] selectedRadio] tag]; + + var styleMask = 0; + if ([_titledMaskButton state]) + styleMask |= CPTitledWindowMask; + + if ([_closableMaskButton state]) + styleMask |= CPClosableWindowMask; + + if ([_miniaturizableMaskButton state]) + styleMask |= CPMiniaturizableWindowMask; + + switch (type) + { + case 2: + styleMask |= CPHUDBackgroundWindowMask; + break; + case 3: + styleMask = CPBorderlessWindowMask; + break; + case 4: + styleMask |= CPTexturedBackgroundWindowMask; + break; + case 5: + styleMask = CPDocModalWindowMask; + break; + default: + } + + if ([_resizableMaskButton state]) + styleMask |= CPResizableWindowMask; + + if (type==1) + styleMask = -1; + + var debug = 0; + if ([_shadeWindowView state]) + debug |= 1; + if ([_shadeContentView state]) + debug |= 2; + + return [[SheetWindowController alloc] initWithStyleMask:styleMask debug:debug]; +} + +-(SheetWindowController)allocWithPanel:(CPPanel)panel +{ + return [[SheetWindowController alloc] initWithWindow:panel]; +} + +// +// Normal window +// +-(void)newDocument:(id)sender +{ + [self newWindow:sender]; +} + +-(void)newWindow:(id)sender +{ + [[self allocController] runNormalWindow]; +} + +-(void)runNormalWindow +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + [self positionWindow]; + [[self window] setTitle:@"Normal Window"]; + [_closeButton setTarget:[self window]]; + [_closeButton setAction:@selector(orderOut:)]; + [self showWindow:self]; +} + +// +// Modal window +// +-(void)newModalWindow:(id)sender +{ + [[self allocController] runModalWindow]; +} + +-(void)runModalWindow +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + [[self window] setTitle:@"Modal Window"]; + [[self window] setDelegate:self]; + [_closeButton setTarget:self]; + [_closeButton setAction:@selector(endModalWindow:)]; + //[self showWindow:self]; + [CPApp runModalForWindow:[self window]]; +} + +-(void)endModalWindow:(id)sender +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + // performClose shouldn't work, if the window has no close button + if ([[self window] styleMask] & CPClosableWindowMask) + [[self window] performClose:self]; + else + [[self window] close]; +} + +-(void)windowWillClose:(NSNotification*)notification +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + // this is one way to handle close button on modal window + if ([CPApp modalWindow]) + [CPApp stopModal]; +} + +// +// Sheet +// +-(void)newSheet:(id)sender +{ + [[self allocController] runSheetForWindow:[self window]]; +} + +-(void)runSheetForWindow:(CPWindow)parentWindow +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + var sheet = [self window]; + [parentWindow setDelegate:self]; + _parentWindow = parentWindow; + _sheet = sheet; + + // NOTE: _closeButton doesn't exist until we call [self window] to load window from cib! + [_closeButton setTarget:self]; + [_closeButton setAction:@selector(closeSheet:)]; + [_altCloseButton setAction:@selector(closeSheetAndParent:)]; + [_otherCloseButton setAction:@selector(closeSheetAndRepeat:)]; + + [CPApp beginSheet:sheet + modalForWindow:parentWindow + modalDelegate:self + didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) + contextInfo:parentWindow]; +} + +-(void)closeSheet:(id)sender +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + _returnCode = 1; + + var orderOutAfter = [_orderOutAfterCheckbox state]; + if (!orderOutAfter) + [[self window] orderOut:nil]; + + [CPApp endSheet:[self window] returnCode:_returnCode]; + + if (orderOutAfter) + [[self window] orderOut:nil]; +} + +-(void)closeSheetAndParent:(id)sender +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + // common use case is saving document in response to a close, + // in this case we don't want to show the animation at all, + // and also get rid of the parent window + [_parentWindow close]; + + var orderOutAfter = [_orderOutAfterCheckbox state]; + if (!orderOutAfter) + [[self window] orderOut:nil]; + + _returnCode = 99; + [CPApp endSheet:[self window] returnCode:_returnCode]; + + if (orderOutAfter) + [[self window] orderOut:nil]; +} + +-(void)closeSheetAndRepeat:(id)sender +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + // common use case is showing a progress bar after a save command, + // the orderout gets rid of the current sheet, + // the return code indicates to open another sheet up + var orderOutAfter = [_orderOutAfterCheckbox state]; + if (!orderOutAfter) + [[self window] orderOut:nil]; + + _returnCode = 77; + [CPApp endSheet:[self window] returnCode:_returnCode]; + + if (orderOutAfter) + [[self window] orderOut:nil]; +} + +// +// "Modal" Sheet implemented by using modal session +// +-(void)newModalSheet:(id)sender +{ + [[self allocController] runModalSheetForWindow:[self window]]; +} + +-(void)runModalSheetForWindow:(CPWindow)parentWindow +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + var sheet = [self window]; + [parentWindow setDelegate:self]; + _parentWindow = parentWindow; + _sheet = sheet; + + [_closeButton setTarget:self]; + [_closeButton setAction:@selector(closeModalSheet:)]; + + [CPApp beginSheet:sheet + modalForWindow:parentWindow + modalDelegate:self + didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) + contextInfo:parentWindow]; + + // what is the difference between these two approaches? + [CPApp runModalForWindow:sheet]; + + //var session = [CPApp beginModalSessionForWindow:sheet]; + //[CPApp runModalSession:session]; +} + +-(void)closeModalSheet:(id)sender +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + var orderOutAfter = [_orderOutAfterCheckbox state]; + if (!orderOutAfter) + [[self window] orderOut:nil]; + + _returnCode = 2; + [CPApp endSheet:[self window] returnCode:_returnCode]; + + // what return should we get, the sheet or modal? + [CPApp stopModalWithCode:999]; + + if (orderOutAfter) + [[self window] orderOut:nil]; +} + +// +// Test alert panels +// +-(void)newAlertSheet:(id)sender +{ + [self runAlertSheet:[self window]]; +} + +-(void)runAlertSheet:(CPWindow)parentWindow +{ + // BUG: capp 0.9.5 on WebKit will chop off "bug." in the info text + var alert = [CPAlert alertWithMessageText:@"Alert message text goes here" + defaultButton:@"DefaultButton" + alternateButton:@"AltButton" + otherButton:@"OtherButton" + informativeTextWithFormat:@"This informative text sentence shows text wrapping bug."]; + + [parentWindow setDelegate:self]; + _parentWindow = parentWindow; + _sheet = alert; + _returnCode = -1; + + [alert beginSheetModalForWindow:parentWindow + modalDelegate:self + didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) + contextInfo:parentWindow]; +} + +-(void)newColorPanelSheet:(id)sender +{ + var panel = [CPColorPanel sharedColorPanel]; + var controller = [self allocWithPanel:panel]; + [controller createCloseButton:panel]; + [controller runSheetForWindow:[self window]]; +} + +-(void)newOpenPanelSheet:(id)sender +{ + var panel = [CPOpenPanel openPanel]; + var controller = [self allocWithPanel:panel]; + [controller createCloseButton:panel]; + [controller runSheetForWindow:[self window]]; +} + +-(void)newSavePanelSheet:(id)sender +{ + var panel = [CPSavePanel savePanel]; + var controller = [self allocWithPanel:panel]; + [controller createCloseButton:panel]; + [controller runSheetForWindow:[self window]]; +} + +// Test open and save panels + +// +// Test notifications/delegate methods +// +-(void)didEndSheet:(CPWindow)sheet returnCode:(int)returnCode contextInfo:(id)parentWindow +{ + CPLog.debug("[%@ %@] returnCode=%d", [self class], _cmd, returnCode); + + if (sheet !== _sheet) + CPLog.fatal("sheet invalid"); + + if (_returnCode >= 0 && returnCode != _returnCode) + CPLog.fatal("returnCode invalid"); + + if (_parentWindow !== parentWindow) + CPLog.fatal("contextInfo invalid"); + + // test sheet chaining. it should be possible to start another sheet from didEndSheet, + // but only if we orderOut: the sheet before we called endSheet: This is how cocoa works too. + if (returnCode == 77) + [self runSheetForWindow:parentWindow]; + //[self runAlertSheet:parentWindow]; +} + +- (BOOL)shadeWindow +{ + return [_shadeParentWindow state]; +} + +- (void)windowWillBeginSheet:(NSNotification*)notification +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + if ([notification object] !== _parentWindow) + CPLog.fatal("notification object should be delegate's window"); + + if ([[_parentWindow windowController] shadeWindow]) + { + _savedColor = [[_parentWindow contentView] backgroundColor]; + [[_parentWindow contentView] setBackgroundColor: + [CPColor colorWithCalibratedRed:0.0 green:0.7 blue:0.0 alpha:1.0]]; + } +} + +- (void)windowDidEndSheet:(NSNotification *)notification +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + if ([notification object] !== _parentWindow) + CPLog.fatal("notification object should be delegate's window"); + + if ([[_parentWindow windowController] shadeWindow]) + [[_parentWindow contentView] setBackgroundColor:_savedColor]; +} + +@end diff --git a/Tests/Manual/AttachedSheet2/index.html b/Tests/Manual/AttachedSheet2/index.html new file mode 100644 index 000000000..20935b1b0 --- /dev/null +++ b/Tests/Manual/AttachedSheet2/index.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + TestSheet + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/AttachedSheet2/main.j b/Tests/Manual/AttachedSheet2/main.j new file mode 100644 index 000000000..b722e04dc --- /dev/null +++ b/Tests/Manual/AttachedSheet2/main.j @@ -0,0 +1,19 @@ +/* + * AppController.j + * TestSheet + * + * Created by You on April 14, 2012. + * Copyright 2012, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPLogRegister(CPLogDefault); + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet.xcodeproj/project.pbxproj b/Tests/Manual/AttachedSheet2/xcode/TestSheet.xcodeproj/project.pbxproj new file mode 100644 index 000000000..eaa9a88d6 --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet.xcodeproj/project.pbxproj @@ -0,0 +1,304 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + B210EF7E153B0A8D005D15EE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B210EF7D153B0A8D005D15EE /* Cocoa.framework */; }; + B210EF88153B0A8D005D15EE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B210EF86153B0A8D005D15EE /* InfoPlist.strings */; }; + B210EF8A153B0A8D005D15EE /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B210EF89153B0A8D005D15EE /* main.m */; }; + B210EF8E153B0A8D005D15EE /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = B210EF8C153B0A8D005D15EE /* Credits.rtf */; }; + B210EF91153B0A8D005D15EE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B210EF90153B0A8D005D15EE /* AppDelegate.m */; }; + B2129637153B0B3000E15669 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = B2129636153B0B3000E15669 /* MainMenu.xib */; }; + B212963B153B0B4900E15669 /* Window.xib in Resources */ = {isa = PBXBuildFile; fileRef = B2129639153B0B4900E15669 /* Window.xib */; }; + B212963C153B0E6A00E15669 /* SheetWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = B2129630153B0ADF00E15669 /* SheetWindow.m */; }; + B212963D153B0E6C00E15669 /* SheetWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B2129632153B0ADF00E15669 /* SheetWindowController.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + B210EF79153B0A8D005D15EE /* TestSheet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TestSheet.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B210EF7D153B0A8D005D15EE /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + B210EF80153B0A8D005D15EE /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + B210EF81153B0A8D005D15EE /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + B210EF82153B0A8D005D15EE /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B210EF85153B0A8D005D15EE /* TestSheet-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "TestSheet-Info.plist"; sourceTree = ""; }; + B210EF87153B0A8D005D15EE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + B210EF89153B0A8D005D15EE /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + B210EF8B153B0A8D005D15EE /* TestSheet-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TestSheet-Prefix.pch"; sourceTree = ""; }; + B210EF8D153B0A8D005D15EE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + B210EF8F153B0A8D005D15EE /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + B210EF90153B0A8D005D15EE /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + B212962F153B0ADF00E15669 /* SheetWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SheetWindow.h; sourceTree = ""; }; + B2129630153B0ADF00E15669 /* SheetWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SheetWindow.m; sourceTree = ""; }; + B2129631153B0ADF00E15669 /* SheetWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SheetWindowController.h; sourceTree = ""; }; + B2129632153B0ADF00E15669 /* SheetWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SheetWindowController.m; sourceTree = ""; }; + B2129636153B0B3000E15669 /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainMenu.xib; path = ../Resources/MainMenu.xib; sourceTree = ""; }; + B2129639153B0B4900E15669 /* Window.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Window.xib; path = ../Resources/Window.xib; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B210EF76153B0A8D005D15EE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B210EF7E153B0A8D005D15EE /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B210EF6E153B0A8D005D15EE = { + isa = PBXGroup; + children = ( + B2129639153B0B4900E15669 /* Window.xib */, + B2129636153B0B3000E15669 /* MainMenu.xib */, + B210EF83153B0A8D005D15EE /* TestSheet */, + B210EF7C153B0A8D005D15EE /* Frameworks */, + B210EF7A153B0A8D005D15EE /* Products */, + ); + sourceTree = ""; + }; + B210EF7A153B0A8D005D15EE /* Products */ = { + isa = PBXGroup; + children = ( + B210EF79153B0A8D005D15EE /* TestSheet.app */, + ); + name = Products; + sourceTree = ""; + }; + B210EF7C153B0A8D005D15EE /* Frameworks */ = { + isa = PBXGroup; + children = ( + B210EF7D153B0A8D005D15EE /* Cocoa.framework */, + B210EF7F153B0A8D005D15EE /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + B210EF7F153B0A8D005D15EE /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + B210EF80153B0A8D005D15EE /* AppKit.framework */, + B210EF81153B0A8D005D15EE /* CoreData.framework */, + B210EF82153B0A8D005D15EE /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + B210EF83153B0A8D005D15EE /* TestSheet */ = { + isa = PBXGroup; + children = ( + B210EF8F153B0A8D005D15EE /* AppDelegate.h */, + B210EF90153B0A8D005D15EE /* AppDelegate.m */, + B212962F153B0ADF00E15669 /* SheetWindow.h */, + B2129630153B0ADF00E15669 /* SheetWindow.m */, + B2129631153B0ADF00E15669 /* SheetWindowController.h */, + B2129632153B0ADF00E15669 /* SheetWindowController.m */, + B210EF84153B0A8D005D15EE /* Supporting Files */, + ); + path = TestSheet; + sourceTree = ""; + }; + B210EF84153B0A8D005D15EE /* Supporting Files */ = { + isa = PBXGroup; + children = ( + B210EF85153B0A8D005D15EE /* TestSheet-Info.plist */, + B210EF86153B0A8D005D15EE /* InfoPlist.strings */, + B210EF89153B0A8D005D15EE /* main.m */, + B210EF8B153B0A8D005D15EE /* TestSheet-Prefix.pch */, + B210EF8C153B0A8D005D15EE /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + B210EF78153B0A8D005D15EE /* TestSheet */ = { + isa = PBXNativeTarget; + buildConfigurationList = B210EF97153B0A8D005D15EE /* Build configuration list for PBXNativeTarget "TestSheet" */; + buildPhases = ( + B210EF75153B0A8D005D15EE /* Sources */, + B210EF76153B0A8D005D15EE /* Frameworks */, + B210EF77153B0A8D005D15EE /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TestSheet; + productName = TestSheet; + productReference = B210EF79153B0A8D005D15EE /* TestSheet.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B210EF70153B0A8D005D15EE /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0430; + }; + buildConfigurationList = B210EF73153B0A8D005D15EE /* Build configuration list for PBXProject "TestSheet" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = B210EF6E153B0A8D005D15EE; + productRefGroup = B210EF7A153B0A8D005D15EE /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B210EF78153B0A8D005D15EE /* TestSheet */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B210EF77153B0A8D005D15EE /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B210EF88153B0A8D005D15EE /* InfoPlist.strings in Resources */, + B2129637153B0B3000E15669 /* MainMenu.xib in Resources */, + B212963B153B0B4900E15669 /* Window.xib in Resources */, + B210EF8E153B0A8D005D15EE /* Credits.rtf in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B210EF75153B0A8D005D15EE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B210EF8A153B0A8D005D15EE /* main.m in Sources */, + B210EF91153B0A8D005D15EE /* AppDelegate.m in Sources */, + B212963D153B0E6C00E15669 /* SheetWindowController.m in Sources */, + B212963C153B0E6A00E15669 /* SheetWindow.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + B210EF86153B0A8D005D15EE /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B210EF87153B0A8D005D15EE /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + B210EF8C153B0A8D005D15EE /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + B210EF8D153B0A8D005D15EE /* en */, + ); + name = Credits.rtf; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B210EF95153B0A8D005D15EE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + B210EF96153B0A8D005D15EE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + SDKROOT = macosx; + }; + name = Release; + }; + B210EF98153B0A8D005D15EE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "TestSheet/TestSheet-Prefix.pch"; + INFOPLIST_FILE = "TestSheet/TestSheet-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + B210EF99153B0A8D005D15EE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "TestSheet/TestSheet-Prefix.pch"; + INFOPLIST_FILE = "TestSheet/TestSheet-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B210EF73153B0A8D005D15EE /* Build configuration list for PBXProject "TestSheet" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B210EF95153B0A8D005D15EE /* Debug */, + B210EF96153B0A8D005D15EE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B210EF97153B0A8D005D15EE /* Build configuration list for PBXNativeTarget "TestSheet" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B210EF98153B0A8D005D15EE /* Debug */, + B210EF99153B0A8D005D15EE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B210EF70153B0A8D005D15EE /* Project object */; +} diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Tests/Manual/AttachedSheet2/xcode/TestSheet.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..2a88e2374 --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet/AppDelegate.h b/Tests/Manual/AttachedSheet2/xcode/TestSheet/AppDelegate.h new file mode 100644 index 000000000..4e7ea0fff --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet/AppDelegate.h @@ -0,0 +1,16 @@ +// +// AppDelegate.h +// TestSheet +// +// Created by Joe Semolian on 4/15/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import +#import "SheetWindowController.h" + +@interface AppController : NSObject +{ + SheetWindowController* _sheetController; +} +@end diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet/AppDelegate.m b/Tests/Manual/AttachedSheet2/xcode/TestSheet/AppDelegate.m new file mode 100644 index 000000000..ed833baaa --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet/AppDelegate.m @@ -0,0 +1,29 @@ +// +// AppDelegate.m +// TestSheet +// +// Created by Joe Semolian on 4/15/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import "AppDelegate.h" +#import "SheetWindowController.h" + +@implementation AppController + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + // Insert code here to initialize your application + _sheetController = [[SheetWindowController alloc] initWithWindowNibName:@"Window"]; + + [_sheetController newWindow:self]; +} + +- (void)newDocument:(id)sender +{ + [_sheetController newWindow:sender]; +} + +@end diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindow.h b/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindow.h new file mode 100644 index 000000000..2b2c7b263 --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindow.h @@ -0,0 +1,13 @@ +// +// SheetWindow.h +// +// +// Created by Joe Semolian on 4/14/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import + +@interface SheetWindow : NSWindow + +@end diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindow.m b/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindow.m new file mode 100644 index 000000000..b9f9e4422 --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindow.m @@ -0,0 +1,13 @@ +// +// SheetWindow.m +// +// +// Created by Joe Semolian on 4/14/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import "SheetWindow.h" + +@implementation SheetWindow + +@end diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindowController.h b/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindowController.h new file mode 100644 index 000000000..32fd666da --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindowController.h @@ -0,0 +1,43 @@ +// +// SheetWindowController.h +// +// +// Created by Joe Semolian on 4/14/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import + +@interface SheetWindowController : NSWindowController +{ + IBOutlet NSButton* _closeButton; + IBOutlet NSButton* _altCloseButton; + IBOutlet NSButton* _otherCloseButton; + IBOutlet NSButton* _orderOutAfterCheckbox; + IBOutlet NSMatrix* _windowTypeMatrix; + + IBOutlet NSButton* _titledMaskButton; + IBOutlet NSButton* _closableMaskButton; + IBOutlet NSButton* _miniaturizableMaskButton; + IBOutlet NSButton* _resizableMaskButton; + + IBOutlet NSButton* _shadeWindowView; + IBOutlet NSButton* _shadeContentView; + IBOutlet NSButton* _shadeParentWindow; + + NSArray* _childControllers; + NSWindow* _parentWindow; +} + +-(IBAction)newWindow:(id)sender; +-(IBAction)newModalWindow:(id)sender; +-(IBAction)newSheet:(id)sender; +-(IBAction)newModalSheet:(id)sender; +-(IBAction)newAlertSheet:(id)sender; +-(IBAction)newColorPanelSheet:(id)sender; +-(IBAction)newOpenPanelSheet:(id)sender; +-(IBAction)newSavePanelSheet:(id)sender; + +- (void)windowWillBeginSheet:(NSNotification *)notification; +- (void)windowDidEndSheet:(NSNotification *)notification; +@end diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindowController.m b/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindowController.m new file mode 100644 index 000000000..b97b8f53b --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet/SheetWindowController.m @@ -0,0 +1,343 @@ +// +// SheetWindowController.m +// +// +// Created by Joe Semolian on 4/14/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import "SheetWindowController.h" + +@interface SheetWindowController () + +@end + +@implementation SheetWindowController + +- (id)initWithWindow:(NSWindow *)window +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + self = [super initWithWindow:window]; + if (self) + { + _closeButton = nil; + _childControllers = [NSArray array]; + } + + return self; +} + +- (void)windowDidLoad +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + [super windowDidLoad]; + + if (!_closeButton) + NSLog(@"[%@ %s]: _closeButton is not connected!", [self className], sel_getName(_cmd)); +} + +-(void)positionWindow +{ + NSWindow* keyWindow = [NSApp keyWindow]; + CGPoint origin = ([keyWindow frame]).origin; + origin = CGPointMake(origin.x + 20, origin.y + 20); + [[self window] setFrameOrigin:origin]; +} + +// +// Normal window +// +-(void)newDocument:(id)sender +{ + [self newWindow:sender]; +} + +-(SheetWindowController*)initWithStyleMask:(int)styleMask +{ + + if (styleMask==0) + return [self initWithWindowNibName:@"Window"]; + + NSWindow* window = [ [NSWindow alloc] + initWithContentRect:CGRectMake(0,0,400,300) + styleMask:styleMask + backing:NSBackingStoreBuffered + defer:YES]; + + if (self = [super initWithWindow:window]) + { + _closeButton = [ [NSButton alloc] initWithFrame:CGRectMake(0,0,32,100)]; + [_closeButton setTitle:@"Close"]; + [_closeButton setButtonType:NSMomentaryPushInButton]; + [_closeButton setBezelStyle:NSBezelBorder]; + [_closeButton sizeToFit]; + [[window contentView] addSubview:_closeButton]; + } + + return self; +} + +-(SheetWindowController*)allocController +{ + long type = 1; + if (_windowTypeMatrix) + type = [ [_windowTypeMatrix selectedCell] tag]; + + int styleMask = 0; + if ([_titledMaskButton state]) + styleMask |= NSTitledWindowMask; + + if ([_closableMaskButton state]) + styleMask |= NSClosableWindowMask; + + if ([_miniaturizableMaskButton state]) + styleMask |= NSMiniaturizableWindowMask; + + switch (type) + { + case 2: + styleMask |= NSTexturedBackgroundWindowMask; + break; + case 3: + styleMask = NSBorderlessWindowMask; + break; + case 4: + break; + case 5: + styleMask = NSDocModalWindowMask; + break; + } + + if ([_resizableMaskButton state]) + styleMask |= NSResizableWindowMask; + + if (type == 1) + styleMask = 0; + + return [[SheetWindowController alloc] initWithStyleMask:styleMask]; +} + +-(void)newWindow:(id)sender +{ + SheetWindowController* controller = [self allocController]; + _childControllers = [_childControllers arrayByAddingObject:controller]; + [controller runNormalWindow]; +} + +-(void)runNormalWindow +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + [self positionWindow]; + [[self window] setTitle:@"Normal Window"]; + [_closeButton setTarget:[self window]]; + [_closeButton setAction:@selector(orderOut:)]; + [self showWindow:self]; +} + +-(void)newModalWindow:(id)sender +{ + SheetWindowController* controller = [self allocController]; + _childControllers = [_childControllers arrayByAddingObject:controller]; + [controller runModalWindow]; +} + +-(void)runModalWindow +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + [[self window] setTitle:@"Modal Window"]; + [[self window] setDelegate:self]; + [_closeButton setTarget:self]; + [_closeButton setAction:@selector(endModalWindow:)]; + //[self showWindow:self]; + [NSApp runModalForWindow:[self window]]; +} + +-(void)endModalWindow:(id)sender +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + [[self window] performClose:self]; +} + +-(void)windowWillClose:(NSNotification*)notification +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + if ([NSApp modalWindow]) + [NSApp stopModal]; +} + +-(void)newSheet:(id)sender +{ + SheetWindowController* controller = [self allocController]; + _childControllers = [_childControllers arrayByAddingObject:controller]; + [controller runSheetForWindow:[self window]]; +} + +-(void)runSheetForWindow:(NSWindow*)parentWindow +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + NSWindow* sheet = [self window]; + [parentWindow setDelegate:self]; + _parentWindow = parentWindow; + + [_closeButton setTarget:self]; + [_closeButton setAction:@selector(closeSheet:)]; + [_altCloseButton setAction:@selector(closeSheetAndParent:)]; + [_otherCloseButton setAction:@selector(closeSheetAndRepeat:)]; + + [NSApp beginSheet:sheet + modalForWindow:parentWindow + modalDelegate:self + didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) + contextInfo:(void*)self]; +} + +-(void)closeSheet:(id)sender +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + // NOTE: orderOut is not required for Capp, but is for Cocoa. It does + // not seem to matter when it is called in relation to endSheet: + BOOL orderOutAfter = [_orderOutAfterCheckbox state]; + if (!orderOutAfter) + [[self window] close]; + //[[self window] orderOut:nil]; + + [NSApp endSheet:[self window] returnCode:99]; + + if (orderOutAfter) + //[[self window] orderOut:nil]; + [[self window] close]; +} + +-(void)closeSheetAndParent:(id)sender +{ + // common use case is saving document in response to a close, + // in this case we don't want to show the animation at all + [_parentWindow close]; + + BOOL orderOutAfter = [_orderOutAfterCheckbox state]; + if (!orderOutAfter) + [[self window] orderOut:nil]; + + [NSApp endSheet:[self window] returnCode:99]; + + if (orderOutAfter) + [[self window] orderOut:nil]; +} + +-(void)closeSheetAndRepeat:(id)sender +{ + // common use case is showing a progress bar after a save command, + // the orderout gets rid of the current sheet, + // the return code indicates to open another sheet up + BOOL orderOutAfter = [_orderOutAfterCheckbox state]; + if (!orderOutAfter) + [[self window] orderOut:nil]; + + [NSApp endSheet:[self window] returnCode:77]; + if (orderOutAfter) + [[self window] orderOut:nil]; +} + + +-(void)newModalSheet:(id)sender +{ + SheetWindowController* controller = [self allocController]; + _childControllers = [_childControllers arrayByAddingObject:controller]; + [controller runModalSheetForWindow:[self window]]; +} + + + +-(void)runModalSheetForWindow:(NSWindow*)parentWindow +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + NSWindow* sheet = [self window]; + [parentWindow setDelegate:self]; + _parentWindow = parentWindow; + + [_closeButton setTarget:self]; + [_closeButton setAction:@selector(closeModalSheet:)]; + + [NSApp beginSheet:sheet + modalForWindow:parentWindow + modalDelegate:self + didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) + contextInfo:(void*)self]; + + // what is the difference between these two approaches? + [NSApp runModalForWindow:sheet]; + + //var session = [CPApp beginModalSessionForWindow:sheet]; + //[CPApp runModalSession:session]; +} + +-(void)closeModalSheet:(id)sender +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + [[self window] orderOut:self]; + + [NSApp endSheet:[self window]]; + + // FIXME: there is no endModalSession: per Cocoa + [NSApp stopModalWithCode:999]; +} + +-(void)newAlertSheet:(id)sender +{ + [[self window] setDelegate:self]; + _parentWindow = [self window]; + [self runAlertSheet:_parentWindow]; +} + +-(void)runAlertSheet:(NSWindow*)parentWindow +{ + NSAlert* alert = [NSAlert alertWithMessageText:@"Oops, something went wrong!" + defaultButton:@"DefaultButton" + alternateButton:@"AltButton" + otherButton:@"OtherButton" + informativeTextWithFormat:@"If we knew why it went wrong, we would describe it here."]; + + [alert beginSheetModalForWindow:[self window] + modalDelegate:self + didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) + contextInfo:nil]; +} + + +- (void)didEndSheet:(NSWindow*)sheet returnCode:(NSInteger)returnCode contextInfo:(void*)contextInfo +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + //NSAssert(sheet == [self window], @"sheet object is incorrect"); + + // repeat with another sheet + if (returnCode == 77) + //[self runSheetForWindow:_parentWindow]; + [self runAlertSheet:_parentWindow]; +} + +- (void)windowWillBeginSheet:(NSNotification *)notification +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + NSAssert([notification object]==_parentWindow, @"notification object is not parent window"); +} + +- (void)windowDidEndSheet:(NSNotification *)notification +{ + NSLog(@"[%@ %s]", [self className], sel_getName(_cmd)); + + NSAssert([notification object]==_parentWindow, @"notification object is not parent window"); +} + +@end diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet/TestSheet-Info.plist b/Tests/Manual/AttachedSheet2/xcode/TestSheet/TestSheet-Info.plist new file mode 100644 index 000000000..f9231b08a --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet/TestSheet-Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + org.github.walisser.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2012 __MyCompanyName__. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet/TestSheet-Prefix.pch b/Tests/Manual/AttachedSheet2/xcode/TestSheet/TestSheet-Prefix.pch new file mode 100644 index 000000000..be4e5327e --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet/TestSheet-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'TestSheet' target in the 'TestSheet' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet/en.lproj/Credits.rtf b/Tests/Manual/AttachedSheet2/xcode/TestSheet/en.lproj/Credits.rtf new file mode 100644 index 000000000..46576ef21 --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet/en.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet/en.lproj/InfoPlist.strings b/Tests/Manual/AttachedSheet2/xcode/TestSheet/en.lproj/InfoPlist.strings new file mode 100644 index 000000000..477b28ff8 --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/Tests/Manual/AttachedSheet2/xcode/TestSheet/main.m b/Tests/Manual/AttachedSheet2/xcode/TestSheet/main.m new file mode 100644 index 000000000..1e799258c --- /dev/null +++ b/Tests/Manual/AttachedSheet2/xcode/TestSheet/main.m @@ -0,0 +1,14 @@ +// +// main.m +// TestSheet +// +// Created by Joe Semolian on 4/15/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} From 32c5c82cb971cc9f715a6b52a0273dedbd90b2f4 Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sun, 29 Jul 2012 14:04:06 -0400 Subject: [PATCH 030/114] -removed unused import --- Tests/Manual/AttachedSheet2/SheetWindowController.j | 2 -- 1 file changed, 2 deletions(-) diff --git a/Tests/Manual/AttachedSheet2/SheetWindowController.j b/Tests/Manual/AttachedSheet2/SheetWindowController.j index 4fb61bc8d..203177eec 100644 --- a/Tests/Manual/AttachedSheet2/SheetWindowController.j +++ b/Tests/Manual/AttachedSheet2/SheetWindowController.j @@ -1,6 +1,4 @@ -@import "SheetWindow.j" - @implementation SheetWindowController : CPWindowController { @outlet CPButton _closeButton; From 7537f4d032a49cb644f1d7f5d6a21ca6cb753c7e Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 1 Aug 2012 16:35:34 +0100 Subject: [PATCH 031/114] Eliminate some duplicate methods. --- .../Manual/TableTest/OldTest/AppController.j | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/Tests/Manual/TableTest/OldTest/AppController.j b/Tests/Manual/TableTest/OldTest/AppController.j index c72f7746e..a1ba38639 100644 --- a/Tests/Manual/TableTest/OldTest/AppController.j +++ b/Tests/Manual/TableTest/OldTest/AppController.j @@ -299,20 +299,9 @@ tableTestDragType = @"CPTableViewTestDragType"; [aTableView reloadData]; } - -- (void)tableViewSelectionIsChanging:(CPNotification)aNotification -{ - //CPLog.debug(@"changing! %@", [aNotification description]); -} - -- (void)tableViewSelectionDidChange:(CPNotification)aNotification -{ - //CPLog.debug(@"did change! %@", [aNotification description]); -} - - (BOOL)tableView:(CPTableView)aTableView shouldSelectRow:(int)rowIndex { - //CPLog.debug(@"tableView:shouldSelectRow"); + CPLog.debug(@"tableView:shouldSelectRow"); return true; } @@ -324,18 +313,19 @@ tableTestDragType = @"CPTableViewTestDragType"; - (void)tableViewSelectionDidChange:(id)notification { - //CPLogConsole(_cmd + [notification description]); + CPLogConsole(_cmd + [notification description]); } - (void)tableViewSelectionIsChanging:(id)notification { - //CPLogConsole(_cmd + [notification description]); + CPLogConsole(_cmd + [notification description]); } - (void)_tableViewColumnDidResize:(id)notification { - //CPLogConsole(_cmd + [notification description]); + CPLogConsole(_cmd + [notification description]); } + - (BOOL)tableView:(CPTableView)aTableView shouldEditTableColumn:(CPTableColumn)tableColumn row:(int)row { if (aTableView === tableView3) @@ -425,8 +415,8 @@ tableTestDragType = @"CPTableViewTestDragType"; } else { - var destIndexes = [CPIndexSet indexSetWithIndexesInRange:CPMakeRange(row, [sourceIndexes count])]; - var sourceObjects = [sourceDataSet objectsAtIndexes:sourceIndexes]; + var destIndexes = [CPIndexSet indexSetWithIndexesInRange:CPMakeRange(row, [sourceIndexes count])], + sourceObjects = [sourceDataSet objectsAtIndexes:sourceIndexes]; [destinationDataSet insertObjects:sourceObjects atIndexes:destIndexes]; [destinationTable reloadData]; From 31ab70d6fca4c1a75e9c4e92ebcef99fc26c2d8f Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 1 Aug 2012 18:58:35 +0100 Subject: [PATCH 032/114] Refs #1530. Fixed: table views could not be interacted with if they couldn't become the first responder. --- AppKit/CPTableView.j | 7 +-- Tests/AppKit/CPTableViewTest.j | 48 ++++++++++++++----- .../Manual/TableTest/OldTest/AppController.j | 26 ++++++++-- 3 files changed, 59 insertions(+), 22 deletions(-) diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index 61045d64e..8d8361921 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -4037,8 +4037,8 @@ Your delegate can implement this method to avoid subclassing the tableview to ad */ - (BOOL)startTrackingAt:(CGPoint)aPoint { - if (![[self window] makeFirstResponder:self]) - return NO; + // Try to become the first responder, but if we can't, that's okay. + [[self window] makeFirstResponder:self]; var row = [self rowAtPoint:aPoint]; @@ -4189,9 +4189,6 @@ Your delegate can implement this method to avoid subclassing the tableview to ad */ - (void)stopTracking:(CGPoint)lastPoint at:(CGPoint)aPoint mouseIsUp:(BOOL)mouseIsUp { - if ([[self window] firstResponder] !== self) - return; - _isSelectingSession = NO; var CLICK_TIME_DELTA = 1000, diff --git a/Tests/AppKit/CPTableViewTest.j b/Tests/AppKit/CPTableViewTest.j index e07a63664..a65de663f 100644 --- a/Tests/AppKit/CPTableViewTest.j +++ b/Tests/AppKit/CPTableViewTest.j @@ -4,6 +4,7 @@ @implementation CPTableViewTest : OJTestCase { + CPWindow theWindow; CPTableView tableView; CPTableColumn tableColumn; @@ -15,19 +16,21 @@ - (void)setUp { // setup a reasonable table - tableView = [[CPTableView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; + theWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(0.0, 0.0, 1024.0, 768.0) + styleMask:CPWindowNotSizable]; + + tableView = [[FirstResponderConfigurableTableView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; tableColumn = [[CPTableColumn alloc] initWithIdentifier:@"Foo"]; + tableView.acceptsFirstResponder = YES; [tableView addTableColumn:tableColumn]; + + [[theWindow contentView] addSubview:tableView]; } - (void)testDoubleAction { doubleActionReceived = NO; - var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(0.0, 0.0, 1024.0, 768.0) - styleMask:CPWindowNotSizable]; - [[theWindow contentView] addSubview:tableView]; - [tableView setTarget:self]; [tableView setDoubleAction:@selector(doubleAction:)]; @@ -44,6 +47,20 @@ [tableView trackMouse:dblClkUp]; [self assertTrue:doubleActionReceived]; + + // The event should also work even if the table is not the first responder. + tableView.acceptsFirstResponder = NO; + [theWindow makeFirstResponder:nil]; + + doubleActionReceived = NO; + + [[CPApplication sharedApplication] sendEvent:dblClkDown]; + [tableView trackMouse:dblClkDown]; + + [[CPApplication sharedApplication] sendEvent:dblClkUp]; + [tableView trackMouse:dblClkUp]; + + [self assertTrue:doubleActionReceived]; } - (void)doubleAction:(id)sender @@ -124,11 +141,6 @@ */ - (void)testEditCell { - var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(0, 0, 200, 150) - styleMask:CPWindowNotSizable]; - - [[theWindow contentView] addSubview:tableView]; - var dataSource = [TestDataSource new]; [dataSource setTableEntries:["A", "B", "C"]]; @@ -230,9 +242,7 @@ - (void)testContentBinding { - var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(0, 0, 200, 150) - styleMask:CPWindowNotSizable], - contentBindingTable = [[CPTableView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)], + var contentBindingTable = [[CPTableView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)], tableColumn = [[CPTableColumn alloc] initWithIdentifier:@"A"], delegate = [ContentBindingTableDelegate new]; @@ -259,6 +269,18 @@ @end +@implementation FirstResponderConfigurableTableView : CPTableView +{ + BOOL acceptsFirstResponder; +} + +- (BOOL)acceptsFirstResponder +{ + return acceptsFirstResponder; +} + +@end + @implementation TestDataSource : CPObject { CPArray tableEntries @accessors; diff --git a/Tests/Manual/TableTest/OldTest/AppController.j b/Tests/Manual/TableTest/OldTest/AppController.j index a1ba38639..901a9bafd 100644 --- a/Tests/Manual/TableTest/OldTest/AppController.j +++ b/Tests/Manual/TableTest/OldTest/AppController.j @@ -10,6 +10,7 @@ tableTestDragType = @"CPTableViewTestDragType"; CPImage iconImage; CPArray dataSet1; CPArray dataSet2; + CPArray dataSet3; CPTableColumn randomColumn; } @@ -28,9 +29,15 @@ tableTestDragType = @"CPTableViewTestDragType"; } var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(50,50,700,500) styleMask:CPClosableWindowMask], - contentView = [theWindow contentView]; + contentView = [theWindow contentView], + label = [CPTextField new]; - tableView = [[CPTableView alloc] initWithFrame:CGRectMake(0.0, 0.0, 400.0, 400.0)]; + [label setStringValue:@"This table refuses to become the first responder but can still be interacted with."]; + [label sizeToFit]; + [label setFrameOrigin:CGPointMake(200, 10)] + [contentView addSubview:label]; + + tableView = [[CUTableView alloc] initWithFrame:CGRectMake(0.0, 0.0, 400.0, 400.0)]; [tableView setAllowsMultipleSelection:YES]; [tableView setAllowsColumnSelection:YES]; @@ -172,7 +179,6 @@ tableTestDragType = @"CPTableViewTestDragType"; - (void)newWindow { - var window2 = [[CPWindow alloc] initWithContentRect:CGRectMake(450, 50, 500, 400) styleMask:CPTitledWindowMask | CPResizableWindowMask]; tableView2 = [[CPTableView alloc] initWithFrame:CGRectMake(0.0, 0.0, 500.0, 500.0)]; @@ -186,7 +192,6 @@ tableTestDragType = @"CPTableViewTestDragType"; [tableView2 setDelegate:self]; [tableView2 setDataSource:self]; - var checkBox = [[CPCheckBox alloc] initWithFrame:CGRectMake(5,3,24,24)], checkBoxColumn = [[CPTableColumn alloc] initWithIdentifier:@"checkBox"]; [checkBoxColumn setDataView:checkBox]; @@ -475,3 +480,16 @@ tableTestDragType = @"CPTableViewTestDragType"; } @end + + +@implementation CUTableView : CPTableView +{ + +} + +- (BOOL)acceptsFirstResponder +{ + return NO; +} + +@end From 90ae5766e646f5a9daafcc8ddca568372dc263ca Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 1 Aug 2012 19:18:40 +0100 Subject: [PATCH 033/114] Fixed: token fields would sometimes unexpectedly steal first responder status. If an autocomplete choice was made followed by immediately focusing on another control, the token field would reclaim first responder status a moment later. --- AppKit/_CPAutocompleteMenu.j | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/AppKit/_CPAutocompleteMenu.j b/AppKit/_CPAutocompleteMenu.j index a79c1ae80..78d1be533 100644 --- a/AppKit/_CPAutocompleteMenu.j +++ b/AppKit/_CPAutocompleteMenu.j @@ -65,7 +65,7 @@ var _CPAutocompleteMenuMaximumHeight = 307; [scrollView setHasHorizontalScroller:NO]; [contentView addSubview:scrollView]; - tableView = [[CPTableView alloc] initWithFrame:CPRectMakeZero()]; + tableView = [[_CPNonFirstResponderTableView alloc] initWithFrame:CPRectMakeZero()]; var tableColumn = [CPTableColumn new]; [tableColumn setResizingMask:CPTableColumnAutoresizingMask]; @@ -251,14 +251,14 @@ var _CPAutocompleteMenuMaximumHeight = 307; return [contentArray objectAtIndex:row]; } -- (void)tableViewSelectionDidChange:(CPNotification)notification +@end + + +@implementation _CPNonFirstResponderTableView : CPTableView + +- (BOOL)acceptsFirstResponder { - // FIXME - // make sure a mouse click in the tableview doesn't steal first responder state - window.setTimeout(function() - { - [[textField window] makeFirstResponder:textField]; - }, 2.0); + return NO; } @end From 41783e87a31997eda2a4f9cb6fdbd4c17bdf243f Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 1 Aug 2012 21:12:53 +0100 Subject: [PATCH 034/114] Fixed: in recent builds token field text didn't align. Text inside of tokens appeared 1 px higher than text typed in the text field area. --- AppKit/Themes/Aristo/ThemeDescriptors.j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index e1652f4f3..094be44ad 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -1089,7 +1089,7 @@ var themedButtonValues = nil, [@"text-color", textHighlightedColor, CPThemeStateHighlighted], [@"bezel-inset", CGInsetMakeZero(), CPThemeStateBezeled], - [@"content-inset", CGInsetMake(1.0, 22.0, 3.0, 15.0), CPThemeStateBezeled], + [@"content-inset", CGInsetMake(2.0, 22.0, 2.0, 15.0), CPThemeStateBezeled], // Minimum height == maximum height since tokens are fixed height. [@"min-size", CGSizeMake(0.0, 19.0)], From 26c26914dab2acb8602095cbbf87d1b3896b4742 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 2 Aug 2012 00:38:21 +0100 Subject: [PATCH 035/114] Fixed: token field scrolling away from selected token. Sometimes clicking a token would cause the token field to scroll to some other spot. This appears to have been caused by the inactive input element gaining focus. We no longer need the input element for keyboard navigation so we can hide it entirely when it's not used to input a new token. Also, avoid focusing the input element needlessly. --- AppKit/CPTokenField.j | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index 7791be27a..82f99f04a 100755 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -1074,8 +1074,15 @@ var CPScrollDestinationNone = 0, if (isEditing && _selectedRange.length) { _inputFrame = nil; - [self _inputElement].style.left = "-10000px"; - [self _inputElement].focus(); + var inputElement = [self _inputElement]; + inputElement.style.display = "none"; + } + else if (isEditing) + { + var inputElement = [self _inputElement]; + inputElement.style.display = "block"; + if (document.focusedElement !== inputElement) + inputElement.focus(); } // Trim off any excess height downwards. From 9768ea4af96692f7d7f099029cbf9e53afe17d91 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 2 Aug 2012 00:44:58 +0100 Subject: [PATCH 036/114] Fixed: multiple rows of tokens in token fields wouldn't scroll right. In recent versions, moving the cursor to a new row of tokens would place the scroll point somewhere halfway between the two rows of tokens. --- AppKit/CPTokenField.j | 17 ++++++++++------- AppKit/Themes/Aristo/ThemeDescriptors.j | 4 ++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index 82f99f04a..5e7b9e564 100755 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -1008,8 +1008,9 @@ var CPScrollDestinationNone = 0, r.origin.y = offset.y; // Make sure the frame fits. - if (_CGRectGetHeight([contentView bounds]) < offset.y + height) - [contentView setFrame:_CGRectMake(0, 0, _CGRectGetWidth([_tokenScrollView bounds]), offset.y + height)]; + var scrollHeight = offset.y + tokenHeight + CEIL(spaceBetweenTokens.height / 2.0); + if (_CGRectGetHeight([contentView bounds]) < scrollHeight) + [contentView setFrameSize:_CGSizeMake(_CGRectGetWidth([_tokenScrollView bounds]), scrollHeight)]; offset.x += width + spaceBetweenTokens.width; @@ -1033,6 +1034,7 @@ var CPScrollDestinationNone = 0, } _inputFrame = fitAndFrame(textWidth, tokenHeight); + _inputFrame.size.height = lineHeight; element.style.left = (_inputFrame.origin.x + editorInset.left) + "px"; @@ -1042,7 +1044,7 @@ var CPScrollDestinationNone = 0, // When editing, always scroll to the cursor. if (_selectedRange.length == 0) - [[_tokenScrollView documentView] scrollRectToVisible:_inputFrame]; + [[_tokenScrollView documentView] scrollPoint:_CGPointMake(0, _inputFrame.origin.y)]; }; for (var i = 0, count = [tokens count]; i < count; i++) @@ -1085,9 +1087,10 @@ var CPScrollDestinationNone = 0, inputElement.focus(); } - // Trim off any excess height downwards. - if (_CGRectGetHeight([contentView bounds]) > offset.y + tokenHeight) - [contentView setFrame:_CGRectMake(0, 0, _CGRectGetWidth([_tokenScrollView bounds]), offset.y + tokenHeight)]; + // Trim off any excess height downwards (in case we shrank). + var scrollHeight = offset.y + tokenHeight + CEIL(spaceBetweenTokens.height / 2.0); + if (_CGRectGetHeight([contentView bounds]) > scrollHeight) + [contentView setFrameSize:_CGSizeMake(_CGRectGetWidth([_tokenScrollView bounds]), scrollHeight)]; if (_shouldScrollTo !== CPScrollDestinationNone) { @@ -1112,7 +1115,7 @@ var CPScrollDestinationNone = 0, if (!aToken) return; - return [[_tokenScrollView documentView] scrollRectToVisible:[aToken frame]]; + return [[_tokenScrollView documentView] scrollPoint:_CGPointMake(0, [aToken frameOrigin].y)]; } @end diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index 094be44ad..d5f368fbc 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -1031,13 +1031,13 @@ var themedButtonValues = nil, [@"editor-inset", CGInsetMake(2.0, 0.0, 0.0, 0.0)], // Non-bezeled token field with tokens - [@"content-inset", CGInsetMake(5.0, 8.0, 4.0, 8.0)], + [@"content-inset", CGInsetMake(6.0, 8.0, 4.0, 8.0)], // Non-bezeled token field with no tokens [@"content-inset", CGInsetMake(7.0, 8.0, 6.0, 8.0), CPTextFieldStatePlaceholder], // Bezeled token field with tokens - [@"content-inset", CGInsetMake(6.0, 8.0, 2.0, 8.0), CPThemeStateBezeled], + [@"content-inset", CGInsetMake(6.0, 5.0, 4.0, 5.0), CPThemeStateBezeled], // Bezeled token field with no tokens [@"content-inset", CGInsetMake(8.0, 8.0, 7.0, 8.0), CPThemeStateBezeled | CPTextFieldStatePlaceholder] From f06be56fa3f85f6f8e0903dcabd45d83138f9949 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 2 Aug 2012 00:45:33 +0100 Subject: [PATCH 037/114] Fixed: accidental global. --- AppKit/_CPPopUpList.j | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AppKit/_CPPopUpList.j b/AppKit/_CPPopUpList.j index 20ebac313..10f66136f 100644 --- a/AppKit/_CPPopUpList.j +++ b/AppKit/_CPPopUpList.j @@ -104,7 +104,7 @@ var ListColumnIdentifier = @"1"; _tableView = [self makeTableView]; // Start with a default size, we will resize it later - frame = CGRectMake(0, 0, 200, 200); + var frame = CGRectMake(0, 0, 200, 200); _tableColumn = [[CPTableColumn alloc] initWithIdentifier:ListColumnIdentifier]; [_tableColumn setWidth:CGRectGetWidth(frame) - [CPScroller scrollerWidth]]; @@ -656,6 +656,7 @@ var ListColumnIdentifier = @"1"; else return YES; } + #pragma mark Internal Helpers /*! @ignore */ From 1fb09dcfae42a595001d4be8d4abd89b78d52c88 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 2 Aug 2012 00:53:30 +0100 Subject: [PATCH 038/114] Fix typo. --- AppKit/CPTokenField.j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index 5e7b9e564..8f45054e1 100755 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -1083,7 +1083,7 @@ var CPScrollDestinationNone = 0, { var inputElement = [self _inputElement]; inputElement.style.display = "block"; - if (document.focusedElement !== inputElement) + if (document.activeElement !== inputElement) inputElement.focus(); } From d3b38ac5e8d2e6234b555a69ab2cca950b26eb5c Mon Sep 17 00:00:00 2001 From: Ilya Kulakov Date: Tue, 31 Jul 2012 23:37:51 +0700 Subject: [PATCH 039/114] Add +[CPEvent modifierFlags]. --- AppKit/CPApplication.j | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index f92a27412..e55592577 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -33,7 +33,8 @@ var CPMainCibFile = @"CPMainCibFile", - CPMainCibFileHumanFriendly = @"Main cib file base name"; + CPMainCibFileHumanFriendly = @"Main cib file base name", + CPEventModifierFlags = 0; CPApp = nil; @@ -575,6 +576,7 @@ CPRunContinuesResponse = -1002; - (void)sendEvent:(CPEvent)anEvent { _currentEvent = anEvent; + CPEventModifierFlags = [anEvent modifierFlags]; #if PLATFORM(DOM) var willPropagate = [[[anEvent window] platformWindow] _willPropagateCurrentDOMEvent]; @@ -1379,3 +1381,16 @@ var _CPAppBootstrapperActions = nil; } @end + + +@implementation CPEvent (CPApplicationModifierFlags) + +/*! + Returns the currently pressed modifier flags. +*/ ++ (unsigned)modifierFlags +{ + return CPEventModifierFlags; +} + +@end From 1ccd89ddd893fecd45f640dfeccc3b960674714e Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 2 Aug 2012 15:44:19 +0100 Subject: [PATCH 040/114] Refs #1640. Unit test. --- Tests/AppKit/CPEventTest.j | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Tests/AppKit/CPEventTest.j b/Tests/AppKit/CPEventTest.j index 160024ad2..02981fd3d 100644 --- a/Tests/AppKit/CPEventTest.j +++ b/Tests/AppKit/CPEventTest.j @@ -1,9 +1,16 @@ +@import @import @implementation CPEventTest : OJTestCase { } +- (void)setUp +{ + // CPApplication must be initialised for some event handling to work. + [CPApplication sharedApplication]; +} + /*! This test isn't very useful but it checks for any trouble related to issue #1202. */ @@ -16,4 +23,20 @@ [self assert:0 equals:[anEvent deltaZ] message:"default event delta Z should be 0"]; } -@end \ No newline at end of file +- (void)testModifierFlags +{ + [self assert:0 equals:[CPEvent modifierFlags] message:@"no modifier flags active in a newly started app"]; + + var anEvent = [CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPShiftKeyMask timestamp:0 windowNumber:0 context:nil characters:"A" charactersIgnoringModifiers:"a" isARepeat:NO keyCode:0]; + [CPApp sendEvent:anEvent]; + + [self assert:CPShiftKeyMask equals:[CPEvent modifierFlags] message:@"shift key pressed"]; + + // When the key up event is sent the modifier flags are cleared. + anEvent = [CPEvent keyEventWithType:CPKeyUp location:CGPointMakeZero() modifierFlags:0 timestamp:0 windowNumber:0 context:nil characters:"A" charactersIgnoringModifiers:"a" isARepeat:NO keyCode:0]; + [CPApp sendEvent:anEvent]; + + [self assert:0 equals:[CPEvent modifierFlags] message:@"shift key released"]; +} + +@end From 6b660a0c76f9a6f701ccb0ea92d1f2c8d8117ba7 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 2 Aug 2012 15:53:04 +0100 Subject: [PATCH 041/114] Fixed: CPEvent data1 and data2 weren't stored right. They were stored in globals instead of ivars, allowing only one data1 or data2 in the whole app. --- AppKit/CPEvent.j | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/AppKit/CPEvent.j b/AppKit/CPEvent.j index a5fe949bd..2d3c3cf49 100644 --- a/AppKit/CPEvent.j +++ b/AppKit/CPEvent.j @@ -204,6 +204,8 @@ var _CPEventPeriodicEventPeriod = 0, BOOL _isARepeat; unsigned _keyCode; DOMEvent _DOMEvent; + int _data1; + int _data2; float _deltaX; float _deltaY; @@ -517,6 +519,16 @@ var _CPEventPeriodicEventPeriod = 0, return _DOMEvent; } +- (int)data1 +{ + return _data1; +} + +- (int)data2 +{ + return _data2; +} + // Getting Scroll Wheel Event Information /*! Returns the change in the x-axis for a mouse event. From b4cfa8cefbeb6643e89d1140c02e530036b0494f Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 2 Aug 2012 15:53:27 +0100 Subject: [PATCH 042/114] CPEvent description. --- AppKit/CPEvent.j | 23 +++++++++++++++++++++++ Tests/AppKit/CPEventTest.j | 15 +++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/AppKit/CPEvent.j b/AppKit/CPEvent.j index 2d3c3cf49..543dcaadd 100644 --- a/AppKit/CPEvent.j +++ b/AppKit/CPEvent.j @@ -642,6 +642,29 @@ var _CPEventPeriodicEventPeriod = 0, _CPEventPeriodicEventTimer = nil; } +- (CPString)description +{ + switch (_type) + { + case CPKeyDown: + case CPKeyUp: + case CPFlagsChanged: + return [CPString stringWithFormat:@"CPEvent: type=%d loc=%@ time=%.1f flags=0x%X win=%@ winNum=%d ctxt=%@ chars=\"%@\" unmodchars=\"%@\" repeat=%d keyCode=%d", _type, CPStringFromPoint(_location), _timestamp, _modifierFlags, _window, _windowNumber, _context, _characters, _charactersIgnoringModifiers, _isARepeat, _keyCode]; + case CPLeftMouseDown: + case CPLeftMouseUp: + case CPRightMouseDown: + case CPRightMouseUp: + case CPMouseMoved: + case CPLeftMouseDragged: + case CPRightMouseDragged: + case CPMouseEntered: + case CPMouseExited: + return [CPString stringWithFormat:@"CPEvent: type=%d loc=%@ time=%.1f flags=0x%X win=%@ winNum=%d ctxt=%@ evNum=%d click=%d buttonNumber=%d pressure=%f", _type, CPStringFromPoint(_location), _timestamp, _modifierFlags, _window, _windowNumber, _context, _eventNumber, _clickCount, [self buttonNumber], _pressure]; + default: + return [CPString stringWithFormat:@"CPEvent: type=%d loc=%@ time=%.1f flags=0x%X win=%@ winNum=%d ctxt=%@ subtype=%d data1=%d data2=%d", _type, CPStringFromPoint(_location), _timestamp, _modifierFlags, _window, _windowNumber, _context, _subtype, _data1, _data2]; + } +} + @end function _CPEventFirePeriodEvent() diff --git a/Tests/AppKit/CPEventTest.j b/Tests/AppKit/CPEventTest.j index 02981fd3d..0313a7ba4 100644 --- a/Tests/AppKit/CPEventTest.j +++ b/Tests/AppKit/CPEventTest.j @@ -23,6 +23,21 @@ [self assert:0 equals:[anEvent deltaZ] message:"default event delta Z should be 0"]; } +- (void)testDescription +{ + var anEvent = [CPEvent mouseEventWithType:CPLeftMouseUp location:CGPointMake(50, 50) modifierFlags:CPShiftKeyMask + timestamp:400.5 windowNumber:300 context:nil eventNumber:0 clickCount:2 pressure:0.5]; + [self assert:@"CPEvent: type=2 loc={50, 50} time=400.5 flags=0x20000 win=undefined winNum=0 ctxt=null evNum=0 click=2 buttonNumber=0 pressure=0.5" equals:[anEvent description]]; + + anEvent = [CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPShiftKeyMask | CPCommandKeyMask timestamp:12345.6 windowNumber:10 context:nil characters:"X" charactersIgnoringModifiers:"x" isARepeat:NO keyCode:10]; + + [self assert:@"CPEvent: type=10 loc={0, 0} time=12345.6 flags=0x120000 win=null winNum=10 ctxt=null chars=\"X\" unmodchars=\"x\" repeat=0 keyCode=10" equals:[anEvent description]]; + + anEvent = [CPEvent otherEventWithType:CPApplicationDefined location:CGPointMakeZero() modifierFlags:0 timestamp:500.5 windowNumber:2 context:nil subtype:5 data1:15 data2:25]; + + [self assert:@"CPEvent: type=15 loc={0, 0} time=500.5 flags=0x0 win=null winNum=0 ctxt=null subtype=5 data1=15 data2=25" equals:[anEvent description]]; +} + - (void)testModifierFlags { [self assert:0 equals:[CPEvent modifierFlags] message:@"no modifier flags active in a newly started app"]; From 055dd7229ebeb00bdb8ba8ce797622171d988c31 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sat, 4 Aug 2012 00:48:45 +0100 Subject: [PATCH 043/114] Properly allow `CPNumberFormatter` to operate on most `CPNumber` types. This only worked by accident before. --- Foundation/CPNumberFormatter.j | 3 ++- Tests/Foundation/CPNumberFormatterTest.j | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Foundation/CPNumberFormatter.j b/Foundation/CPNumberFormatter.j index 0197d02ef..dc5ba31b1 100644 --- a/Foundation/CPNumberFormatter.j +++ b/Foundation/CPNumberFormatter.j @@ -78,13 +78,14 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; - (CPString)stringFromNumber:(CPNumber)number { + var dcmn = [number isKindOfClass:CPDecimalNumber] ? number : [[CPDecimalNumber alloc] _initWithJSNumber:number]; + // TODO Add locale support. switch (_numberStyle) { case CPNumberFormatterDecimalStyle: UPDATE_NUMBER_HANDLER_IF_NECESSARY(); - var dcmn = [CPDecimalNumber numberWithFloat:number]; dcmn = [dcmn decimalNumberByRoundingAccordingToBehavior:_numberHandler]; var output = [dcmn descriptionWithLocale:nil], diff --git a/Tests/Foundation/CPNumberFormatterTest.j b/Tests/Foundation/CPNumberFormatterTest.j index 67f4addcb..8cf7cf6a4 100644 --- a/Tests/Foundation/CPNumberFormatterTest.j +++ b/Tests/Foundation/CPNumberFormatterTest.j @@ -68,4 +68,14 @@ [self assert:@"123.568" equals:formattedNumberString]; } +- (void)testStringFromDecimalNumber +{ + var numberFormatter = [CPNumberFormatter new]; + [numberFormatter setNumberStyle:CPNumberFormatterDecimalStyle]; + [numberFormatter setMaximumFractionDigits:1]; + + [self assert:@"1" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1"]]]; + [self assert:@"0.4" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.4467"]]]; +} + @end From b279a92e4cefee29d4b18293fdb3db51aa21434f Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sat, 4 Aug 2012 00:55:41 +0100 Subject: [PATCH 044/114] `CPNumberFormatter setMinimumFractionDigits:` support. --- Foundation/CPNumberFormatter.j | 10 ++++++++++ Tests/Foundation/CPNumberFormatterTest.j | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/Foundation/CPNumberFormatter.j b/Foundation/CPNumberFormatter.j index dc5ba31b1..02072b5ab 100644 --- a/Foundation/CPNumberFormatter.j +++ b/Foundation/CPNumberFormatter.j @@ -59,6 +59,7 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; CPString _perMillSymbol @accessors(property=perMillSymbol); CPString _groupingSeparator @accessors(property=groupingSeparator); CPNumberFormatterRoundingMode _roundingMode @accessors(property=roundingMode); + CPUInteger _minimumFractionalDigits @accessors(property=minimumFractionalDigits); CPUInteger _maximumFractionalDigits @accessors(property=maximalFractionalDigits); CPDecimalNumberHandler _numberHandler; @@ -95,6 +96,9 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; preFractionLength = [preFraction length], commaPosition = 3; + while (fraction.length < _minimumFractionalDigits) + fraction += "0"; + // TODO This is just a temporary solution. Should be generalised. // Add in thousands separators. if (_groupingSeparator) @@ -149,6 +153,12 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; SET_NEEDS_NUMBER_HANDLER_UPDATE(); } +- (void)setMinimumFractionDigits:(CPUInteger)aNumber +{ + _minimumFractionalDigits = aNumber; + SET_NEEDS_NUMBER_HANDLER_UPDATE(); +} + - (void)setMaximumFractionDigits:(CPUInteger)aNumber { _maximumFractionalDigits = aNumber; diff --git a/Tests/Foundation/CPNumberFormatterTest.j b/Tests/Foundation/CPNumberFormatterTest.j index 8cf7cf6a4..0fd6dbccf 100644 --- a/Tests/Foundation/CPNumberFormatterTest.j +++ b/Tests/Foundation/CPNumberFormatterTest.j @@ -78,4 +78,15 @@ [self assert:@"0.4" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.4467"]]]; } +- (void)testSetMinimumFractionDigits_ +{ + var numberFormatter = [CPNumberFormatter new]; + [numberFormatter setNumberStyle:CPNumberFormatterDecimalStyle]; + [numberFormatter setMinimumFractionDigits:3]; + [numberFormatter setMaximumFractionDigits:4]; + + [self assert:@"1.000" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1"]]]; + [self assert:@"1.100" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1.1"]]]; + [self assert:@"0.4467" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.4467"]]]; +} @end From a7f22a0c5a1915ecd6b9e66a9fdf6cb4beeb973a Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sat, 4 Aug 2012 01:09:51 +0100 Subject: [PATCH 045/114] Correct `CPNumberFormatter maximumFractionalDigits` default. --- Foundation/CPNumberFormatter.j | 3 ++- Tests/Foundation/CPNumberFormatterTest.j | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Foundation/CPNumberFormatter.j b/Foundation/CPNumberFormatter.j index 02072b5ab..ac88099bd 100644 --- a/Foundation/CPNumberFormatter.j +++ b/Foundation/CPNumberFormatter.j @@ -70,7 +70,8 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; if (self = [super init]) { _roundingMode = CPNumberFormatterRoundHalfUp; - _maximumFractionalDigits = 3; + _minimumFractionalDigits = 0; + _maximumFractionalDigits = 0; _groupingSeparator = @","; } diff --git a/Tests/Foundation/CPNumberFormatterTest.j b/Tests/Foundation/CPNumberFormatterTest.j index 0fd6dbccf..2f2bb8a2e 100644 --- a/Tests/Foundation/CPNumberFormatterTest.j +++ b/Tests/Foundation/CPNumberFormatterTest.j @@ -8,6 +8,7 @@ { var numberFormatter = [[CPNumberFormatter alloc] init]; [numberFormatter setNumberStyle:CPNumberFormatterDecimalStyle]; + [numberFormatter setMaximumFractionDigits:3]; var formattedNumberString = [numberFormatter stringFromNumber:[CPNumber numberWithInt:123]]; [self assert:@"123" equals:formattedNumberString]; @@ -44,6 +45,7 @@ var numberFormatter = [[CPNumberFormatter alloc] init], formattedNumberString; [numberFormatter setNumberStyle:CPNumberFormatterDecimalStyle]; + [numberFormatter setMaximumFractionDigits:3]; [numberFormatter setRoundingMode:CPNumberFormatterRoundUp]; formattedNumberString = [numberFormatter stringFromNumber:[CPNumber numberWithFloat:123.5672]]; From 534635cbc23f50fcddb06947e01f4cd3a83c2b46 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sat, 4 Aug 2012 01:21:42 +0100 Subject: [PATCH 046/114] Fix `CPNumberFormatter` maximum/minimum fraction digits property name. --- Foundation/CPNumberFormatter.j | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Foundation/CPNumberFormatter.j b/Foundation/CPNumberFormatter.j index ac88099bd..1813fb7cd 100644 --- a/Foundation/CPNumberFormatter.j +++ b/Foundation/CPNumberFormatter.j @@ -27,7 +27,7 @@ @import #define UPDATE_NUMBER_HANDLER_IF_NECESSARY() if (!_numberHandler) \ - _numberHandler = [CPDecimalNumberHandler decimalNumberHandlerWithRoundingMode:_roundingMode scale:_maximumFractionalDigits raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:YES]; + _numberHandler = [CPDecimalNumberHandler decimalNumberHandlerWithRoundingMode:_roundingMode scale:_maximumFractionDigits raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:YES]; #define SET_NEEDS_NUMBER_HANDLER_UPDATE() _numberHandler = nil; CPNumberFormatterNoStyle = 0; @@ -59,8 +59,8 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; CPString _perMillSymbol @accessors(property=perMillSymbol); CPString _groupingSeparator @accessors(property=groupingSeparator); CPNumberFormatterRoundingMode _roundingMode @accessors(property=roundingMode); - CPUInteger _minimumFractionalDigits @accessors(property=minimumFractionalDigits); - CPUInteger _maximumFractionalDigits @accessors(property=maximalFractionalDigits); + CPUInteger _minimumFractionDigits @accessors(property=minimumFractionDigits); + CPUInteger _maximumFractionDigits @accessors(property=maximumFractionDigits); CPDecimalNumberHandler _numberHandler; } @@ -70,8 +70,8 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; if (self = [super init]) { _roundingMode = CPNumberFormatterRoundHalfUp; - _minimumFractionalDigits = 0; - _maximumFractionalDigits = 0; + _minimumFractionDigits = 0; + _maximumFractionDigits = 0; _groupingSeparator = @","; } @@ -97,7 +97,7 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; preFractionLength = [preFraction length], commaPosition = 3; - while (fraction.length < _minimumFractionalDigits) + while (fraction.length < _minimumFractionDigits) fraction += "0"; // TODO This is just a temporary solution. Should be generalised. @@ -156,13 +156,13 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; - (void)setMinimumFractionDigits:(CPUInteger)aNumber { - _minimumFractionalDigits = aNumber; + _minimumFractionDigits = aNumber; SET_NEEDS_NUMBER_HANDLER_UPDATE(); } - (void)setMaximumFractionDigits:(CPUInteger)aNumber { - _maximumFractionalDigits = aNumber; + _maximumFractionDigits = aNumber; SET_NEEDS_NUMBER_HANDLER_UPDATE(); } From dc0c63ccc359b80bc778a415bfe9023a6ca43c08 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sat, 4 Aug 2012 01:23:57 +0100 Subject: [PATCH 047/114] Extend `CPNumberFormatter` CPCoding support and fix rounding default. --- Foundation/CPNumberFormatter.j | 20 +++++++++++++++++--- Tests/Foundation/CPNumberFormatterTest.j | 23 +++++++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/Foundation/CPNumberFormatter.j b/Foundation/CPNumberFormatter.j index 1813fb7cd..361e81a5e 100644 --- a/Foundation/CPNumberFormatter.j +++ b/Foundation/CPNumberFormatter.j @@ -49,7 +49,7 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; @ingroup foundation @class CPNumberFormatter - CPNumberFormatter takes a numeric NSNumber value and formats it as text for + CPNumberFormatter takes a numeric CPNumber value and formats it as text for display. It also supports the converse, taking text and interpreting it as a CPNumber by configurable formatting rules. */ @@ -62,6 +62,8 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; CPUInteger _minimumFractionDigits @accessors(property=minimumFractionDigits); CPUInteger _maximumFractionDigits @accessors(property=maximumFractionDigits); + // Note that we do not implement the 10.0 style number formatter, but the 10.4+ formatter. Therefore + // we don't expose this through a `roundingBehavior` property. CPDecimalNumberHandler _numberHandler; } @@ -69,7 +71,7 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; { if (self = [super init]) { - _roundingMode = CPNumberFormatterRoundHalfUp; + _roundingMode = CPNumberFormatterRoundHalfEven; _minimumFractionDigits = 0; _maximumFractionDigits = 0; _groupingSeparator = @","; @@ -168,7 +170,11 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; @end -var CPNumberFormatterStyleKey = "CPNumberFormatterStyleKey"; +var CPNumberFormatterStyleKey = "CPNumberFormatterStyleKey", + CPNumberFormatterMinimumFractionDigitsKey = @"CPNumberFormatterMinimumFractionDigitsKey", + CPNumberFormatterMaximumFractionDigitsKey = @"CPNumberFormatterMaximumFractionDigitsKey", + CPNumberFormatterRoundingModeKey = @"CPNumberFormatterRoundingModeKey", + CPNumberFormatterGroupingSeparatorKey = @"CPNumberFormatterGroupingSeparatorKey"; @implementation CPNumberFormatter (CPCoding) @@ -179,6 +185,10 @@ var CPNumberFormatterStyleKey = "CPNumberFormatterStyleKey"; if (self) { _numberStyle = [aCoder decodeIntForKey:CPNumberFormatterStyleKey]; + _minimumFractionDigits = [aCoder decodeIntForKey:CPNumberFormatterMinimumFractionDigitsKey]; + _maximumFractionDigits = [aCoder decodeIntForKey:CPNumberFormatterMaximumFractionDigitsKey]; + _roundingMode = [aCoder decodeIntForKey:CPNumberFormatterRoundingModeKey]; + _groupingSeparator = [aCoder decodeObjectForKey:CPNumberFormatterGroupingSeparatorKey]; } return self; @@ -189,6 +199,10 @@ var CPNumberFormatterStyleKey = "CPNumberFormatterStyleKey"; [super encodeWithCoder:aCoder]; [aCoder encodeInt:_numberStyle forKey:CPNumberFormatterStyleKey]; + [aCoder encodeInt:_minimumFractionDigits forKey:CPNumberFormatterMinimumFractionDigitsKey]; + [aCoder encodeInt:_maximumFractionDigits forKey:CPNumberFormatterMaximumFractionDigitsKey]; + [aCoder encodeInt:_roundingMode forKey:CPNumberFormatterRoundingModeKey]; + [aCoder encodeObject:_groupingSeparator forKey:CPNumberFormatterGroupingSeparatorKey]; } @end diff --git a/Tests/Foundation/CPNumberFormatterTest.j b/Tests/Foundation/CPNumberFormatterTest.j index 2f2bb8a2e..df08fbb66 100644 --- a/Tests/Foundation/CPNumberFormatterTest.j +++ b/Tests/Foundation/CPNumberFormatterTest.j @@ -91,4 +91,27 @@ [self assert:@"1.100" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1.1"]]]; [self assert:@"0.4467" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.4467"]]]; } + +- (void)testArchiving +{ + var numberFormatter = [CPNumberFormatter new], + archived, + unarchived; + + [numberFormatter setNumberStyle:CPNumberFormatterDecimalStyle]; + [numberFormatter setMinimumFractionDigits:2]; + [numberFormatter setMaximumFractionDigits:3]; + [numberFormatter setRoundingMode:CPNumberFormatterRoundHalfUp]; + [numberFormatter setGroupingSeparator:@" "]; + + archived = [CPKeyedArchiver archivedDataWithRootObject:numberFormatter], + unarchived = [CPKeyedUnarchiver unarchiveObjectWithData:archived]; + + [self assert:CPNumberFormatterDecimalStyle equals:[unarchived numberStyle] message:@"numberStyle"]; + [self assert:2 equals:[unarchived minimumFractionDigits] message:@"minimumFractionDigits"]; + [self assert:3 equals:[unarchived maximumFractionDigits] message:@"maximumFractionDigits"]; + [self assert:CPNumberFormatterRoundHalfUp equals:[unarchived roundingMode] message:@"roundingMode"]; + [self assert:@" " equals:[unarchived groupingSeparator] message:@"groupingSeparator"]; +} + @end From 3a2bf36359d6d1a076d362e1d9446c5cd99dafba Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sat, 4 Aug 2012 13:37:42 +0100 Subject: [PATCH 048/114] Very basic `CPNumberFormatter`currency style. --- Foundation/CPNumberFormatter.j | 49 ++++++++++++++++++++++-- Tests/Foundation/CPDecimalNumberTest.j | 9 ++++- Tests/Foundation/CPNumberFormatterTest.j | 33 +++++++++++++++- 3 files changed, 83 insertions(+), 8 deletions(-) diff --git a/Foundation/CPNumberFormatter.j b/Foundation/CPNumberFormatter.j index 361e81a5e..8e8de427c 100644 --- a/Foundation/CPNumberFormatter.j +++ b/Foundation/CPNumberFormatter.j @@ -61,6 +61,8 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; CPNumberFormatterRoundingMode _roundingMode @accessors(property=roundingMode); CPUInteger _minimumFractionDigits @accessors(property=minimumFractionDigits); CPUInteger _maximumFractionDigits @accessors(property=maximumFractionDigits); + CPString _currencyCode @accessors(property=currencyCode); + CPString _currencySymbol @accessors(property=currencySymbol); // Note that we do not implement the 10.0 style number formatter, but the 10.4+ formatter. Therefore // we don't expose this through a `roundingBehavior` property. @@ -75,6 +77,10 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; _minimumFractionDigits = 0; _maximumFractionDigits = 0; _groupingSeparator = @","; + + // FIXME Add locale support. + _currencyCode = @"USD"; + _currencySymbol = @"$"; } return self; @@ -87,6 +93,7 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; // TODO Add locale support. switch (_numberStyle) { + case CPNumberFormatterCurrencyStyle: case CPNumberFormatterDecimalStyle: UPDATE_NUMBER_HANDLER_IF_NECESSARY(); @@ -113,10 +120,19 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; } } + var string = preFraction; if (fraction) - return preFraction + "." + fraction; - else - return preFraction; + string += "." + fraction; + + if (_numberStyle === CPNumberFormatterCurrencyStyle) + { + if (_currencySymbol) + string = _currencySymbol + string; + else + string = _currencyCode + string; + } + + return string; default: return [number description]; } @@ -150,6 +166,25 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; return YES; } +- (void)setNumberStyle:(CPNumberFormatterStyle)aStyle +{ + _numberStyle = aStyle; + + switch (aStyle) + { + case CPNumberFormatterDecimalStyle: + _minimumFractionDigits = 0; + _maximumFractionDigits = 3; + SET_NEEDS_NUMBER_HANDLER_UPDATE(); + break; + case CPNumberFormatterCurrencyStyle: + _minimumFractionDigits = 2; + _maximumFractionDigits = 2; + SET_NEEDS_NUMBER_HANDLER_UPDATE(); + break; + } +} + - (void)setRoundingMode:(CPNumberFormatterRoundingMode)aRoundingMode { _roundingMode = aRoundingMode; @@ -174,7 +209,9 @@ var CPNumberFormatterStyleKey = "CPNumberFormatterStyleKey", CPNumberFormatterMinimumFractionDigitsKey = @"CPNumberFormatterMinimumFractionDigitsKey", CPNumberFormatterMaximumFractionDigitsKey = @"CPNumberFormatterMaximumFractionDigitsKey", CPNumberFormatterRoundingModeKey = @"CPNumberFormatterRoundingModeKey", - CPNumberFormatterGroupingSeparatorKey = @"CPNumberFormatterGroupingSeparatorKey"; + CPNumberFormatterGroupingSeparatorKey = @"CPNumberFormatterGroupingSeparatorKey", + CPNumberFormatterCurrencyCodeKey = @"CPNumberFormatterCurrencyCodeKey", + CPNumberFormatterCurrencySymbolKey = @"CPNumberFormatterCurrencySymbolKey"; @implementation CPNumberFormatter (CPCoding) @@ -189,6 +226,8 @@ var CPNumberFormatterStyleKey = "CPNumberFormatterStyleKey", _maximumFractionDigits = [aCoder decodeIntForKey:CPNumberFormatterMaximumFractionDigitsKey]; _roundingMode = [aCoder decodeIntForKey:CPNumberFormatterRoundingModeKey]; _groupingSeparator = [aCoder decodeObjectForKey:CPNumberFormatterGroupingSeparatorKey]; + _currencyCode = [aCoder decodeObjectForKey:CPNumberFormatterCurrencyCodeKey]; + _currencySymbol = [aCoder decodeObjectForKey:CPNumberFormatterCurrencySymbolKey]; } return self; @@ -203,6 +242,8 @@ var CPNumberFormatterStyleKey = "CPNumberFormatterStyleKey", [aCoder encodeInt:_maximumFractionDigits forKey:CPNumberFormatterMaximumFractionDigitsKey]; [aCoder encodeInt:_roundingMode forKey:CPNumberFormatterRoundingModeKey]; [aCoder encodeObject:_groupingSeparator forKey:CPNumberFormatterGroupingSeparatorKey]; + [aCoder encodeObject:_currencyCode forKey:CPNumberFormatterCurrencyCodeKey]; + [aCoder encodeObject:_currencySymbol forKey:CPNumberFormatterCurrencySymbolKey]; } @end diff --git a/Tests/Foundation/CPDecimalNumberTest.j b/Tests/Foundation/CPDecimalNumberTest.j index 4fa59c474..e74788065 100644 --- a/Tests/Foundation/CPDecimalNumberTest.j +++ b/Tests/Foundation/CPDecimalNumberTest.j @@ -130,7 +130,7 @@ // misc - // decimalValue <- if it hasnt been working so far, your would know. + // decimalValue <- if it hasnt been working so far, you would know. dcmn = [CPDecimalNumber zero]; dcm = [dcmn boolValue]; @@ -326,7 +326,7 @@ [self assert:1000 equals:[res doubleValue] message:"220000/220 == 1000"]; } -- (void)testMutliply +- (void)testMultiply { var dcmn1 = [CPDecimalNumber decimalNumberWithString:@"17"], @@ -487,6 +487,11 @@ [self assert:[1] equals:d1._mantissa message:"decimalNumberByRoundingAccordingToBehavior: - mantissa"]; [self assert:NO equals:d1._isNegative message:"decimalNumberByRoundingAccordingToBehavior: - sign"]; [self assert:NO equals:d1._isNaN message:"decimalNumberByRoundingAccordingToBehavior: - NaN is incorrectly set"]; + + h = [CPDecimalNumberHandler decimalNumberHandlerWithRoundingMode:CPRoundBankers scale:2 raiseOnExactness:NO raiseOnOverflow:YES raiseOnUnderflow:YES raiseOnDivideByZero:YES], + + [self assert:@"0.02" equals:[[[CPDecimalNumber decimalNumberWithString:@"0.015"] decimalNumberByRoundingAccordingToBehavior:h] description]]; + [self assert:@"0" equals:[[[CPDecimalNumber decimalNumberWithString:@"0.005"] decimalNumberByRoundingAccordingToBehavior:h] description]]; } - (void)testCompare diff --git a/Tests/Foundation/CPNumberFormatterTest.j b/Tests/Foundation/CPNumberFormatterTest.j index df08fbb66..b45e4c7da 100644 --- a/Tests/Foundation/CPNumberFormatterTest.j +++ b/Tests/Foundation/CPNumberFormatterTest.j @@ -101,7 +101,7 @@ [numberFormatter setNumberStyle:CPNumberFormatterDecimalStyle]; [numberFormatter setMinimumFractionDigits:2]; [numberFormatter setMaximumFractionDigits:3]; - [numberFormatter setRoundingMode:CPNumberFormatterRoundHalfUp]; + [numberFormatter setRoundingMode:CPNumberFormatterRoundHalfDown]; [numberFormatter setGroupingSeparator:@" "]; archived = [CPKeyedArchiver archivedDataWithRootObject:numberFormatter], @@ -110,8 +110,37 @@ [self assert:CPNumberFormatterDecimalStyle equals:[unarchived numberStyle] message:@"numberStyle"]; [self assert:2 equals:[unarchived minimumFractionDigits] message:@"minimumFractionDigits"]; [self assert:3 equals:[unarchived maximumFractionDigits] message:@"maximumFractionDigits"]; - [self assert:CPNumberFormatterRoundHalfUp equals:[unarchived roundingMode] message:@"roundingMode"]; + [self assert:CPNumberFormatterRoundHalfDown equals:[unarchived roundingMode] message:@"roundingMode"]; [self assert:@" " equals:[unarchived groupingSeparator] message:@"groupingSeparator"]; } +- (void)testCurrencyStyle +{ + var numberFormatter = [CPNumberFormatter new]; + [numberFormatter setNumberStyle:CPNumberFormatterCurrencyStyle]; + [numberFormatter setCurrencyCode:@"USD"]; + + [self assert:@"$1.00" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1"]]]; + [self assert:@"$12.00" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"12"]]]; + [self assert:@"$12.10" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"12.1"]]]; + [self assert:@"$12.10" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"12.10"]]]; + [self assert:@"$0.10" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.1"]]]; + [self assert:@"$0.10" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.10"]]]; + [self assert:@"$0.00" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.005"]]]; + [self assert:@"$0.02" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.015"]]]; + + + [numberFormatter setCurrencyCode:@"SEK"]; + [numberFormatter setCurrencySymbol:@""]; + + [self assert:@"SEK1.00" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1"]]]; + [self assert:@"SEK12.00" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"12"]]]; + [self assert:@"SEK12.10" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"12.1"]]]; + [self assert:@"SEK12.10" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"12.10"]]]; + [self assert:@"SEK0.10" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.1"]]]; + [self assert:@"SEK0.10" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.10"]]]; + [self assert:@"SEK0.00" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.005"]]]; + [self assert:@"SEK0.02" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.015"]]]; +} + @end From 31ea0da526f17f4081384e8ad570e324844b3de3 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sat, 4 Aug 2012 13:45:45 +0100 Subject: [PATCH 049/114] `CPNumberFormatter generatesDecimalNumbers` support, enabled by default. --- Foundation/CPNumberFormatter.j | 15 +++++++++++---- Tests/Foundation/CPNumberFormatterTest.j | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/Foundation/CPNumberFormatter.j b/Foundation/CPNumberFormatter.j index 8e8de427c..1fafb8969 100644 --- a/Foundation/CPNumberFormatter.j +++ b/Foundation/CPNumberFormatter.j @@ -63,6 +63,7 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; CPUInteger _maximumFractionDigits @accessors(property=maximumFractionDigits); CPString _currencyCode @accessors(property=currencyCode); CPString _currencySymbol @accessors(property=currencySymbol); + BOOL _generatesDecimalNumbers @accessors(property=generatesDecimalNumbers); // Note that we do not implement the 10.0 style number formatter, but the 10.4+ formatter. Therefore // we don't expose this through a `roundingBehavior` property. @@ -77,6 +78,7 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; _minimumFractionDigits = 0; _maximumFractionDigits = 0; _groupingSeparator = @","; + _generatesDecimalNumbers = YES; // FIXME Add locale support. _currencyCode = @"USD"; @@ -138,10 +140,12 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; } } -- (CPNumber)numberFromString:(CPString)string +- (CPNumber)numberFromString:(CPString)aString { - // TODO - return parseFloat(string); + if (_generatesDecimalNumbers) + return [CPDecimalNumber decimalNumberWithString:aString]; + else + return parseFloat(aString); } - (CPString)stringForObjectValue:(id)anObject @@ -211,7 +215,8 @@ var CPNumberFormatterStyleKey = "CPNumberFormatterStyleKey", CPNumberFormatterRoundingModeKey = @"CPNumberFormatterRoundingModeKey", CPNumberFormatterGroupingSeparatorKey = @"CPNumberFormatterGroupingSeparatorKey", CPNumberFormatterCurrencyCodeKey = @"CPNumberFormatterCurrencyCodeKey", - CPNumberFormatterCurrencySymbolKey = @"CPNumberFormatterCurrencySymbolKey"; + CPNumberFormatterCurrencySymbolKey = @"CPNumberFormatterCurrencySymbolKey", + CPNumberFormatterGeneratesDecimalNumbers = @"CPNumberFormatterGeneratesDecimalNumbers"; @implementation CPNumberFormatter (CPCoding) @@ -228,6 +233,7 @@ var CPNumberFormatterStyleKey = "CPNumberFormatterStyleKey", _groupingSeparator = [aCoder decodeObjectForKey:CPNumberFormatterGroupingSeparatorKey]; _currencyCode = [aCoder decodeObjectForKey:CPNumberFormatterCurrencyCodeKey]; _currencySymbol = [aCoder decodeObjectForKey:CPNumberFormatterCurrencySymbolKey]; + _generatesDecimalNumbers = [aCoder decodeBoolForKey:CPNumberFormatterGeneratesDecimalNumbers]; } return self; @@ -244,6 +250,7 @@ var CPNumberFormatterStyleKey = "CPNumberFormatterStyleKey", [aCoder encodeObject:_groupingSeparator forKey:CPNumberFormatterGroupingSeparatorKey]; [aCoder encodeObject:_currencyCode forKey:CPNumberFormatterCurrencyCodeKey]; [aCoder encodeObject:_currencySymbol forKey:CPNumberFormatterCurrencySymbolKey]; + [aCoder encodeBool:_generatesDecimalNumbers forKey:CPNumberFormatterGeneratesDecimalNumbers]; } @end diff --git a/Tests/Foundation/CPNumberFormatterTest.j b/Tests/Foundation/CPNumberFormatterTest.j index b45e4c7da..13775a26e 100644 --- a/Tests/Foundation/CPNumberFormatterTest.j +++ b/Tests/Foundation/CPNumberFormatterTest.j @@ -143,4 +143,20 @@ [self assert:@"SEK0.02" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.015"]]]; } +- (void)testSetGeneratesDecimalNumbers_ +{ + var numberFormatter = [CPNumberFormatter new]; + [numberFormatter setNumberStyle:CPNumberFormatterDecimalStyle]; + + [self assertTrue:[numberFormatter generatesDecimalNumbers]]; + var generated = [numberFormatter numberFromString:@"1.23456"]; + [self assert:CPDecimalNumber equals:[generated class]]; + [self assert:[CPDecimalNumber decimalNumberWithString:@"1.23456"] equals:generated]; + + [numberFormatter setGeneratesDecimalNumbers:NO]; + generated = [numberFormatter numberFromString:@"1.23456"]; + [self assertFalse:[generated isKindOfClass:CPDecimalNumber]]; + [self assert:1.23456 equals:generated]; +} + @end From 4d8758f755689262954e5294702f78a9859cc437 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sat, 4 Aug 2012 13:58:29 +0100 Subject: [PATCH 050/114] Fix CPTextFieldTest. --- Tests/AppKit/CPTextFieldTest.j | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/AppKit/CPTextFieldTest.j b/Tests/AppKit/CPTextFieldTest.j index 6570c63b5..19dc3c539 100644 --- a/Tests/AppKit/CPTextFieldTest.j +++ b/Tests/AppKit/CPTextFieldTest.j @@ -32,7 +32,7 @@ [control setFormatter:numberFormatter]; [control setStringValue:@"12.3456"]; - [self assert:[CPNumber class] equals:[[control objectValue] class] message:@"object should be a number"]; + [self assertTrue:[[control objectValue] isKindOfClass:CPNumber] message:@"object should be a number"]; // Note that the control stores the value with a different precision than the maximum fraction // digits of the number formatter. It's a little surprising but this makes the implementation easier // and Cocoa does it too. @@ -63,4 +63,4 @@ return self; } -@end \ No newline at end of file +@end From 9f1a8fa7a2fc563de9dc6e5058f6f340954fc1a4 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 4 Aug 2012 23:04:40 +0800 Subject: [PATCH 051/114] enable '.003' or '-.003' style number in CPDecimalMakeWithString function and add new test cases --- Foundation/CPDecimal.j | 3 ++- Tests/Foundation/CPDecimalNumberTest.j | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Foundation/CPDecimal.j b/Foundation/CPDecimal.j index ec06deea7..92382d1ce 100644 --- a/Foundation/CPDecimal.j +++ b/Foundation/CPDecimal.j @@ -115,7 +115,8 @@ function CPDecimalMakeWithString(string, locale) // Note: this doesn't accept .01 for example, should it? // If yes simply add '?' after integer part group, i.e. ([+\-]?)((?:0|[1-9]\d*)?) - var matches = string.match(/^([+\-]?)((?:0|[1-9]\d*))(?:\.(\d*))?(?:[eE]([+\-]?)(\d+))?$/); + // Note: now it accept .01 style. + var matches = string.match(/^([+\-]?)((?:0|[1-9]\d*)?)(?:\.(\d*))?(?:[eE]([+\-]?)(\d+))?$/); if (!matches) return CPDecimalMakeNaN(); diff --git a/Tests/Foundation/CPDecimalNumberTest.j b/Tests/Foundation/CPDecimalNumberTest.j index e74788065..471ed91dd 100644 --- a/Tests/Foundation/CPDecimalNumberTest.j +++ b/Tests/Foundation/CPDecimalNumberTest.j @@ -522,6 +522,10 @@ [self assert:"123456789123456789123456789000000000000000" equals:[dcmn stringValue] message:"stringValue: - large number"]; dcmn = [CPDecimalNumber decimalNumberWithString:@"82346.2341144"]; [self assert:"82346.2341144" equals:[dcmn descriptionWithLocale:nil] message:"descriptionWithLocale: - large number"]; + dcmn = [CPDecimalNumber decimalNumberWithString:@".125"]; + [self assert:"0.125" equals:[dcmn descriptionWithLocale:nil] message:"stringValue: - no integral part number"]; + dcmn = [CPDecimalNumber decimalNumberWithString:@"-.003"]; + [self assert:"-0.003" equals:[dcmn descriptionWithLocale:nil] message:"stringValue: - no integral part negative number"]; } - (void)testEncoding From 24ef4d41d2f68ccddd7cd5f28a6907424e038c5c Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 4 Aug 2012 13:20:35 -0400 Subject: [PATCH 052/114] -capp_lint -enable close buttons based on context -remove stuff that doesn't work --- Tests/Manual/AttachedSheet2/AppController.j | 20 +- .../AttachedSheet2/Resources/Window.cib | 2 +- .../AttachedSheet2/Resources/Window.xib | 208 +----- .../AttachedSheet2/SheetWindowController.j | 630 +++++++++--------- 4 files changed, 360 insertions(+), 500 deletions(-) diff --git a/Tests/Manual/AttachedSheet2/AppController.j b/Tests/Manual/AttachedSheet2/AppController.j index 0c330312e..580cc5eac 100644 --- a/Tests/Manual/AttachedSheet2/AppController.j +++ b/Tests/Manual/AttachedSheet2/AppController.j @@ -1,41 +1,25 @@ -/* - * AppController.j - * TestSheet - * - * Created by You on April 14, 2012. - * Copyright 2012, Your Company All rights reserved. - */ - @import @import "SheetWindowController.j" @implementation AppController : CPObject { - SheetController _sheetController; + SheetController _sheetController; } - (void)applicationDidFinishLaunching:(CPNotification)aNotification { - // This is called when the application is done loading. } - (void)awakeFromCib { - // This is called when the cib is done loading. - // You can implement this method on any object instantiated from a Cib. - // It's a useful hook for setting up current UI values, and other things. - - // In this case, we want the window from Cib to become our full browser window - //[theWindow setFullPlatformWindow:YES]; - _sheetController = [ [SheetWindowController alloc] initWithWindowCibName:@"Window"]; [self newDocument:self]; } - (void)newDocument:(id)sender { - [_sheetController newWindow:self]; + [_sheetController newWindow:self]; } @end diff --git a/Tests/Manual/AttachedSheet2/Resources/Window.cib b/Tests/Manual/AttachedSheet2/Resources/Window.cib index 8470daf98..2dd594779 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;30E;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;D;K;6;CP$UIDd;2;38E;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;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;43E;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;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;54E;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;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;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;63E;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;65E;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;2;69E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;71E;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;41E;D;K;6;CP$UIDd;2;43E;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;43E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;71E;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;72E;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;73E;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;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;50E;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;63E;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;54E;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;52E;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;64E;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;66E;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;67E;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;55E;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;60E;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;62E;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;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;41E;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;41E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;70E;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;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;69E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;70E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;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;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;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;90E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;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;29E;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;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;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;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;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;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;58E;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;29E;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;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;40E;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;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;100E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;101E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;102E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;43E;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;42E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;104E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;104E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;105E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;107E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;102E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;117E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;118E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;119E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;120E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;121E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;122E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;123E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;124E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;125E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;128E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;24;CPButtonKeyEquivalentKeyD;K;6;CP$UIDd;3;129E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;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;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;132E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;133E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;134E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;135E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;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;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;140E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;141E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;137E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;142E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;56E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;143E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;144E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;6;$afontD;K;6;CP$UIDd;3;146E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;115E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;147E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;148E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;149E;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;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;103E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;115E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;150E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;151E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;152E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;153E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;154E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;155E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;158E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;159E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;155E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;160E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;161E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;162E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;163E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;E;D;K;6;$classD;K;6;CP$UIDd;2;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;165E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;166E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;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;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;169E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;170E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;108E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;114E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;171E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;172E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;137E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;173E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;174E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;137E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;175E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;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;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;176E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;177E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;178E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;106E;K;6;$afontD;K;6;CP$UIDd;3;180E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;181E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;182E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;103E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;183E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;103E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;184E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;185E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;43E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;178E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;186E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;115E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;147E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;187E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;149E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;147E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;147E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;147E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;189E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;114E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;115E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;155E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;155E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;156E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;158E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;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;_titledMaskButtonS;17;_windowTypeMatrixS;6;windowS;21;initialFirstResponderS;20;takeDoubleValueFrom:S;14;newModalSheet:S;10;newWindow:S;9;newSheet:S;15;newModalWindow:S;14;newAlertSheet:S;19;newColorPanelSheet:S;18;newOpenPanelSheet:S;18;newSavePanelSheet:S;13;CPApplicationS;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{71, -112}, {455, 523}}d;2;15S;6;Windowd;1;0S;20;{{0, 0}, {455, 523}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;57E;E;E;S;6;normalS;21;{{18, 18}, {138, 24}}S;19;{{0, 0}, {138, 24}}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;112E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;191E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;190E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;147E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;E;d;1;2d;1;4F;S;21;{{18, 50}, {138, 24}}S;12;Modal WindowS;21;{{18, 82}, {138, 24}}S;5;SheetS;22;{{18, 114}, {138, 24}}S;11;Modal SheetS;22;{{18, 146}, {138, 24}}S;11;Alert SheetS;22;{{365, 481}, {68, 24}}S;18;{{0, 0}, {68, 24}}d;1;9S;5;CloseS;4;CgA=S;23;{{218, 481}, {135, 24}}S;19;{{0, 0}, {135, 24}}S;16;Close Parent TooS;22;{{18, 481}, {110, 24}}S;19;{{0, 0}, {110, 24}}S;12;Chain SheetsS;22;{{12, 299}, {329, 18}}S;19;{{0, 0}, {329, 18}}S;9;check-boxD;K;6;$classD;K;6;CP$UIDd;3;112E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;191E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;190E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;E;S;25;orderOut: after endSheet:S;22;{{12, 368}, {329, 18}}S;36;Shade Window View of Non-CIB WindowsS;22;{{24, 323}, {368, 26}}S;19;{{0, 0}, {368, 26}}S;9;textfieldD;K;6;$classD;K;6;CP$UIDd;3;112E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;191E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;192E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;E;T;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;3072S;22;{{18, 208}, {138, 24}}S;16;Open Panel SheetS;22;{{18, 176}, {138, 24}}S;17;Color Panel SheetS;23;{{193, 139}, {174, 18}}S;19;{{0, 0}, {174, 18}}S;8;selectedd;1;1S;18;CPTitledWindowMaskS;23;{{193, 159}, {174, 18}}S;20;CPClosableWindowMaskS;23;{{194, 20}, {261, 113}}S;20;{{0, 0}, {261, 113}}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;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;E;E;S;23;{{192, 179}, {210, 18}}S;19;{{0, 0}, {210, 18}}S;26;CPMiniaturizableWindowMaskS;23;{{192, 199}, {180, 18}}S;19;{{0, 0}, {180, 18}}S;21;CPResizableWindowMaskS;22;{{18, 240}, {138, 24}}S;16;Save Panel SheetS;22;{{12, 388}, {329, 18}}S;36;Shade Content View of Non-CIB WindowS;22;{{12, 408}, {329, 18}}S;44;Shade Parent Window on windowWillBeginSheet:S;22;{{119, 446}, {96, 21}}S;18;{{0, 0}, {96, 21}}d;2;45S;6;sliderD;K;6;$classD;K;6;CP$UIDd;3;112E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;199E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;190E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;116E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;116E;E;d;2;50d;2;68d;3;100S;23;{{215, 436}, {104, 29}}S;19;{{0, 0}, {104, 29}}S;19;bezeled+placeholderS;0;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;188E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;200E;E;d;2;12S;17;Arial, sans-serifd;2;10D;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;62E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;157E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;201E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;201E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;202E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;203E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;204E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;205E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;157E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;206E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;207E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;208E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;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;211E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;201E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;202E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;203E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;204E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;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;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;207E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;208E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;213E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;214E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;201E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;202E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;203E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;204E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;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;116E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;207E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;208E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;115E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;216E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;201E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;202E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;203E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;204E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;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;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;207E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;208E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;3;193E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;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;201E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;202E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;203E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;204E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;111E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;114E;K;16;$aimage-positionD;K;6;CP$UIDd;3;114E;K;6;$afontD;K;6;CP$UIDd;3;139E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;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;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;114E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;103E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;207E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;208E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;210E;E;S;9;HelveticaD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;157E;E;E;S;19;{{0, 0}, {261, 21}}d;2;18D;K;6;$classD;K;6;CP$UIDd;3;188E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;221E;E;S;5;radioS;17;selected+borderedS;10;CIB Windowf;3;0.5f;4;0.05D;K;10;$classnameS;12;CPRadioGroupK;8;$classesA;S;12;CPRadioGroupS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;209E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;222E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;194E;E;S;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;CPDocModalWindowMaskD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;223E;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;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;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;30E;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;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;36E;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;1;0E;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;48E;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;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;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;63E;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;65E;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;38E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;65E;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;66E;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;67E;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;68E;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;69E;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;70E;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;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;53E;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;59E;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;52E;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;57E;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;58E;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;56E;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;48E;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;50E;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;38E;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;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;64E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;81E;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;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;64E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;82E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;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;83E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;42E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;84E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;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;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;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;86E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;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;87E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;88E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;37E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;89E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;90E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;91E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;92E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;93E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;40E;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;39E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;95E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;95E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;96E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;98E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;99E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;6;$afontD;K;6;CP$UIDd;3;104E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;2;93E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;109E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;94E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;111E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;99E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;6;$afontD;K;6;CP$UIDd;3;104E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;112E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;109E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;94E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;113E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;99E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;6;$afontD;K;6;CP$UIDd;3;104E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;114E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;109E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;94E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;115E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;99E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;6;$afontD;K;6;CP$UIDd;3;104E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;116E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;109E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;94E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;117E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;99E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;6;$afontD;K;6;CP$UIDd;3;104E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;118E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;109E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;94E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;119E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;120E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;121E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;122E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;124E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;125E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;120E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;121E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;122E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;124E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;127E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;39E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;129E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;130E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;131E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;132E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;121E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;122E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;124E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;133E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;134E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;135E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;121E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;122E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;124E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;136E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;137E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;138E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;121E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;139E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;140E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;141E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;142E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;6;$afontD;K;6;CP$UIDd;3;143E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;110E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;145E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;108E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;108E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;108E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;147E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;94E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;106E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;148E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;138E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;121E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;149E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;150E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;138E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;121E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;151E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;152E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;138E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;121E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;153E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;154E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;155E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;6;$afontD;K;6;CP$UIDd;3;104E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;157E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;109E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;94E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;158E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;159E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;6;$afontD;K;6;CP$UIDd;3;104E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;160E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;109E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;94E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonKeyEquivalentKeyD;K;6;CP$UIDd;3;161E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;162E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;163E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;6;$afontD;K;6;CP$UIDd;3;104E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;164E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;109E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;94E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;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;62E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;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;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;167E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;168E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;170E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;171E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;2;94E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;172E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;2;94E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;173E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;174E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;167E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;142E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;175E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;105E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;110E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;107E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;145E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;110E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;110E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;110E;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;106E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;120E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;120E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;177E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;121E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;122E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;124E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;125E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;107E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;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;_titledMaskButtonS;17;_windowTypeMatrixS;6;windowS;21;initialFirstResponderS;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;CPWindowS;23;{{71, -14}, {468, 425}}d;2;15S;6;Windowd;1;0S;20;{{0, 0}, {468, 425}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;43E;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;46E;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;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;55E;E;E;S;6;normalS;21;{{18, 18}, {138, 24}}S;19;{{0, 0}, {138, 24}}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;103E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;178E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;179E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;110E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;108E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;110E;E;d;1;2d;1;4S;0;F;d;2;14T;S;21;{{18, 50}, {138, 24}}S;12;Modal WindowS;21;{{18, 82}, {138, 24}}S;5;SheetS;22;{{18, 114}, {138, 24}}S;11;Modal SheetS;22;{{18, 146}, {138, 24}}S;11;Alert SheetS;23;{{193, 139}, {174, 18}}S;19;{{0, 0}, {174, 18}}S;9;check-boxS;8;selectedD;K;6;$classD;K;6;CP$UIDd;3;103E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;178E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;179E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;108E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;108E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;110E;E;d;1;1S;18;CPTitledWindowMaskS;23;{{193, 159}, {174, 18}}S;20;CPClosableWindowMaskS;23;{{194, 20}, {261, 113}}S;20;{{0, 0}, {261, 113}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;E;E;S;23;{{192, 179}, {210, 18}}S;19;{{0, 0}, {210, 18}}S;26;CPMiniaturizableWindowMaskS;23;{{192, 199}, {180, 18}}S;19;{{0, 0}, {180, 18}}S;21;CPResizableWindowMaskS;22;{{18, 221}, {329, 18}}S;19;{{0, 0}, {329, 18}}S;25;orderOut: after endSheet:S;22;{{30, 246}, {362, 26}}S;19;{{0, 0}, {362, 26}}S;9;textfieldD;K;6;$classD;K;6;CP$UIDd;3;103E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;178E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;186E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;108E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;108E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;110E;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;146E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;187E;E;S;22;{{18, 277}, {329, 18}}S;36;Shade Window View of Non-CIB WindowsS;22;{{18, 297}, {329, 18}}S;36;Shade Content View of Non-CIB WindowS;22;{{18, 317}, {329, 18}}S;44;Shade Parent Window on windowWillBeginSheet:S;22;{{18, 383}, {110, 24}}S;19;{{0, 0}, {110, 24}}d;1;9S;12;Chain SheetsS;22;{{385, 383}, {68, 24}}S;18;{{0, 0}, {68, 24}}S;5;CloseS;4;CgA=S;23;{{238, 383}, {135, 24}}S;19;{{0, 0}, {135, 24}}S;16;Close Parent TooS;22;{{116, 350}, {96, 21}}S;18;{{0, 0}, {96, 21}}d;2;45S;6;sliderD;K;6;$classD;K;6;CP$UIDd;3;103E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;188E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;177E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;108E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;108E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;108E;E;d;2;50d;2;68d;3;100S;23;{{228, 348}, {104, 29}}S;19;{{0, 0}, {104, 29}}S;19;bezeled+placeholderD;K;6;$classD;K;6;CP$UIDd;3;146E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;189E;E;d;2;12S;28;_CPFontSystemFacePlaceholderd;2;-1D;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;180E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;50E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;124E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;190E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;190E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;50E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;191E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;192E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;194E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;105E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;105E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;124E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;195E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;196E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;197E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;199E;E;D;K;6;$classD;K;6;CP$UIDd;3;180E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;50E;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;200E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;190E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;50E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;191E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;192E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;105E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;105E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;201E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;196E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;197E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;199E;E;D;K;6;$classD;K;6;CP$UIDd;3;180E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;50E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;202E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;203E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;190E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;50E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;191E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;192E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;105E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;105E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;204E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;196E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;197E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;199E;E;D;K;6;$classD;K;6;CP$UIDd;3;180E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;50E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;205E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;190E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;50E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;191E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;192E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;105E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;105E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;206E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;196E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;197E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;199E;E;D;K;6;$classD;K;6;CP$UIDd;3;180E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;50E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;207E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;208E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;190E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;50E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;191E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;192E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;102E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;105E;K;16;$aimage-positionD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;123E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;105E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;209E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;124E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;124E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;110E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;105E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;94E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;196E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;197E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;199E;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;124E;E;E;S;9;HelveticaD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;E;E;S;19;{{0, 0}, {261, 21}}d;2;18D;K;6;$classD;K;6;CP$UIDd;3;146E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;211E;E;S;5;radioS;17;selected+borderedS;10;CIB Windowf;3;0.5f;4;0.05D;K;10;$classnameS;12;CPRadioGroupK;8;$classesA;S;12;CPRadioGroupS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;198E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;212E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;181E;E;S;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;CPDocModalWindowMaskf;18;0.6862745098039216D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;94E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;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 51bd9e416..e6af978f5 100644 --- a/Tests/Manual/AttachedSheet2/Resources/Window.xib +++ b/Tests/Manual/AttachedSheet2/Resources/Window.xib @@ -42,7 +42,7 @@ 15 2 - {{71, 767}, {455, 523}} + {{71, 767}, {468, 425}} 1946157056 Window NSWindow @@ -55,7 +55,7 @@ 301 - {{119, 56}, {96, 21}} + {{116, 54}, {96, 21}} @@ -83,7 +83,7 @@ 301 - {{221, 61}, {96, 22}} + {{234, 51}, {96, 22}} @@ -122,9 +122,10 @@ 289 - {{361, 12}, {80, 32}} + {{381, 12}, {80, 32}} + _NS:9 YES @@ -145,7 +146,7 @@ 268 - {{14, 443}, {150, 32}} + {{14, 345}, {150, 32}} @@ -169,7 +170,7 @@ 268 - {{14, 411}, {150, 32}} + {{14, 313}, {150, 32}} @@ -193,7 +194,7 @@ 268 - {{14, 475}, {150, 32}} + {{14, 377}, {150, 32}} @@ -217,7 +218,7 @@ 268 - {{14, 379}, {150, 32}} + {{14, 281}, {150, 32}} @@ -241,7 +242,7 @@ 268 - {{14, 347}, {150, 32}} + {{14, 249}, {150, 32}} @@ -262,82 +263,10 @@ 25 - - - 268 - {{14, 317}, {150, 32}} - - - - _NS:9 - YES - - 67239424 - 134217728 - Color Panel Sheet - - _NS:9 - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{14, 285}, {150, 32}} - - - - _NS:9 - YES - - 67239424 - 134217728 - Open Panel Sheet - - _NS:9 - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{14, 253}, {150, 32}} - - - - _NS:9 - YES - - 67239424 - 134217728 - Save Panel Sheet - - _NS:9 - - -2038284033 - 129 - - - 200 - 25 - - 289 - {{214, 12}, {147, 32}} + {{234, 12}, {147, 32}} @@ -385,7 +314,7 @@ 268 - {{12, 206}, {329, 18}} + {{18, 186}, {329, 18}} @@ -416,7 +345,7 @@ 268 - {{12, 137}, {329, 18}} + {{18, 130}, {329, 18}} @@ -442,10 +371,10 @@ 268 - {{12, 117}, {329, 18}} + {{18, 110}, {329, 18}} - + _NS:9 YES @@ -468,9 +397,10 @@ 268 - {{12, 97}, {329, 18}} + {{18, 90}, {329, 18}} + _NS:9 YES @@ -493,10 +423,10 @@ 268 - {{193, 366}, {174, 18}} + {{193, 268}, {174, 18}} - + _NS:9 YES @@ -519,7 +449,7 @@ 268 - {{193, 346}, {174, 18}} + {{193, 248}, {174, 18}} @@ -545,7 +475,7 @@ 268 - {{194, 390}, {261, 113}} + {{194, 292}, {261, 113}} @@ -736,10 +666,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 - {{192, 326}, {210, 18}} + {{192, 228}, {210, 18}} - + _NS:9 YES @@ -762,10 +692,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 - {{192, 306}, {180, 18}} + {{192, 208}, {180, 18}} - + _NS:9 YES @@ -788,7 +718,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 - {{24, 174}, {368, 26}} + {{30, 154}, {368, 26}} @@ -816,7 +746,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - {455, 523} + {468, 425} @@ -987,30 +917,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 206 - - - newColorPanelSheet: - - - - 216 - - - - newOpenPanelSheet: - - - - 217 - - - - newSavePanelSheet: - - - - 218 - _shadeParentWindow @@ -1079,22 +985,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - - - - - - - - + + + + + + @@ -1390,45 +1293,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 207 - - - - - - - - 208 - - - - - 210 - - - - - - - - 211 - - - - - 213 - - - - - - - - 214 - - - 220 @@ -1487,12 +1351,6 @@ 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 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin diff --git a/Tests/Manual/AttachedSheet2/SheetWindowController.j b/Tests/Manual/AttachedSheet2/SheetWindowController.j index 203177eec..2c3cdb51e 100644 --- a/Tests/Manual/AttachedSheet2/SheetWindowController.j +++ b/Tests/Manual/AttachedSheet2/SheetWindowController.j @@ -1,125 +1,147 @@ @implementation SheetWindowController : CPWindowController { - @outlet CPButton _closeButton; - @outlet CPButton _sheetWindowHackCheckbox; - @outlet CPButton _altCloseButton; - @outlet CPButton _otherCloseButton; - @outlet CPButton _orderOutAfterCheckbox; - @outlet CPRadioGroup _windowTypeMatrix; - @outlet CPButton _titledMaskButton; - @outlet CPButton _closableMaskButton; - @outlet CPButton _miniaturizableMaskButton; - @outlet CPButton _resizableMaskButton; - @outlet CPButton _shadeWindowView; - @outlet CPButton _shadeContentView; - @outlet CPButton _shadeParentWindow; - - CPModalSession _modalSession; - CPWindow _parentWindow; - CPWindow _sheet; - int _returnCode; - CPColor _savedColor; + @outlet CPButton _closeButton; + @outlet CPButton _sheetWindowHackCheckbox; + @outlet CPButton _altCloseButton; + @outlet CPButton _otherCloseButton; + @outlet CPButton _orderOutAfterCheckbox; + @outlet CPRadioGroup _windowTypeMatrix; + @outlet CPButton _titledMaskButton; + @outlet CPButton _closableMaskButton; + @outlet CPButton _miniaturizableMaskButton; + @outlet CPButton _resizableMaskButton; + @outlet CPButton _shadeWindowView; + @outlet CPButton _shadeContentView; + @outlet CPButton _shadeParentWindow; + + CPModalSession _modalSession; + CPWindow _parentWindow; + CPWindow _sheet; + int _returnCode; + CPColor _savedColor; } --(void)initWithWindowCibName:(CPString)cibName +- (void)initWithWindowCibName:(CPString)cibName { - CPLog.debug("[%@ %@]", [self class], _cmd); - - self = [super initWithWindowCibName:cibName]; + CPLog.debug("[%@ %@]", [self class], _cmd); - _closeButton = nil; - - return self; -} + self = [super initWithWindowCibName:cibName]; --(void)positionWindow -{ - var keyWindow = [CPApp keyWindow]; - - var origin=CPPointMake(40,40); - if (keyWindow) - { - origin = ([keyWindow frame]).origin; - origin = CPPointMake(origin.x + 20, origin.y + 20); - } - - [[self window] setFrameOrigin:origin]; -} + _closeButton = nil; --(void)awakeFromCib -{ - CPLog.debug("[%@ %@]", [self class], _cmd); - - if (!_closeButton) - CPLog.fatal("_closeButton is not connected!"); - - [_closeButton setTarget:self]; - [_closeButton setAction:@selector(unsetAction:)]; - [_altCloseButton setTarget:self]; - [_altCloseButton setAction:@selector(unsetAction:)]; - [_otherCloseButton setTarget:self]; - [_otherCloseButton setAction:@selector(unsetAction:)]; -} - --(void)unsetAction:(id)sender -{ - CPLog.warn("No action set on this %@", [sender class]); -} - --(void)createCloseButton:(CPWindow)window -{ - _closeButton = [ [CPButton alloc] initWithFrame:CGRectMake(0,0,32,100)]; - [_closeButton setTitle:@"Close"]; - [_closeButton setButtonType:CPMomentaryPushInButton]; - [_closeButton setBezelStyle:CPBezelBorder]; - [_closeButton sizeToFit]; - [[window contentView] addSubview:_closeButton positioned:CPWindowAbove relativeTo:nil]; -} - --(SheetWindowController)initWithStyleMask:(int)styleMask debug:(int)debug -{ - CPLog.debug("[%@ %@] mask=%d radioGroup=%@", [self class], _cmd, styleMask, _windowTypeMatrix); - - if (styleMask < 0) - return [self initWithWindowCibName:@"Window"]; - - var window = [ [CPWindow alloc] - initWithContentRect:CGRectMake(0,0,400,300) - styleMask:styleMask]; - - if (debug & 1) - [window setBackgroundColor:[CPColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:0.5]]; - if (debug & 2) - [[window contentView] setBackgroundColor:[CPColor colorWithCalibratedRed:0.0 green:0.0 blue:1.0 alpha:0.5]]; - - if (self = [super initWithWindow:window]) - { - [self createCloseButton:window]; - } - return self; } --(SheetWindowController)allocController +- (void)positionWindow { - CPLog.debug("[%@ %@] groupClass=%@", [self class], _cmd, - [ [ [ [ [_windowTypeMatrix subviews] objectAtIndex:0] radioGroup] selectedRadio] tag]); + var keyWindow = [CPApp keyWindow], + origin = CPPointMake(40,40); - var type = 1; + if (keyWindow) + { + origin = ([keyWindow frame]).origin; + origin = CPPointMake(origin.x + 20, origin.y + 20); + } + + [[self window] setFrameOrigin:origin]; +} + +- (void)awakeFromCib +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + if (!_closeButton) + CPLog.fatal("_closeButton is not connected!"); + + [_closeButton setTarget:self]; + [_closeButton setAction:@selector(unsetAction:)]; + [_altCloseButton setTarget:self]; + [_altCloseButton setAction:@selector(unsetAction:)]; + [_otherCloseButton setTarget:self]; + [_otherCloseButton setAction:@selector(unsetAction:)]; +} + +- (void)unsetAction:(id)sender +{ + CPLog.warn("No action set on this %@", [sender class]); +} + +- (void)addButtons:(CPWindow)window +{ + var x = 10, + unsetAction = @selector(unsetAction:); + + _closeButton = [ [CPButton alloc] initWithFrame:CGRectMake(x,10,32,100)]; + [_closeButton setTitle:@"Close"]; + [_closeButton setButtonType:CPMomentaryPushInButton]; + [_closeButton setBezelStyle:CPBezelBorder]; + [_closeButton sizeToFit]; + [_closeButton setTarget:self]; + [_closeButton setAction:unsetAction]; + [[window contentView] addSubview:_closeButton positioned:CPWindowAbove relativeTo:nil]; + x += 10 + CGRectGetWidth([_closeButton frame]); + + _altCloseButton = [ [CPButton alloc] initWithFrame:CGRectMake(x, 10,32,100)]; + [_altCloseButton setTitle:@"Close Parent Too"]; + [_altCloseButton setButtonType:CPMomentaryPushInButton]; + [_altCloseButton setBezelStyle:CPBezelBorder]; + [_altCloseButton sizeToFit]; + [_altCloseButton setTarget:self]; + [_altCloseButton setAction:unsetAction]; + [[window contentView] addSubview:_altCloseButton positioned:CPWindowAbove relativeTo:nil]; + x += 10 + CGRectGetWidth([_altCloseButton frame]); + + _otherCloseButton = [ [CPButton alloc] initWithFrame:CGRectMake(x, 10,32,100)]; + [_otherCloseButton setTitle:@"Chain Sheets"]; + [_otherCloseButton setButtonType:CPMomentaryPushInButton]; + [_otherCloseButton setBezelStyle:CPBezelBorder]; + [_otherCloseButton sizeToFit]; + [_otherCloseButton setTarget:self]; + [_otherCloseButton setAction:unsetAction]; + [[window contentView] addSubview:_otherCloseButton positioned:CPWindowAbove relativeTo:nil]; +} + +- (SheetWindowController)initWithStyleMask:(int)styleMask debug:(int)debug +{ + CPLog.debug("[%@ %@] mask=%d radioGroup=%@", [self class], _cmd, styleMask, _windowTypeMatrix); + + if (styleMask < 0) + return [self initWithWindowCibName:@"Window"]; + + var window = [ [CPWindow alloc] initWithContentRect:CGRectMake(0,0,400,300) styleMask:styleMask]; + + if (debug & 1) + [window setBackgroundColor:[CPColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:0.5]]; + + if (debug & 2) + [[window contentView] setBackgroundColor:[CPColor colorWithCalibratedRed:0.0 green:0.0 blue:1.0 alpha:0.5]]; + + if (self = [super initWithWindow:window]) + [self addButtons:window]; + + return self; +} + +- (SheetWindowController)allocController +{ + CPLog.debug("[%@ %@] groupClass=%@", [self class], _cmd, + [ [ [ [ [_windowTypeMatrix subviews] objectAtIndex:0] radioGroup] selectedRadio] tag]); + + var type = 1; if (_windowTypeMatrix) type = [ [ [ [ [_windowTypeMatrix subviews] objectAtIndex:0] radioGroup] selectedRadio] tag]; - + var styleMask = 0; if ([_titledMaskButton state]) - styleMask |= CPTitledWindowMask; - - if ([_closableMaskButton state]) - styleMask |= CPClosableWindowMask; - - if ([_miniaturizableMaskButton state]) - styleMask |= CPMiniaturizableWindowMask; - + styleMask |= CPTitledWindowMask; + + if ([_closableMaskButton state]) + styleMask |= CPClosableWindowMask; + + if ([_miniaturizableMaskButton state]) + styleMask |= CPMiniaturizableWindowMask; + switch (type) { case 2: @@ -129,94 +151,114 @@ styleMask = CPBorderlessWindowMask; break; case 4: - styleMask |= CPTexturedBackgroundWindowMask; + styleMask |= CPTexturedBackgroundWindowMask; break; case 5: - styleMask = CPDocModalWindowMask; - break; + styleMask = CPDocModalWindowMask; + break; default: } - + if ([_resizableMaskButton state]) - styleMask |= CPResizableWindowMask; - - if (type==1) - styleMask = -1; - + styleMask |= CPResizableWindowMask; + + if (type == 1) + styleMask = -1; + var debug = 0; if ([_shadeWindowView state]) - debug |= 1; + debug |= 1; + if ([_shadeContentView state]) - debug |= 2; - + debug |= 2; + return [[SheetWindowController alloc] initWithStyleMask:styleMask debug:debug]; } --(SheetWindowController)allocWithPanel:(CPPanel)panel +- (SheetWindowController)allocWithPanel:(CPPanel)panel { - return [[SheetWindowController alloc] initWithWindow:panel]; + return [[SheetWindowController alloc] initWithWindow:panel]; +} + +- (void)disableUnlinkedButtons +{ + CPLog.debug("[%@ %@]", [self class], _cmd); + + var unsetSelector = @selector(unsetAction:); + if (_closeButton) + [_closeButton setEnabled:[_closeButton action] != unsetSelector]; + + if (_altCloseButton) + [_altCloseButton setEnabled:[_altCloseButton action] != unsetSelector]; + + if (_otherCloseButton) + [_otherCloseButton setEnabled:[_otherCloseButton action] != unsetSelector]; } // // Normal window // --(void)newDocument:(id)sender +- (void)newDocument:(id)sender { - [self newWindow:sender]; + [self newWindow:sender]; } --(void)newWindow:(id)sender +- (void)newWindow:(id)sender { - [[self allocController] runNormalWindow]; + [[self allocController] runNormalWindow]; } --(void)runNormalWindow +- (void)runNormalWindow { - CPLog.debug("[%@ %@]", [self class], _cmd); + CPLog.debug("[%@ %@]", [self class], _cmd); - [self positionWindow]; - [[self window] setTitle:@"Normal Window"]; - [_closeButton setTarget:[self window]]; - [_closeButton setAction:@selector(orderOut:)]; - [self showWindow:self]; + [self positionWindow]; + [[self window] setTitle:@"Normal Window"]; + [_closeButton setTarget:[self window]]; + [_closeButton setAction:@selector(orderOut:)]; + [self disableUnlinkedButtons]; + + [self showWindow:self]; } // // Modal window // --(void)newModalWindow:(id)sender +- (void)newModalWindow:(id)sender { - [[self allocController] runModalWindow]; + [[self allocController] runModalWindow]; } --(void)runModalWindow +- (void)runModalWindow { - CPLog.debug("[%@ %@]", [self class], _cmd); + CPLog.debug("[%@ %@]", [self class], _cmd); - [[self window] setTitle:@"Modal Window"]; + [[self window] setTitle:@"Modal Window"]; [[self window] setDelegate:self]; - [_closeButton setTarget:self]; - [_closeButton setAction:@selector(endModalWindow:)]; - //[self showWindow:self]; - [CPApp runModalForWindow:[self window]]; + [_closeButton setTarget:self]; + [_closeButton setAction:@selector(endModalWindow:)]; + [self disableUnlinkedButtons]; + + //[self showWindow:self]; + [CPApp runModalForWindow:[self window]]; } --(void)endModalWindow:(id)sender +- (void)endModalWindow:(id)sender { - CPLog.debug("[%@ %@]", [self class], _cmd); + CPLog.debug("[%@ %@]", [self class], _cmd); - // performClose shouldn't work, if the window has no close button - if ([[self window] styleMask] & CPClosableWindowMask) - [[self window] performClose:self]; - else - [[self window] close]; + // performClose shouldn't work, if the window has no close button + if ([[self window] styleMask] & CPClosableWindowMask) + [[self window] performClose:self]; + else + [[self window] close]; } --(void)windowWillClose:(NSNotification*)notification +- (void)windowWillClose:(NSNotification*)notification { - CPLog.debug("[%@ %@]", [self class], _cmd); - - // this is one way to handle close button on modal window + CPLog.debug("[%@ %@]", [self class], _cmd); + + // this is one way to handle close button on modal window if ([CPApp modalWindow]) [CPApp stopModal]; } @@ -224,243 +266,219 @@ // // Sheet // --(void)newSheet:(id)sender +- (void)newSheet:(id)sender { - [[self allocController] runSheetForWindow:[self window]]; + [[self allocController] runSheetForWindow:[self window]]; } --(void)runSheetForWindow:(CPWindow)parentWindow +- (void)runSheetForWindow:(CPWindow)parentWindow { - CPLog.debug("[%@ %@]", [self class], _cmd); + CPLog.debug("[%@ %@]", [self class], _cmd); - var sheet = [self window]; - [parentWindow setDelegate:self]; - _parentWindow = parentWindow; - _sheet = sheet; + var sheet = [self window]; + [parentWindow setDelegate:self]; + _parentWindow = parentWindow; + _sheet = sheet; - // NOTE: _closeButton doesn't exist until we call [self window] to load window from cib! - [_closeButton setTarget:self]; - [_closeButton setAction:@selector(closeSheet:)]; - [_altCloseButton setAction:@selector(closeSheetAndParent:)]; - [_otherCloseButton setAction:@selector(closeSheetAndRepeat:)]; - - [CPApp beginSheet:sheet - modalForWindow:parentWindow - modalDelegate:self - didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) - contextInfo:parentWindow]; + // NOTE: _closeButton doesn't exist until we call [self window] to load window from cib! + [_closeButton setTarget:self]; + [_closeButton setAction:@selector(closeSheet:)]; + [_altCloseButton setAction:@selector(closeSheetAndParent:)]; + [_otherCloseButton setAction:@selector(closeSheetAndRepeat:)]; + [self disableUnlinkedButtons]; + + [CPApp beginSheet:sheet + modalForWindow:parentWindow + modalDelegate:self + didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) + contextInfo:parentWindow]; } --(void)closeSheet:(id)sender +- (void)closeSheet:(id)sender { - CPLog.debug("[%@ %@]", [self class], _cmd); - _returnCode = 1; + CPLog.debug("[%@ %@]", [self class], _cmd); + _returnCode = 1; - var orderOutAfter = [_orderOutAfterCheckbox state]; - if (!orderOutAfter) - [[self window] orderOut:nil]; - - [CPApp endSheet:[self window] returnCode:_returnCode]; - - if (orderOutAfter) - [[self window] orderOut:nil]; + var orderOutAfter = [_orderOutAfterCheckbox state]; + if (!orderOutAfter) + [[self window] orderOut:nil]; + + [CPApp endSheet:[self window] returnCode:_returnCode]; + + if (orderOutAfter) + [[self window] orderOut:nil]; } --(void)closeSheetAndParent:(id)sender +- (void)closeSheetAndParent:(id)sender { - CPLog.debug("[%@ %@]", [self class], _cmd); + CPLog.debug("[%@ %@]", [self class], _cmd); // common use case is saving document in response to a close, // in this case we don't want to show the animation at all, // and also get rid of the parent window [_parentWindow close]; - + var orderOutAfter = [_orderOutAfterCheckbox state]; - if (!orderOutAfter) - [[self window] orderOut:nil]; - + if (!orderOutAfter) + [[self window] orderOut:nil]; + _returnCode = 99; [CPApp endSheet:[self window] returnCode:_returnCode]; - + if (orderOutAfter) - [[self window] orderOut:nil]; + [[self window] orderOut:nil]; } --(void)closeSheetAndRepeat:(id)sender +- (void)closeSheetAndRepeat:(id)sender { - CPLog.debug("[%@ %@]", [self class], _cmd); + CPLog.debug("[%@ %@]", [self class], _cmd); // common use case is showing a progress bar after a save command, - // the orderout gets rid of the current sheet, + // the orderout gets rid of the current sheet, // the return code indicates to open another sheet up - var orderOutAfter = [_orderOutAfterCheckbox state]; - if (!orderOutAfter) - [[self window] orderOut:nil]; - - _returnCode = 77; + var orderOutAfter = [_orderOutAfterCheckbox state]; + if (!orderOutAfter) + [[self window] orderOut:nil]; + + _returnCode = 77; [CPApp endSheet:[self window] returnCode:_returnCode]; - + if (orderOutAfter) - [[self window] orderOut:nil]; + [[self window] orderOut:nil]; } // // "Modal" Sheet implemented by using modal session // --(void)newModalSheet:(id)sender +- (void)newModalSheet:(id)sender { - [[self allocController] runModalSheetForWindow:[self window]]; + [[self allocController] runModalSheetForWindow:[self window]]; } --(void)runModalSheetForWindow:(CPWindow)parentWindow +- (void)runModalSheetForWindow:(CPWindow)parentWindow { - CPLog.debug("[%@ %@]", [self class], _cmd); + CPLog.debug("[%@ %@]", [self class], _cmd); - var sheet = [self window]; - [parentWindow setDelegate:self]; - _parentWindow = parentWindow; - _sheet = sheet; + var sheet = [self window]; + [parentWindow setDelegate:self]; + _parentWindow = parentWindow; + _sheet = sheet; - [_closeButton setTarget:self]; - [_closeButton setAction:@selector(closeModalSheet:)]; + [_closeButton setTarget:self]; + [_closeButton setAction:@selector(closeModalSheet:)]; + [self disableUnlinkedButtons]; - [CPApp beginSheet:sheet - modalForWindow:parentWindow - modalDelegate:self - didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) - contextInfo:parentWindow]; + [CPApp beginSheet:sheet + modalForWindow:parentWindow + modalDelegate:self + didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) + contextInfo:parentWindow]; - // what is the difference between these two approaches? - [CPApp runModalForWindow:sheet]; - - //var session = [CPApp beginModalSessionForWindow:sheet]; - //[CPApp runModalSession:session]; + // what is the difference between these two approaches? + [CPApp runModalForWindow:sheet]; + + //var session = [CPApp beginModalSessionForWindow:sheet]; + //[CPApp runModalSession:session]; } --(void)closeModalSheet:(id)sender +- (void)closeModalSheet:(id)sender { - CPLog.debug("[%@ %@]", [self class], _cmd); - - var orderOutAfter = [_orderOutAfterCheckbox state]; - if (!orderOutAfter) - [[self window] orderOut:nil]; - - _returnCode = 2; - [CPApp endSheet:[self window] returnCode:_returnCode]; - - // what return should we get, the sheet or modal? - [CPApp stopModalWithCode:999]; + CPLog.debug("[%@ %@]", [self class], _cmd); - if (orderOutAfter) - [[self window] orderOut:nil]; + var orderOutAfter = [_orderOutAfterCheckbox state]; + if (!orderOutAfter) + [[self window] orderOut:nil]; + + _returnCode = 2; + [CPApp endSheet:[self window] returnCode:_returnCode]; + + // what return should we get, the sheet or modal? + [CPApp stopModalWithCode:999]; + + if (orderOutAfter) + [[self window] orderOut:nil]; } // // Test alert panels // --(void)newAlertSheet:(id)sender +- (void)newAlertSheet:(id)sender { - [self runAlertSheet:[self window]]; + [self runAlertSheet:[self window]]; } --(void)runAlertSheet:(CPWindow)parentWindow +- (void)runAlertSheet:(CPWindow)parentWindow { - // BUG: capp 0.9.5 on WebKit will chop off "bug." in the info text - var alert = [CPAlert alertWithMessageText:@"Alert message text goes here" - defaultButton:@"DefaultButton" - alternateButton:@"AltButton" - otherButton:@"OtherButton" + // BUG: capp 0.9.5 on WebKit will chop off "bug." in the info text + var alert = [CPAlert alertWithMessageText:@"Alert message text goes here" + defaultButton:@"DefaultButton" + alternateButton:@"AltButton" + otherButton:@"OtherButton" informativeTextWithFormat:@"This informative text sentence shows text wrapping bug."]; - [parentWindow setDelegate:self]; - _parentWindow = parentWindow; - _sheet = alert; - _returnCode = -1; - + [parentWindow setDelegate:self]; + _parentWindow = parentWindow; + _sheet = alert; + _returnCode = -1; + [alert beginSheetModalForWindow:parentWindow - modalDelegate:self - didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) - contextInfo:parentWindow]; + modalDelegate:self + didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) + contextInfo:parentWindow]; } --(void)newColorPanelSheet:(id)sender -{ - var panel = [CPColorPanel sharedColorPanel]; - var controller = [self allocWithPanel:panel]; - [controller createCloseButton:panel]; - [controller runSheetForWindow:[self window]]; -} - --(void)newOpenPanelSheet:(id)sender -{ - var panel = [CPOpenPanel openPanel]; - var controller = [self allocWithPanel:panel]; - [controller createCloseButton:panel]; - [controller runSheetForWindow:[self window]]; -} - --(void)newSavePanelSheet:(id)sender -{ - var panel = [CPSavePanel savePanel]; - var controller = [self allocWithPanel:panel]; - [controller createCloseButton:panel]; - [controller runSheetForWindow:[self window]]; -} - -// Test open and save panels - // // Test notifications/delegate methods // --(void)didEndSheet:(CPWindow)sheet returnCode:(int)returnCode contextInfo:(id)parentWindow +- (void)didEndSheet:(CPWindow)sheet returnCode:(int)returnCode contextInfo:(id)parentWindow { - CPLog.debug("[%@ %@] returnCode=%d", [self class], _cmd, returnCode); + CPLog.debug("[%@ %@] returnCode=%d", [self class], _cmd, returnCode); - if (sheet !== _sheet) - CPLog.fatal("sheet invalid"); + if (sheet !== _sheet) + CPLog.fatal("sheet invalid"); - if (_returnCode >= 0 && returnCode != _returnCode) - CPLog.fatal("returnCode invalid"); - - if (_parentWindow !== parentWindow) - CPLog.fatal("contextInfo invalid"); - - // test sheet chaining. it should be possible to start another sheet from didEndSheet, - // but only if we orderOut: the sheet before we called endSheet: This is how cocoa works too. - if (returnCode == 77) - [self runSheetForWindow:parentWindow]; - //[self runAlertSheet:parentWindow]; + if (_returnCode >= 0 && returnCode != _returnCode) + CPLog.fatal("returnCode invalid"); + + if (_parentWindow !== parentWindow) + CPLog.fatal("contextInfo invalid"); + + // test sheet chaining. it should be possible to start another sheet from didEndSheet, + // but only if we orderOut: the sheet before we called endSheet: This is how cocoa works too. + if (returnCode == 77) + [self runSheetForWindow:parentWindow]; + //[self runAlertSheet:parentWindow]; } - (BOOL)shadeWindow -{ - return [_shadeParentWindow state]; +{ + return [_shadeParentWindow state]; } - (void)windowWillBeginSheet:(NSNotification*)notification { - CPLog.debug("[%@ %@]", [self class], _cmd); - - if ([notification object] !== _parentWindow) - CPLog.fatal("notification object should be delegate's window"); - - if ([[_parentWindow windowController] shadeWindow]) - { - _savedColor = [[_parentWindow contentView] backgroundColor]; - [[_parentWindow contentView] setBackgroundColor: - [CPColor colorWithCalibratedRed:0.0 green:0.7 blue:0.0 alpha:1.0]]; - } + CPLog.debug("[%@ %@]", [self class], _cmd); + + if ([notification object] !== _parentWindow) + CPLog.fatal("notification object should be delegate's window"); + + if ([[_parentWindow windowController] shadeWindow]) + { + _savedColor = [[_parentWindow contentView] backgroundColor]; + [[_parentWindow contentView] setBackgroundColor: + [CPColor colorWithCalibratedRed:0.0 green:0.7 blue:0.0 alpha:1.0]]; + } } - (void)windowDidEndSheet:(NSNotification *)notification { - CPLog.debug("[%@ %@]", [self class], _cmd); + CPLog.debug("[%@ %@]", [self class], _cmd); - if ([notification object] !== _parentWindow) - CPLog.fatal("notification object should be delegate's window"); + if ([notification object] !== _parentWindow) + CPLog.fatal("notification object should be delegate's window"); - if ([[_parentWindow windowController] shadeWindow]) - [[_parentWindow contentView] setBackgroundColor:_savedColor]; + if ([[_parentWindow windowController] shadeWindow]) + [[_parentWindow contentView] setBackgroundColor:_savedColor]; } @end From bff22779ae4591199ba2426f1a7c98ab856249fc Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 4 Aug 2012 13:53:05 -0400 Subject: [PATCH 053/114] -capp_lint --- AppKit/CPApplication.j | 8 +-- AppKit/CPWindow/CPWindow.j | 85 ++++++++++++------------- AppKit/CPWindow/_CPStandardWindowView.j | 17 ++--- AppKit/CPWindow/_CPWindowView.j | 10 +-- 4 files changed, 60 insertions(+), 60 deletions(-) diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index a97bca0d9..50003e583 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -936,9 +936,9 @@ CPRunContinuesResponse = -1002; [CPException raise:CPInternalInconsistencyException reason:@"The target window of beginSheet: cannot be a sheet"]; return; } - + [aSheet._windowView _enableSheet:YES]; - + // -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. if (![aWindow isVisible]) @@ -1196,8 +1196,8 @@ _CPRunModalLoop = function(anEvent) // yet it works when there is a modal window. Maybe it starts its own modal session, but interaction with the original // modal window seems to continue working as well. Regardless of correctness, this solution beats popovers not working // at all from sheets. - if (theWindow == modalSession._window || - [theWindow worksWhenModal] || + if (theWindow == modalSession._window || + [theWindow worksWhenModal] || [theWindow attachedSheet] == modalSession._window || // -dw- allow modal parent of sheet to be repositioned ([theWindow isKindOfClass:_CPAttachedWindow] && [[theWindow targetView] window] === modalSession._window)) [theWindow sendEvent:anEvent]; diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 6b4ac9461..04c64f436 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -423,7 +423,7 @@ CPTexturedBackgroundWindowMask _isSheet = NO; _sheetContext = nil; _parentView = nil; - + // Set up our window number. _windowNumber = [CPApp._windows count]; CPApp._windows[_windowNumber] = self; @@ -780,21 +780,21 @@ CPTexturedBackgroundWindowMask if (_hasShadow) { - // if the shadow would be taller/wider than the window height, + // if the shadow would be taller/wider than the window height, // make it the same as the window height. this allows views to // become 0,0 with no shadow on them and makes the sheet // animation look nicer var shadowSize = _CGSizeMake(size.width,size.height); - + if (size.width >= (SHADOW_MARGIN_LEFT + SHADOW_MARGIN_RIGHT)) shadowSize.width += SHADOW_MARGIN_LEFT + SHADOW_MARGIN_RIGHT; - + if (size.height >= (SHADOW_MARGIN_BOTTOM + SHADOW_MARGIN_TOP + SHADOW_DISTANCE)) shadowSize.height += SHADOW_MARGIN_BOTTOM + SHADOW_MARGIN_TOP + SHADOW_DISTANCE; - + [_shadowView setFrameSize:shadowSize]; } - + if (!_isAnimating) [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidResizeNotification object:self]; } @@ -831,7 +831,7 @@ CPTexturedBackgroundWindowMask { [self _setClippedFrame:_CGRectMake(anOrigin.x, anOrigin.y, _CGRectGetWidth(_frame), _CGRectGetHeight(_frame)) display:YES animate:NO]; - // reposition sheet + // reposition sheet if ([self attachedSheet]) [self _setAttachedSheetFrameOrigin]; } @@ -892,7 +892,7 @@ CPTexturedBackgroundWindowMask [self._parentView _detachSheetWindow]; return; } - + #if PLATFORM(DOM) if ([self _sharesChromeWithPlatformWindow]) [_platformWindow orderOut:self]; @@ -1605,7 +1605,7 @@ CPTexturedBackgroundWindowMask { case CPLeftMouseDown: [_windowView mouseDown:anEvent]; - + // -dw- if the window is clicked, the sheet should come to front, and become key, // and the window should be immediately behind [self orderFront:self]; @@ -1615,7 +1615,7 @@ CPTexturedBackgroundWindowMask [_windowView mouseMoved:anEvent]; break; } - + return; } @@ -2369,29 +2369,29 @@ CPTexturedBackgroundWindowMask [attachedSheet setFrame:sheetFrame display:YES animate:NO]; } -/* @ignore +/* @ignore Starting point for sheet session, called from CPApplication beginSheet: */ -- (void)_attachSheet:(CPWindow)aSheet modalDelegate:(id)aModalDelegate +- (void)_attachSheet:(CPWindow)aSheet modalDelegate:(id)aModalDelegate didEndSelector:(SEL)aDidEndSelector contextInfo:(id)aContextInfo { if (_sheetContext) { - [CPException raise:CPInternalInconsistencyException + [CPException raise:CPInternalInconsistencyException reason:@"The target window of beginSheet: already has a sheet, did you forget orderOut: ?"]; return; } var sheetFrame = [aSheet frame]; - - _sheetContext = {"sheet":aSheet, "modalDelegate":aModalDelegate, "endSelector":aDidEndSelector, - "contextInfo":aContextInfo, "frame":CGRectMakeCopy(sheetFrame), "returnCode":-1, + + _sheetContext = {"sheet":aSheet, "modalDelegate":aModalDelegate, "endSelector":aDidEndSelector, + "contextInfo":aContextInfo, "frame":CGRectMakeCopy(sheetFrame), "returnCode":-1, "opened": NO }; [self _attachSheetWindow]; } -/* @ignore +/* @ignore Called to animate the sheet in. The timer seems to solve a bug where sheets would be partially animated under certain conditions. */ @@ -2400,14 +2400,14 @@ CPTexturedBackgroundWindowMask _sheetContext["isAttached"] = YES; // it would be ideal to block here and spin an event loop, until attach is complete - [CPTimer scheduledTimerWithTimeInterval:0.0 - target:self + [CPTimer scheduledTimerWithTimeInterval:0.0 + target:self selector:@selector(_sheetShouldAnimateIn:) userInfo:nil repeats:NO]; } -/* @ignore +/* @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. */ @@ -2421,15 +2421,15 @@ CPTexturedBackgroundWindowMask if (delegate != nil && endSelector != nil) { if (_sheetContext["isAttached"]) - objj_msgSend(delegate, endSelector, _sheetContext["sheet"], _sheetContext["returnCode"], + objj_msgSend(delegate, endSelector, _sheetContext["sheet"], _sheetContext["returnCode"], _sheetContext["contextInfo"]); else _sheetContext["deferDidEndSelector"] = YES; } } -/* @ignore - Called to animate the sheet out. If called while animating in, schedules an animate +/* @ignore + Called to animate the sheet out. If called while animating in, schedules an animate out at completion */ - (void)_detachSheetWindow @@ -2437,8 +2437,8 @@ CPTexturedBackgroundWindowMask _sheetContext["isAttached"] = NO; // it would be ideal to block here and spin the event loop, until attach is complete - [CPTimer scheduledTimerWithTimeInterval:0.0 - target:self + [CPTimer scheduledTimerWithTimeInterval:0.0 + target:self selector:@selector(_sheetShouldAnimateOut:) userInfo:nil repeats:NO]; @@ -2471,15 +2471,15 @@ CPTexturedBackgroundWindowMask if (deferDidEnd) { - var delegate = _sheetContext["modalDelegate"]; + var delegate = _sheetContext["modalDelegate"], selector = _sheetContext["endSelector"], returnCode = _sheetContext["returnCode"], - contextInfo = _sheetContext["contextInfo"], - + contextInfo = _sheetContext["contextInfo"]; + // context must be destroyed, since didEnd might want to attach another sheet _sheetContext = nil; sheet._parentView = nil; - + objj_msgSend(delegate, selector, sheet, returnCode, contextInfo); } else @@ -2496,8 +2496,8 @@ CPTexturedBackgroundWindowMask if (anim._window != sheet) return; - [CPTimer scheduledTimerWithTimeInterval:0.0 - target:self + [CPTimer scheduledTimerWithTimeInterval:0.0 + target:self selector:@selector(_sheetAnimationDidEnd:) userInfo:nil repeats:NO]; @@ -2511,10 +2511,10 @@ CPTexturedBackgroundWindowMask _sheetContext["isClosing"]) return; - var sheet = _sheetContext["sheet"] + var sheet = _sheetContext["sheet"], sheetFrame = [sheet frame], frame = [self frame]; - + [self _setUpMasksForView:[sheet contentView]]; sheet._isSheet = YES; @@ -2526,11 +2526,11 @@ CPTexturedBackgroundWindowMask 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; - if ([CPApp modalWindow]===self) + if ([CPApp modalWindow] === self) { [CPApp runModalForWindow:sheet]; sheet._isModal = YES; @@ -2538,14 +2538,13 @@ CPTexturedBackgroundWindowMask [sheet orderFront:self]; [sheet setFrame:startFrame display:YES animate:NO]; - + _sheetContext["opened"] = YES; _sheetContext["shouldClose"] = NO; _sheetContext["isOpening"] = YES; - + [sheet _setFrame:endFrame delegate:self duration:[self animationResizeTime:endFrame] curve:CPAnimationEaseOut]; - // NOTE: cocoa doesn't make window key until animation is done, but a // keypress while animating eventually gets to the window. Therefore, // there must be a runloop specifically designed for sheets? @@ -2565,19 +2564,19 @@ CPTexturedBackgroundWindowMask _sheetContext["shouldClose"] = YES; return; } - + if (_sheetContext["isClosing"]) 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 if ([self isVisible]) { endFrame.size.height = 0; - [self _setUpMasksForView:[sheet contentView]]; + [self _setUpMasksForView:[sheet contentView]]; [sheet _setFrame:endFrame delegate:self duration:[self animationResizeTime:endFrame] curve:CPAnimationEaseIn]; } else diff --git a/AppKit/CPWindow/_CPStandardWindowView.j b/AppKit/CPWindow/_CPStandardWindowView.j index 97c716bc7..19ffc4d13 100644 --- a/AppKit/CPWindow/_CPStandardWindowView.j +++ b/AppKit/CPWindow/_CPStandardWindowView.j @@ -330,13 +330,13 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, [_headView setFrameSize:CGSizeMake(width, [self toolbarMaxY])]; [_dividerView setFrame:CGRectMake(0.0, CGRectGetMaxY([_headView frame]), width, 1.0)]; - + var dividerMaxY = 0; if (![_dividerView isHidden]) dividerMaxY = CGRectGetMaxY([_dividerView frame]); - + [_bodyView setFrame:CGRectMake(0.0, dividerMaxY, width, CGRectGetHeight(bounds) - dividerMaxY)]; - + var leftOffset = 8; if (_closeButton) @@ -348,7 +348,7 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, var contentRect = CGRectMake(0.0, dividerMaxY, width, CGRectGetHeight([_bodyView frame])); - [[theWindow contentView] setFrame:contentRect]; + [[theWindow contentView] setFrame:contentRect]; } /* - (void)setAnimatingToolbar:(BOOL)isAnimatingToolbar @@ -415,7 +415,7 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, - (void)_enableSheet:(BOOL)enable { [super _enableSheet:enable]; - + [_headView setHidden:enable]; [_dividerView setHidden:enable]; [_closeButton setHidden:enable]; @@ -434,9 +434,10 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, var dy = CGRectGetHeight([_headView frame]) + CGRectGetHeight([_dividerView frame]); if (enable) dy = -dy; - - var newHeight = CGRectGetMaxY(frame) + dy; - var newWidth = CGRectGetMaxX(frame); + + var newHeight = CGRectGetMaxY(frame) + dy, + newWidth = CGRectGetMaxX(frame); + frame.size.height += dy; [self setFrameSize:CGSizeMake(newWidth, newHeight)]; diff --git a/AppKit/CPWindow/_CPWindowView.j b/AppKit/CPWindow/_CPWindowView.j index a4e27e4af..5f5f7d635 100644 --- a/AppKit/CPWindow/_CPWindowView.j +++ b/AppKit/CPWindow/_CPWindowView.j @@ -41,7 +41,7 @@ var _CPWindowViewResizeIndicatorImage = nil; CGPoint _mouseDraggedPoint; CGRect _cachedScreenFrame; - + CPView _sheetShadowView; } @@ -208,13 +208,13 @@ var _CPWindowViewResizeIndicatorImage = nil; - (void)setFrameSize:(CGSize)newSize { [super setFrameSize:newSize]; - + // reposition sheet if the parent window resizes or moves var theWindow = [self window]; - + if ([theWindow attachedSheet]) [theWindow _setAttachedSheetFrameOrigin]; -} +} - (void)setShowsResizeIndicator:(BOOL)shouldShowResizeIndicator { @@ -386,7 +386,7 @@ var _CPWindowViewResizeIndicatorImage = nil; var bundle = [CPBundle bundleForClass:[CPWindow class]]; _sheetShadowView = [[CPView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth([self bounds]), 8)]; [_sheetShadowView setAutoresizingMask:CPViewWidthSizable]; - [_sheetShadowView setBackgroundColor:[CPColor colorWithPatternImage:[[CPImage alloc] + [_sheetShadowView setBackgroundColor:[CPColor colorWithPatternImage:[[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPWindow/CPWindowAttachedSheetShadow.png"] size:CGSizeMake(9,8)]]]; [self addSubview:_sheetShadowView]; } From eed93dc30da76a433ed5c02c476176e049c8483f Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 4 Aug 2012 13:57:56 -0400 Subject: [PATCH 054/114] -capp_lint --- AppKit/CPWindow/_CPHUDWindowView.j | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/AppKit/CPWindow/_CPHUDWindowView.j b/AppKit/CPWindow/_CPHUDWindowView.j index e8de3b6ce..42368704c 100644 --- a/AppKit/CPWindow/_CPHUDWindowView.j +++ b/AppKit/CPWindow/_CPHUDWindowView.j @@ -211,8 +211,6 @@ var HUD_TITLEBAR_HEIGHT = 26.0; if ([_titleField isHidden]) maxY -= ([self toolbarOffset]).height; - //[[theWindow contentView] setFrameOrigin:CGPointMake(0.0, maxY, width, CGRectGetHeight(bounds) - maxY)]; - var contentRect = CGRectMake(0.0, maxY, width, CGRectGetHeight(bounds) - maxY); [[theWindow contentView] setFrame:contentRect]; @@ -232,9 +230,10 @@ var HUD_TITLEBAR_HEIGHT = 26.0; var dy = ([self toolbarOffset]).height; if (enable) dy = -dy; - - var newHeight = CGRectGetMaxY(frame) + dy; - var newWidth = CGRectGetMaxX(frame); + + var newHeight = CGRectGetMaxY(frame) + dy, + newWidth = CGRectGetMaxX(frame); + frame.size.height += dy; [self setFrameSize:CGSizeMake(newWidth, newHeight)]; From 339937a316d768708c20085684c18b51de5260ef Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 4 Aug 2012 13:58:31 -0400 Subject: [PATCH 055/114] -support for tags on NSCell, useful for radio groups --- Tools/nib2cib/NSCell.j | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Tools/nib2cib/NSCell.j b/Tools/nib2cib/NSCell.j index ae8b2709f..47e6fb233 100644 --- a/Tools/nib2cib/NSCell.j +++ b/Tools/nib2cib/NSCell.j @@ -49,6 +49,7 @@ CPFont _font @accessors(readonly, getter=font); int _lineBreakMode @accessors(readonly, getter=lineBreakMode); CPFormatter _formatter @accessors(readonly, getter=formatter); + int _tag @accessors(readonly, getter=tag); } - (id)initWithCoder:(CPCoder)aCoder @@ -77,6 +78,8 @@ _controlSize = (flags2 & 0xE0000) >> 17; _sendsActionOnEndEditing = (flags2 & 0x00400000) ? YES : NO; + _tag = [aCoder decodeIntForKey:@"NSTag"]; + _objectValue = [aCoder decodeObjectForKey:@"NSContents"]; _font = [aCoder decodeObjectForKey:@"NSSupport"]; From 872d65b824f9e0d17c5ca870d52fb43195bf7d68 Mon Sep 17 00:00:00 2001 From: Darrell Walisser Date: Sat, 4 Aug 2012 14:06:11 -0400 Subject: [PATCH 056/114] -fix docs for new delegate methods --- AppKit/CPWindow/CPWindow.j | 3 --- 1 file changed, 3 deletions(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 04c64f436..15f3cdc08 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -269,9 +269,6 @@ var CPWindowActionMessageKeys = [ Sent from the notification center when an attached sheet on the delegate's window has been animated out and is no longer visible. @param notification contains information about the event - - @return \c YES allows the window to close. \c NO - vetoes the close operation and leaves the window open. */ @implementation CPWindow : CPResponder { From 175c70d99e4ce8f7e30035f7eff5195adc9420bf Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 5 Aug 2012 08:37:44 +0800 Subject: [PATCH 057/114] fix a new bug in CPDecimalMakeWithString and remove some test cases --- Foundation/CPDecimal.j | 3 +++ Tests/Foundation/CPDecimalNumberTest.j | 12 +++--------- Tests/Foundation/CPDecimalTest.j | 4 ---- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/Foundation/CPDecimal.j b/Foundation/CPDecimal.j index 92382d1ce..8824a6218 100644 --- a/Foundation/CPDecimal.j +++ b/Foundation/CPDecimal.j @@ -142,6 +142,9 @@ function CPDecimalMakeWithString(string, locale) { // input is too long, increase exponent and truncate exponent += inputlength - CPDecimalMaxDigits; + } else if (inputlength === 0) + { + return CPDecimalMakeNaN(); } if (exponent > CPDecimalMaxExponent || exponent < CPDecimalMinExponent) diff --git a/Tests/Foundation/CPDecimalNumberTest.j b/Tests/Foundation/CPDecimalNumberTest.j index 471ed91dd..7e1ea479c 100644 --- a/Tests/Foundation/CPDecimalNumberTest.j +++ b/Tests/Foundation/CPDecimalNumberTest.j @@ -145,20 +145,14 @@ dcmn = [[CPDecimalNumber alloc] initWithString:@"foo"]; [self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 2 overflow should return NaN"]; - dcmn = [[CPDecimalNumber alloc] initWithString:@".123"]; + dcmn = [[CPDecimalNumber alloc] initWithString:@"0123"]; [self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 3 overflow should return NaN"]; - dcmn = [[CPDecimalNumber alloc] initWithString:@"-.123"]; + dcmn = [[CPDecimalNumber alloc] initWithString:@"1e200"]; [self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 4 overflow should return NaN"]; - dcmn = [[CPDecimalNumber alloc] initWithString:@"0123"]; - [self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 5 overflow should return NaN"]; - - dcmn = [[CPDecimalNumber alloc] initWithString:@"1e200"]; - [self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 6 overflow should return NaN"]; - dcmn = [[CPDecimalNumber alloc] initWithString:@"12312e-23421"]; - [self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 7 overflow should return NaN"]; + [self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 5 overflow should return NaN"]; } - (void)testAdd diff --git a/Tests/Foundation/CPDecimalTest.j b/Tests/Foundation/CPDecimalTest.j index 9acdfbdbb..1a8411a09 100644 --- a/Tests/Foundation/CPDecimalTest.j +++ b/Tests/Foundation/CPDecimalTest.j @@ -99,10 +99,6 @@ [self assertTrue:dcm._isNaN message:"CPDecimalMakeWithString() Ti9: catch of invalid number string. Should return NaN"]; dcm = CPDecimalMakeWithString(@"-0001"); [self assertTrue:dcm._isNaN message:"CPDecimalMakeWithString() Ti10: catch of invalid number string. Should return NaN"]; - dcm = CPDecimalMakeWithString(@".123"); - [self assertTrue:dcm._isNaN message:"CPDecimalMakeWithString() Ti11: catch of invalid number string. Should return NaN"]; - dcm = CPDecimalMakeWithString(@"-.1"); - [self assertTrue:dcm._isNaN message:"CPDecimalMakeWithString() Ti12: catch of invalid number string. Should return NaN"]; //test make with parts dcm = CPDecimalMakeWithParts(10127658,2); From def8016f446031cc4b2598cb401719f0c9828f1c Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 5 Aug 2012 09:35:44 +0800 Subject: [PATCH 058/114] code style change --- Foundation/CPDecimal.j | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Foundation/CPDecimal.j b/Foundation/CPDecimal.j index 8824a6218..4b2f68697 100644 --- a/Foundation/CPDecimal.j +++ b/Foundation/CPDecimal.j @@ -142,7 +142,8 @@ function CPDecimalMakeWithString(string, locale) { // input is too long, increase exponent and truncate exponent += inputlength - CPDecimalMaxDigits; - } else if (inputlength === 0) + } + else if (inputlength === 0) { return CPDecimalMakeNaN(); } From c1ace9a7c34530cfe011dde058b91572dd287996 Mon Sep 17 00:00:00 2001 From: Ilya Kulakov Date: Mon, 6 Aug 2012 19:19:13 +0700 Subject: [PATCH 059/114] Fix wrong indexes are selected when removing arranged objects. --- AppKit/CPArrayController.j | 50 +-- Tests/AppKit/CPArrayControllerTest.j | 441 +++++++++++++++++++++++---- 2 files changed, 413 insertions(+), 78 deletions(-) diff --git a/AppKit/CPArrayController.j b/AppKit/CPArrayController.j index 3e22ad838..dc13ae452 100644 --- a/AppKit/CPArrayController.j +++ b/AppKit/CPArrayController.j @@ -946,36 +946,38 @@ _disableSetContent = YES; var arrangedObjects = [self arrangedObjects], - index = [anIndexSet lastIndex], position = CPNotFound, newSelectionIndexes = [_selectionIndexes copy]; - while (index !== CPNotFound) - { - var object = [arrangedObjects objectAtIndex:index]; - - // First try the simple case which should work if there are no sort descriptors. - if ([_contentObject objectAtIndex:index] === object) - [_contentObject removeObjectAtIndex:index]; - else + [anIndexSet enumerateIndexesWithOptions:CPEnumerationReverse + usingBlock:function(anIndex) { - // Since we don't have a reverse mapping between the sorted order and the - // unsorted one, we'll just simply have to remove an arbitrary pointer. It might - // be the 'wrong' one - as in not the one the user selected - but the wrong - // one is still just another pointer to the same object, so the user will not - // be able to see any difference. - contentIndex = [_contentObject indexOfObjectIdenticalTo:object]; - [_contentObject removeObjectAtIndex:contentIndex]; - } - [arrangedObjects removeObjectAtIndex:index]; + var object = [arrangedObjects objectAtIndex:anIndex]; - // Deselect this row if it was selected, and either way shift all selection indexes - // following it up by 1. - [newSelectionIndexes removeIndex:index]; - [newSelectionIndexes shiftIndexesStartingAtIndex:index by:-1]; + // First try the simple case which should work if there are no sort descriptors. + if ([_contentObject objectAtIndex:anIndex] === object) + [_contentObject removeObjectAtIndex:anIndex]; + else + { + // Since we don't have a reverse mapping between the sorted order and the + // unsorted one, we'll just simply have to remove an arbitrary pointer. It might + // be the 'wrong' one - as in not the one the user selected - but the wrong + // one is still just another pointer to the same object, so the user will not + // be able to see any difference. + contentIndex = [_contentObject indexOfObjectIdenticalTo:object]; + [_contentObject removeObjectAtIndex:contentIndex]; + } + [arrangedObjects removeObjectAtIndex:anIndex]; + + if (!_avoidsEmptySelection || [newSelectionIndexes count] > 1) + { + [newSelectionIndexes removeIndex:anIndex]; + [newSelectionIndexes shiftIndexesStartingAtIndex:anIndex by:-1]; + } + else if ([newSelectionIndexes lastIndex] !== anIndex) + [newSelectionIndexes shiftIndexesStartingAtIndex:anIndex by:-1]; + }]; - index = [anIndexSet indexLessThanIndex:index]; - } // Allow handlesContentAsCompoundValue reverse sets to trigger. [[CPBinder getBinding:@"contentArray" forObject:self] _contentArrayDidChange]; _disableSetContent = NO; diff --git a/Tests/AppKit/CPArrayControllerTest.j b/Tests/AppKit/CPArrayControllerTest.j index 08597ab64..939d8881e 100644 --- a/Tests/AppKit/CPArrayControllerTest.j +++ b/Tests/AppKit/CPArrayControllerTest.j @@ -183,82 +183,415 @@ [self assert:[CPNumber numberWithInt:2] equals:[_arrayController arrangedObjects][1]]; } -- (void)testRemoveObjectsWithoutAvoidingEmptySelection_SimpleArray + + +- (void)_initTestRemoveObjects_SimpleArray { - [self initControllerWithSimpleArray]; - [self _testRemoveObjectsWithoutAvoidingEmptySelection]; + var array = [[CPMutableDictionary dictionaryWithObject:0 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:1 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:2 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:3 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:4 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:5 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:6 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:7 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:8 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:9 forKey:@"number"]]; + _arrayController = [[CPArrayController alloc] initWithContent:[array mutableCopy]]; } -- (void)testRemoveObjectsWithoutAvoidingEmptySelection_ContentBinding +- (void)_initTestRemoveObjects_ContentBinding { - [self initControllerWithContentBinding]; - [self _testRemoveObjectsWithoutAvoidingEmptySelection]; + _contentArray = [[CPMutableDictionary dictionaryWithObject:0 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:1 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:2 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:3 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:4 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:5 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:6 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:7 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:8 forKey:@"number"], + [CPMutableDictionary dictionaryWithObject:9 forKey:@"number"]]; + _arrayController = [CPArrayController new]; + [_arrayController bind:@"contentArray" toObject:self withKeyPath:@"itemsArray" options:nil]; } -- (void)_testRemoveObjectsWithoutAvoidingEmptySelection +- (void)testRemoveObjects_OneSelectedObject_SimpleArray { - var arrayController = [self arrayController]; - [arrayController setAvoidsEmptySelection:NO]; - [arrayController setPreservesSelection:NO]; - - [arrayController setSelectionIndexes:[CPIndexSet indexSetWithIndexesInRange:CPMakeRange(1, 2)]]; - [arrayController removeObjects:[arrayController selectedObjects]]; - - [self assert:[CPIndexSet indexSet] equals:[arrayController selectionIndexes] - message:@"selection should be empty if arraycontroller doesn't avoid empty selection"]; + [self _initTestRemoveObjects_SimpleArray]; + [self _testRemoveObjects_OneSelectedObject]; } -- (void)testRemoveObjectWithAvoidingEmptySelection +- (void)testRemoveObjects_OneSelectedObject_ContentBinding { - var arrayController = [self arrayController]; - [arrayController setAvoidsEmptySelection:YES]; - - [arrayController setSelectionIndex:2]; - [arrayController removeObjectsAtArrangedObjectIndexes:[CPIndexSet indexSetWithIndex:2]]; - - [self assertTrue:([[arrayController selectionIndexes] count] > 0) message:@"Selection should not empty when arraycontroller avoids empty selection"]; - - [arrayController setContent:[self contentArray]]; - [arrayController setSelectionIndex:2]; - [arrayController removeObjects:[arrayController selectedObjects]]; - - [self assertTrue:([[arrayController selectionIndexes] count] > 0) message:@"Selection should not empty when arraycontroller avoids empty selection"]; - -// This will fail, currently we select the first index instead of an adjacent index. -// [self assertTrue:([arrayController selectionIndex] == 1) message:@"The selected index should be 1, was " + [arrayController selectionIndex]]; + [self _initTestRemoveObjects_ContentBinding]; + [self _testRemoveObjects_OneSelectedObject]; } -- (void)testRemoveObjectsWithPreservesSelection_SimpleArray +- (void)_testRemoveObjects_OneSelectedObject { - [self initControllerWithSimpleArray]; - [self _testRemoveObjectsWithPreservesSelection]; + [_arrayController setAvoidsEmptySelection:NO]; + [_arrayController setPreservesSelection:NO]; + [_arrayController setSelectionIndex:5]; + + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [self assertTrue:[_arrayController selectionIndex] === 4]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 5]; + + [_arrayController removeObjectAtArrangedObjectIndex:5]; + [self assertTrue:[_arrayController selectionIndex] === 4]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 5]; + + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [self assertTrue:[_arrayController selectionIndex] === CPNotFound]; } -- (void)testRemoveObjectsWithPreservesSelection_ContentBinding +- (void)testRemoveObjects_OneSelectedObject_AvoidingEmptySelection_SimpleArray { - [self initControllerWithContentBinding]; - [self _testRemoveObjectsWithPreservesSelection]; + [self _initTestRemoveObjects_SimpleArray]; + [self _testRemoveObjects_OneSelectedObject_AvoidingEmptySelection]; } -- (void)_testRemoveObjectsWithPreservesSelection +- (void)testRemoveObjects_OneSelectedObject_AvoidingEmptySelection_ContentBinding { - var arrayController = [self arrayController]; - [arrayController setPreservesSelection:YES]; + [self _initTestRemoveObjects_ContentBinding]; + [self _testRemoveObjects_OneSelectedObject_AvoidingEmptySelection]; +} - // Remove from middle - var selectionIndexes = [CPIndexSet indexSetWithIndex:1]; - [arrayController setSelectionIndexes:selectionIndexes]; - [arrayController removeObjects:[arrayController selectedObjects]]; - [self assert:selectionIndexes equals:[arrayController selectionIndexes] message:@"selection should stay the same"]; +- (void)_testRemoveObjects_OneSelectedObject_AvoidingEmptySelection +{ + [_arrayController setAvoidsEmptySelection:YES]; + [_arrayController setPreservesSelection:NO]; + [_arrayController setSelectionIndex:5]; - // Remove from end - [arrayController removeObjects:[[[arrayController content] objectAtIndex:1]]]; - [self assert:[CPIndexSet indexSetWithIndex:0] equals:[arrayController selectionIndexes] - message:@"last object removed; selection should shift to first available index"]; + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [self assertTrue:[_arrayController selectionIndex] === 4]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 5]; - // Remove from all - [arrayController removeObjects:[[[arrayController content] objectAtIndex:0]]]; - [self assert:[CPIndexSet indexSet] equals:[arrayController selectionIndexes] message:@"no objects left, selection should disappear"]; + [_arrayController removeObjectAtArrangedObjectIndex:5]; + [self assertTrue:[_arrayController selectionIndex] === 4]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 5]; + + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [self assertTrue:[_arrayController selectionIndex] === 4 message:"" + [_arrayController selectionIndex]]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 7]; + + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [self assertTrue:[_arrayController selectionIndex] === 3]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 3]; + + [_arrayController removeObjectAtArrangedObjectIndex:0]; + [_arrayController removeObjectAtArrangedObjectIndex:0]; + [_arrayController removeObjectAtArrangedObjectIndex:0]; + [self assertTrue:[_arrayController selectionIndex] === 0]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 3]; + + [_arrayController removeObjectAtArrangedObjectIndex:0]; + [self assertTrue:[_arrayController selectionIndex] === CPNotFound]; +} + +- (void)testRemoveObjects_OneSelectedObject_PreservesSelection_SimpleArray +{ + [self _initTestRemoveObjects_SimpleArray]; + [self _testRemoveObjects_OneSelectedObject_PreservesSelection]; +} + +- (void)testRemoveObjects_OneSelectedObject_PreservesSelection_ContentBinding +{ + [self _initTestRemoveObjects_ContentBinding]; + [self _testRemoveObjects_OneSelectedObject_PreservesSelection]; +} + +- (void)_testRemoveObjects_OneSelectedObject_PreservesSelection +{ + [_arrayController setAvoidsEmptySelection:NO]; + [_arrayController setPreservesSelection:YES]; + [_arrayController setSelectionIndex:5]; + + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [self assertTrue:[_arrayController selectionIndex] === 4]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 5]; + + [_arrayController removeObjectAtArrangedObjectIndex:5]; + [self assertTrue:[_arrayController selectionIndex] === 4]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 5]; + + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [self assertTrue:[_arrayController selectionIndex] === CPNotFound]; +} + +- (void)testRemoveObjects_OneSelectedObject_AvoidingEmptySelection_PreservesSelection_SimpleArray +{ + [self _initTestRemoveObjects_SimpleArray]; + [self _testRemoveObjects_OneSelectedObject_AvoidingEmptySelection_PreservesSelection]; +} + +- (void)testRemoveObjects_OneSelectedObject_AvoidingEmptySelection_PreservesSelection_ContentBinding +{ + [self _initTestRemoveObjects_ContentBinding]; + [self _testRemoveObjects_OneSelectedObject_AvoidingEmptySelection_PreservesSelection]; +} + +- (void)_testRemoveObjects_OneSelectedObject_AvoidingEmptySelection_PreservesSelection +{ + [_arrayController setAvoidsEmptySelection:YES]; + [_arrayController setPreservesSelection:YES]; + [_arrayController setSelectionIndex:5]; + + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [self assertTrue:[_arrayController selectionIndex] === 4]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 5]; + + [_arrayController removeObjectAtArrangedObjectIndex:5]; + [self assertTrue:[_arrayController selectionIndex] === 4]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 5]; + + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [self assertTrue:[_arrayController selectionIndex] === 4 message:"" + [_arrayController selectionIndex]]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 7]; + + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [_arrayController removeObjectAtArrangedObjectIndex:4]; + [self assertTrue:[_arrayController selectionIndex] === 3]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 3]; + + [_arrayController removeObjectAtArrangedObjectIndex:0]; + [_arrayController removeObjectAtArrangedObjectIndex:0]; + [_arrayController removeObjectAtArrangedObjectIndex:0]; + [self assertTrue:[_arrayController selectionIndex] === 0]; + [self assertTrue:[[[_arrayController selectedObjects] lastObject] objectForKey:@"number"] === 3]; + + [_arrayController removeObjectAtArrangedObjectIndex:0]; + [self assertTrue:[_arrayController selectionIndex] === CPNotFound]; +} + +- (void)testRemoveObjects_MultipleSelectedObjects_SimpleArray +{ + [self _initTestRemoveObjects_SimpleArray]; + [self _testRemoveObjects_MultipleSelectedObjects]; +} + +- (void)testRemoveObjects_MultipleSelectedObjects_ContentBinding +{ + [self _initTestRemoveObjects_ContentBinding]; + [self _testRemoveObjects_MultipleSelectedObjects]; +} + +- (void)_testRemoveObjects_MultipleSelectedObjects +{ + [_arrayController setAvoidsEmptySelection:NO]; + [_arrayController setPreservesSelection:NO]; + var indexes = [CPMutableIndexSet indexSet]; + [indexes addIndex:2]; + [indexes addIndex:4]; + [indexes addIndex:6]; + [indexes addIndex:8]; + [_arrayController setSelectionIndexes:indexes]; + + [_arrayController removeObjectAtArrangedObjectIndex:0]; + var indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:1]; + [indexes1 addIndex:3]; + [indexes1 addIndex:5]; + [indexes1 addIndex:7]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[2, 4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + [_arrayController removeObjectAtArrangedObjectIndex:1]; + indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:2]; + [indexes1 addIndex:4]; + [indexes1 addIndex:6]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + [_arrayController removeObjectAtArrangedObjectIndex:3]; + indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:2]; + [indexes1 addIndex:3]; + [indexes1 addIndex:5]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + var indexes2 = [CPMutableIndexSet indexSet]; + [indexes2 addIndex:2]; + [indexes2 addIndex:3]; + [indexes2 addIndex:5]; + [_arrayController removeObjectsAtArrangedObjectIndexes:indexes2]; + [self assertTrue:[[_arrayController selectionIndexes] lastIndex] === CPNotFound]; +} + +- (void)testRemoveObjects_MultipleSelectedObjects_AvoidingEmptySelection_SimpleArray +{ + [self _initTestRemoveObjects_SimpleArray]; + [self _testRemoveObjects_MultipleSelectedObjects_AvoidingEmptySelection]; +}/ + +- (void)testRemoveObjects_MultipleSelectedObjects_AvoidingEmptySelection_ContentBinding +{ + [self _initTestRemoveObjects_ContentBinding]; + [self _testRemoveObjects_MultipleSelectedObjects_AvoidingEmptySelection]; +} + +- (void)_testRemoveObjects_MultipleSelectedObjects_AvoidingEmptySelection +{ + [_arrayController setAvoidsEmptySelection:YES]; + [_arrayController setPreservesSelection:NO]; + var indexes = [CPMutableIndexSet indexSet]; + [indexes addIndex:2]; + [indexes addIndex:4]; + [indexes addIndex:6]; + [indexes addIndex:8]; + [_arrayController setSelectionIndexes:indexes]; + + [_arrayController removeObjectAtArrangedObjectIndex:0]; + var indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:1]; + [indexes1 addIndex:3]; + [indexes1 addIndex:5]; + [indexes1 addIndex:7]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[2, 4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + [_arrayController removeObjectAtArrangedObjectIndex:1]; + indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:2]; + [indexes1 addIndex:4]; + [indexes1 addIndex:6]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + [_arrayController removeObjectAtArrangedObjectIndex:3]; + indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:2]; + [indexes1 addIndex:3]; + [indexes1 addIndex:5]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + var indexes2 = [CPMutableIndexSet indexSet]; + [indexes2 addIndex:2]; + [indexes2 addIndex:3]; + [indexes2 addIndex:5]; + [_arrayController removeObjectsAtArrangedObjectIndexes:indexes2]; + [self assertTrue:[[_arrayController selectionIndexes] lastIndex] === 2]; + [self assert:[7] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; +} + +- (void)testRemoveObjects_MultipleSelectedObjects_PreservesSelection_SimpleArray +{ + [self _initTestRemoveObjects_SimpleArray]; + [self _testRemoveObjects_MultipleSelectedObjects_PreservesSelection]; +} + +- (void)testRemoveObjects_MultipleSelectedObjects_PreservesSelection_ContentBinding +{ + [self _initTestRemoveObjects_ContentBinding]; + [self _testRemoveObjects_MultipleSelectedObjects_PreservesSelection]; +} + +- (void)_testRemoveObjects_MultipleSelectedObjects_PreservesSelection +{ + [_arrayController setAvoidsEmptySelection:NO]; + [_arrayController setPreservesSelection:YES]; + var indexes = [CPMutableIndexSet indexSet]; + [indexes addIndex:2]; + [indexes addIndex:4]; + [indexes addIndex:6]; + [indexes addIndex:8]; + [_arrayController setSelectionIndexes:indexes]; + + [_arrayController removeObjectAtArrangedObjectIndex:0]; + var indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:1]; + [indexes1 addIndex:3]; + [indexes1 addIndex:5]; + [indexes1 addIndex:7]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[2, 4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + [_arrayController removeObjectAtArrangedObjectIndex:1]; + indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:2]; + [indexes1 addIndex:4]; + [indexes1 addIndex:6]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + [_arrayController removeObjectAtArrangedObjectIndex:3]; + indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:2]; + [indexes1 addIndex:3]; + [indexes1 addIndex:5]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + var indexes2 = [CPMutableIndexSet indexSet]; + [indexes2 addIndex:2]; + [indexes2 addIndex:3]; + [indexes2 addIndex:5]; + [_arrayController removeObjectsAtArrangedObjectIndexes:indexes2]; + [self assertTrue:[[_arrayController selectionIndexes] lastIndex] === CPNotFound]; +} + +- (void)testRemoveObjects_MultipleSelectedObjects_AvoidingEmptySelection_PreservesSelection_SimpleArray +{ + [self _initTestRemoveObjects_SimpleArray]; + [self _testRemoveObjects_MultipleSelectedObjects_AvoidingEmptySelection_PreservesSelection]; +} + +- (void)testRemoveObjects_MultipleSelectedObjects_AvoidingEmptySelection_PreservesSelection_ContentBinding +{ + [self _initTestRemoveObjects_ContentBinding]; + [self _testRemoveObjects_MultipleSelectedObjects_AvoidingEmptySelection_PreservesSelection]; +} + +- (void)_testRemoveObjects_MultipleSelectedObjects_AvoidingEmptySelection_PreservesSelection +{ + [_arrayController setAvoidsEmptySelection:YES]; + [_arrayController setPreservesSelection:YES]; + var indexes = [CPMutableIndexSet indexSet]; + [indexes addIndex:2]; + [indexes addIndex:4]; + [indexes addIndex:6]; + [indexes addIndex:8]; + [_arrayController setSelectionIndexes:indexes]; + + [_arrayController removeObjectAtArrangedObjectIndex:0]; + var indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:1]; + [indexes1 addIndex:3]; + [indexes1 addIndex:5]; + [indexes1 addIndex:7]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[2, 4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + [_arrayController removeObjectAtArrangedObjectIndex:1]; + indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:2]; + [indexes1 addIndex:4]; + [indexes1 addIndex:6]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + [_arrayController removeObjectAtArrangedObjectIndex:3]; + indexes1 = [CPMutableIndexSet indexSet]; + [indexes1 addIndex:2]; + [indexes1 addIndex:3]; + [indexes1 addIndex:5]; + [self assert:indexes1 equals:[_arrayController selectionIndexes]]; + [self assert:[4, 6, 8] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; + + var indexes2 = [CPMutableIndexSet indexSet]; + [indexes2 addIndex:2]; + [indexes2 addIndex:3]; + [indexes2 addIndex:5]; + [_arrayController removeObjectsAtArrangedObjectIndexes:indexes2]; + [self assertTrue:[[_arrayController selectionIndexes] lastIndex] === 2]; + [self assert:[7] equals:[[_arrayController selectedObjects] valueForKey:@"number"]]; } - (void)testRemoveObjectsWithoutSelection From 59e8160f18514dee3d4c0e3c890e1fe964725279 Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Mon, 6 Aug 2012 17:33:58 -0700 Subject: [PATCH 060/114] Added CPViewController -isViewLoaded, fixed CPWindowController -setViewController to use that Before this fix, CPWindowController -setViewController was unconditionally loading the view, which should not happen. --- AppKit/CPViewController.j | 26 ++++++++++++++++++++++++-- AppKit/CPWindowController.j | 14 +++++++++----- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/AppKit/CPViewController.j b/AppKit/CPViewController.j index 5f355c4c0..f6268b4dc 100644 --- a/AppKit/CPViewController.j +++ b/AppKit/CPViewController.j @@ -67,6 +67,7 @@ var CPViewControllerCachedCibs; CPView _view @accessors(property=view); BOOL _isLoading; BOOL _isLazy; + BOOL _isViewLoaded @accessors(getter=isViewLoaded); id _representedObject @accessors(property=representedObject); CPString _title @accessors(property=title); @@ -206,17 +207,24 @@ var CPViewControllerCachedCibs; [cibOwner viewControllerDidLoadCib:self]; _isLoading = NO; - [self viewDidLoad]; + [self _viewDidLoad]; } else if (_isLazy) { _isLazy = NO; - [self viewDidLoad]; + [self _viewDidLoad]; } return _view; } +- (void)_viewDidLoad +{ + [self willChangeValueForKey:"isViewLoaded"]; + [self viewDidLoad]; + isViewLoaded = YES; + [self didChangeValueForKey:"isViewLoaded"]; +} /*! This method is called after the view controller has loaded its associated views into memory. @@ -242,7 +250,21 @@ var CPViewControllerCachedCibs; */ - (void)setView:(CPView)aView { + var willChangeIsViewLoaded = (_isViewLoaded == NO && aView != nil) || (_isViewLoaded == YES && aView == nil); + + if (willChangeIsViewLoaded) + [self willChangeValueForKey:"isViewLoaded"]; + _view = aView; + _isViewLoaded = aView !== nil; + + if (willChangeIsViewLoaded) + [self didChangeValueForKey:"isViewLoaded"]; +} + +- (BOOL)automaticallyNotifiesObserversOfIsViewLoaded +{ + return NO; } @end diff --git a/AppKit/CPWindowController.j b/AppKit/CPWindowController.j index 0a2b7202a..5ddb02258 100644 --- a/AppKit/CPWindowController.j +++ b/AppKit/CPWindowController.j @@ -181,8 +181,7 @@ if (!_window) { - var reason = [CPString stringWithFormat:@"Window for %@ could not be loaded from Cib or no window specified. \ - Override loadWindow to load the window manually.", self]; + var reason = [CPString stringWithFormat:@"Window for %@ could not be loaded from Cib or no window specified. Override loadWindow to load the window manually.", self]; [CPException raise:CPInternalInconsistencyException reason:reason]; } @@ -336,18 +335,21 @@ if (!_viewControllerContainerView && !aView) return; - var viewControllerView = [[self viewController] view], + var viewController = [self viewController], + viewControllerView = [viewController isViewLoaded] ? [viewController view] : nil, contentView = [[self window] contentView]; if (aView) { [aView setFrame:[contentView frame]]; [aView setAutoresizingMask:[contentView autoresizingMask]]; + if (viewControllerView) { [viewControllerView removeFromSuperview]; [aView addSubview:viewControllerView]; } + [[self window] setContentView:aView]; } else if (viewControllerView) @@ -379,11 +381,12 @@ return; var containerView = [self viewControllerContainerView], - newView = [aViewController view]; + newView = [aViewController isViewLoaded] ? [aViewController view] : nil; if (containerView) { - var oldView = [_viewController view]; + var oldView = [_viewController isViewLoaded] ? [_viewController view] : nil; + if (oldView) { [newView setFrame:[oldView frame]]; @@ -408,6 +411,7 @@ { var view = [[CPView alloc] init], contentView = [[self window] contentView]; + [view setFrame:[contentView frame]]; [view setAutoresizingMask:[contentView autoresizingMask]]; [[self window] setContentView:view] From 41a6621ac256b3a95e147b3a01ff0ba99391c6ad Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 14:59:29 -0700 Subject: [PATCH 061/114] Make XCC generating .m files with @property for outlets This is step 1 to have XCC working with Xcode 4.4. --- Tools/XcodeCapp/TNXCodeCapp.m | 5 +++-- Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj | 10 ++++++---- .../xcschemes/xcschememanagement.plist | 5 +++++ Tools/XcodeCapp/parser.j | 10 ++++++---- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Tools/XcodeCapp/TNXCodeCapp.m b/Tools/XcodeCapp/TNXCodeCapp.m index ffaab9dac..27a777518 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.m +++ b/Tools/XcodeCapp/TNXCodeCapp.m @@ -392,6 +392,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification if ([self isObjJFile:fullPath]) { NSString *shadowPath = [[self shadowURLForSourceURL:[NSURL URLWithString:[fullPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]] path]; + [fm removeItemAtPath:shadowPath error:nil]; DLog(@"Removing shadow file: %@", shadowPath); } @@ -557,7 +558,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification range:NSMakeRange(0, [flattenedPath length])]; DLog(@"Flattened path: %@", flattenedPath); - NSString *basename = [NSString stringWithFormat:@"%@.h", [[flattenedPath stringByDeletingPathExtension] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + NSString *basename = [NSString stringWithFormat:@"%@.m", [[flattenedPath stringByDeletingPathExtension] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; return [NSURL URLWithString:basename relativeToURL:XCodeSupportProjectSources]; } @@ -576,7 +577,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification options:0 range:NSMakeRange(0, [unshadowedPath length])]; - [unshadowedPath replaceOccurrencesOfString:@".h" + [unshadowedPath replaceOccurrencesOfString:@".m" withString:@".j" options:0 range:NSMakeRange(0, [unshadowedPath length])]; diff --git a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj index cdfdfecf2..7467e0769 100644 --- a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj +++ b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj @@ -45,7 +45,7 @@ /* Begin PBXFileReference section */ 022BCEA61468632000B72910 /* project.pbxproj.sample */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = project.pbxproj.sample; sourceTree = ""; }; - 024A041113699D6800DCBE4D /* parser.j */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj; path = parser.j; sourceTree = ""; }; + 024A041113699D6800DCBE4D /* parser.j */ = {isa = PBXFileReference; explicitFileType = sourcecode.javascript; fileEncoding = 4; path = parser.j; sourceTree = ""; }; 026F3B6113866B0B00EE5B83 /* xcodecapp-icon-inactive.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "xcodecapp-icon-inactive.png"; sourceTree = ""; }; 026F3B6413866E7D00EE5B83 /* xcodecapp-icon-active.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "xcodecapp-icon-active.png"; sourceTree = ""; }; 027D9989136969DD00D3DB13 /* XcodeCapp.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XcodeCapp.pch; sourceTree = ""; }; @@ -209,7 +209,7 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0420; + LastUpgradeCheck = 0440; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "XcodeCapp" */; compatibilityVersion = "Xcode 3.2"; @@ -286,6 +286,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -307,6 +308,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -336,7 +338,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 10.5; ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx10.6; + SDKROOT = macosx; }; name = Debug; }; @@ -352,7 +354,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 10.5; ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx10.6; + SDKROOT = macosx; }; name = Release; }; diff --git a/Tools/XcodeCapp/XcodeCapp.xcodeproj/xcuserdata/Tonio.xcuserdatad/xcschemes/xcschememanagement.plist b/Tools/XcodeCapp/XcodeCapp.xcodeproj/xcuserdata/Tonio.xcuserdatad/xcschemes/xcschememanagement.plist index 06978ff0b..202513f40 100644 --- a/Tools/XcodeCapp/XcodeCapp.xcodeproj/xcuserdata/Tonio.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Tools/XcodeCapp/XcodeCapp.xcodeproj/xcuserdata/Tonio.xcuserdatad/xcschemes/xcschememanagement.plist @@ -14,6 +14,11 @@ orderHint 1 + XcodeCapp.xcscheme + + orderHint + 0 + SuppressBuildableAutocreation diff --git a/Tools/XcodeCapp/parser.j b/Tools/XcodeCapp/parser.j index 25067a9d2..4cefc00de 100644 --- a/Tools/XcodeCapp/parser.j +++ b/Tools/XcodeCapp/parser.j @@ -86,7 +86,7 @@ function main(args) types[anIndex] = NSCompatibleClassName(aType, YES); }); - outlets.push(" " + types.join(" ") + " " + ivar_getName(anIvar) + ";"); + outlets.push("@property (assign) " + types.join(" ") + " " + ivar_getName(anIvar) + ";"); } }); @@ -107,11 +107,13 @@ function main(args) ObjectiveCSource += "\n@interface " + class_getName(aClass) + (superClassName === "Nil" ? "" : (" : " + NSCompatibleClassName(superClassName))) + - "\n{\n" + + "\n\n" + outlets.join("\n") + - "\n}\n" + + "\n" + actions.join("\n") + - "\n@end"; + "\n@end\n\n"+ + "\n@implementation " + class_getName(aClass) + + "\n@end\n"; }); if (ObjectiveCSource.length) From b0b084dbe80ee301c3b1519cf6d34c81473862d7 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 16:02:00 -0700 Subject: [PATCH 062/114] add necessary imports --- Tools/XcodeCapp/parser.j | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Tools/XcodeCapp/parser.j b/Tools/XcodeCapp/parser.j index 4cefc00de..f765fb598 100644 --- a/Tools/XcodeCapp/parser.j +++ b/Tools/XcodeCapp/parser.j @@ -105,6 +105,8 @@ function main(args) superClassName = superClasses[className]; ObjectiveCSource += + "#import \n" + + "#import \n" + "\n@interface " + class_getName(aClass) + (superClassName === "Nil" ? "" : (" : " + NSCompatibleClassName(superClassName))) + "\n\n" + From 0fd0a05cd1589543b9551e0169c6817c37d68ec0 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 19:03:44 -0700 Subject: [PATCH 063/114] basic support for removing a reference of a file --- Tools/XcodeCapp/mod_pbxproj.py | 967 +++++++++++++++++++++++++++++++++ 1 file changed, 967 insertions(+) create mode 100755 Tools/XcodeCapp/mod_pbxproj.py diff --git a/Tools/XcodeCapp/mod_pbxproj.py b/Tools/XcodeCapp/mod_pbxproj.py new file mode 100755 index 000000000..ab0acf469 --- /dev/null +++ b/Tools/XcodeCapp/mod_pbxproj.py @@ -0,0 +1,967 @@ +# Copyright 2012 Calvin Rien +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A pbxproj file is an OpenStep format plist +# {} represents dictionary of key=value pairs delimited by ; +# () represents list of values delimited by , +# file starts with a comment specifying the character type +# // !$*UTF8*$! + +# when adding a file to a project, create the PBXFileReference +# add the PBXFileReference's guid to a group +# create a PBXBuildFile with the PBXFileReference's guid +# add the PBXBuildFile to the appropriate build phase + +# when adding a header search path add +# HEADER_SEARCH_PATHS = "path/**"; +# to each XCBuildConfiguration object + +# Xcode4 will read either a OpenStep or XML plist. +# this script uses `plutil` to validate, read and write +# the pbxproj file. Plutil is available in OS X 10.2 and higher +# Plutil can't write OpenStep plists, so I save as XML + +import re, uuid, sys, os, shutil, subprocess, datetime, json + +from UserDict import IterableUserDict +from UserList import UserList + +class PBXEncoder(json.JSONEncoder): + + def default(self, obj): + """Tests the input object, obj, to encode as JSON.""" + + if isinstance(obj, (PBXList, PBXDict)): + return obj.data + + return json.JSONEncoder.default(self, obj) + + +class PBXDict(IterableUserDict): + def __init__(self, d=None): + if d: + d = dict([(PBXType.Convert(k),PBXType.Convert(v)) for k,v in d.items()]) + + IterableUserDict.__init__(self, d) + + def __setitem__(self, key, value): + IterableUserDict.__setitem__(self, PBXType.Convert(key), PBXType.Convert(value)) + + def remove(self, key): + self.data.pop(PBXType.Convert(key), None) + + + +class PBXList(UserList): + def __init__(self, l=None): + if isinstance(l, basestring): + UserList.__init__(self) + self.add(l) + return + elif l: + l = [PBXType.Convert(v) for v in l] + + UserList.__init__(self, l) + + def add(self, value): + value = PBXType.Convert(value) + + if value in self.data: + return False + + self.data.append(value) + return True + + def remove(self, value): + value = PBXType.Convert(value) + + if value in self.data: + self.data.remove(value) + + def __setitem__(self, key, value): + UserList.__setitem__(self, PBXType.Convert(key), PBXType.Convert(value)) + + +class PBXType(PBXDict): + def __init__(self, d=None): + PBXDict.__init__(self, d) + + if not self.has_key('isa'): + self['isa'] = self.__class__.__name__ + self.id = None + + @staticmethod + def Convert(o): + if isinstance(o, list): + return PBXList(o) + elif isinstance(o, dict): + isa = o.get('isa') + + if not isa: + return PBXDict(o) + + cls = globals().get(isa) + + if cls and issubclass(cls, PBXType): + return cls(o) + + print 'warning: unknown PBX type: %s' % isa + return PBXDict(o) + else: + return o + + @staticmethod + def IsGuid(o): + return re.match('^[A-F0-9]{24}$', str(o)) + + @classmethod + def GenerateId(cls): + return ''.join(str(uuid.uuid4()).upper().split('-')[1:]) + + @classmethod + def Create(cls, *args, **kwargs): + return cls(*args, **kwargs) + + +class PBXFileReference(PBXType): + def __init__(self, d=None): + PBXType.__init__(self, d) + self.build_phase = None + + types = { + '.a':('archive.ar', 'PBXFrameworksBuildPhase'), + '.app': ('wrapper.application', None), + '.s': ('sourcecode.asm', 'PBXSourcesBuildPhase'), + '.c': ('sourcecode.c.c', 'PBXSourcesBuildPhase'), + '.cpp': ('sourcecode.cpp.cpp', 'PBXSourcesBuildPhase'), + '.framework': ('wrapper.framework','PBXFrameworksBuildPhase'), + '.h': ('sourcecode.c.h', None), + '.icns': ('image.icns','PBXResourcesBuildPhase'), + '.m': ('sourcecode.c.objc', 'PBXSourcesBuildPhase'), + '.mm': ('sourcecode.cpp.objcpp', 'PBXSourcesBuildPhase'), + '.nib': ('wrapper.nib', 'PBXResourcesBuildPhase'), + '.plist': ('text.plist.xml', 'PBXResourcesBuildPhase'), + '.png': ('image.png', 'PBXResourcesBuildPhase'), + '.rtf': ('text.rtf', 'PBXResourcesBuildPhase'), + '.tiff': ('image.tiff', 'PBXResourcesBuildPhase'), + '.txt': ('text', 'PBXResourcesBuildPhase'), + '.xcodeproj': ('wrapper.pb-project', None), + '.xib': ('file.xib', 'PBXResourcesBuildPhase'), + '.strings': ('text.plist.strings', 'PBXResourcesBuildPhase'), + '.bundle': ('wrapper.plug-in', 'PBXResourcesBuildPhase'), + '.dylib': ('compiled.mach-o.dylib', 'PBXFrameworksBuildPhase') + } + + trees = [ + '', + '', + 'BUILT_PRODUCTS_DIR', + 'DEVELOPER_DIR', + 'SDKROOT', + 'SOURCE_ROOT', + ] + + def guess_file_type(self): + self.remove('explicitFileType') + self.remove('lastKnownFileType') + ext = os.path.splitext(self.get('name', ''))[1] + + f_type, build_phase = PBXFileReference.types.get(ext, ('?', None)) + + self['lastKnownFileType'] = f_type + self.build_phase = build_phase + + if f_type == '?': + print 'unknown file extension: %s' % ext + print 'please add extension and Xcode type to PBXFileReference.types' + + return f_type + + def set_file_type(self, ft): + self.remove('explicitFileType') + self.remove('lastKnownFileType') + + self['explicitFileType'] = ft + + @classmethod + def Create(cls, os_path, tree='SOURCE_ROOT'): + if tree not in cls.trees: + print 'Not a valid sourceTree type: %s' % tree + return None + + fr = cls() + fr.id = cls.GenerateId() + fr['path'] = os_path + fr['name'] = os.path.split(os_path)[1] + fr['sourceTree'] = '' if os.path.isabs(os_path) else tree + fr.guess_file_type() + + return fr + +class PBXBuildFile(PBXType): + def set_weak_link(self, weak=False): + k_settings = 'settings' + k_attributes = 'ATTRIBUTES' + + s = self.get(k_settings) + + if not s: + if weak: + self[k_settings] = PBXDict({k_attributes:PBXList(['Weak'])}) + + return True + + atr = s.get(k_attributes) + + if not atr: + if weak: + atr = PBXList() + else: + return False + + if weak: + atr.add('Weak') + else: + atr.remove('Weak') + + self[k_settings][k_attributes] = atr + + return True + + def add_compiler_flag(self, flag): + k_settings = 'settings' + k_attributes = 'COMPILER_FLAGS' + + if not self.has_key(k_settings): + self[k_settings] = PBXDict() + + if not self[k_settings].has_key(k_attributes): + self[k_settings][k_attributes] = flag + return True + + flags = self[k_settings][k_attributes].split(' ') + + if flag in flags: + return False + + flags.append(flag) + + self[k_settings][k_attributes] = ' '.join(flags) + + @classmethod + def Create(cls, file_ref, weak=False): + if isinstance(file_ref, PBXFileReference): + file_ref = file_ref.id + + bf = cls() + bf.id = cls.GenerateId() + bf['fileRef'] = file_ref + + if weak: + bf.set_weak_link(True) + + return bf + +class PBXGroup(PBXType): + def add_child(self, ref): + if not isinstance(ref, PBXDict): + return None + + isa = ref.get('isa') + + if isa != 'PBXFileReference' and isa != 'PBXGroup': + return None + + if not self.has_key('children'): + self['children'] = PBXList() + + self['children'].add(ref.id) + + return ref.id + + def remove_child(self, id): + if not self.has_key('children'): + self['children'] = PBXList() + return + + if not PBXType.IsGuid(id): + id = id.id + + self['children'].remove(id) + + def has_child(self, id): + if not self.has_key('children'): + self['children'] = PBXList() + return False + + if not PBXType.IsGuid(id): + id = id.id + + return id in self['children'] + + def get_name(self): + path_name = os.path.split(self.get('path',''))[1] + return self.get('name', path_name) + + @classmethod + def Create(cls, name, path=None, tree='SOURCE_ROOT'): + grp = cls() + grp.id = cls.GenerateId() + grp['name'] = name + grp['children'] = PBXList() + + if path: + grp['path'] = path + grp['sourceTree'] = tree + else: + grp['sourceTree'] = '' + + return grp + + +class PBXNativeTarget(PBXType): + pass + + +class PBXProject(PBXType): + pass + + +class PBXContainerItemProxy(PBXType): + pass + + +class PBXReferenceProxy(PBXType): + pass + + +class PBXVariantGroup(PBXType): + pass + + +class PBXBuildPhase(PBXType): + def add_build_file(self, bf): + if bf.get('isa') != 'PBXBuildFile': + return False + + if not self.has_key('files'): + self['files'] = PBXList() + + self['files'].add(bf.id) + + return True + + def remove_build_file(self, id): + if not self.has_key('files'): + self['files'] = PBXList() + return + + self['files'].remove(id) + + def has_build_file(self, id): + if not self.has_key('files'): + self['files'] = PBXList() + return False + + if not PBXType.IsGuid(id): + id = id.id + + return id in self['files'] + + +class PBXFrameworksBuildPhase(PBXBuildPhase): + pass + + +class PBXResourcesBuildPhase(PBXBuildPhase): + pass + + +class PBXShellScriptBuildPhase(PBXBuildPhase): + pass + + +class PBXSourcesBuildPhase(PBXBuildPhase): + pass + + +class PBXCopyFilesBuildPhase(PBXBuildPhase): + pass + + +class XCBuildConfiguration(PBXType): + def add_search_paths(self, paths, base, key, recursive=True): + modified = False + + if not isinstance(paths, list): + paths = [paths] + + if not self.has_key(base): + self[base] = PBXDict() + + for path in paths: + if recursive and not path.endswith('/**'): + path = os.path.join(path, '**') + + if not self[base].has_key(key): + self[base][key] = PBXList() + elif isinstance(self[base][key], basestring): + self[base][key] = PBXList(self[base][key]) + + if self[base][key].add('\\"%s\\"' % path): + modified = True + + return modified + + def add_header_search_paths(self, paths, recursive=True): + return self.add_search_paths(paths, 'buildSettings', 'HEADER_SEARCH_PATHS', recursive=recursive) + + def add_library_search_paths(self, paths, recursive=True): + return self.add_search_paths(paths, 'buildSettings', 'LIBRARY_SEARCH_PATHS', recursive=recursive) + + def add_other_cflags(self, flags): + modified = False + + base = 'buildSettings' + key = 'OTHER_CFLAGS' + + if isinstance(flags, basestring): + flags = PBXList(flags) + + if not self.has_key(base): + self[base] = PBXDict() + + for flag in flags: + + if not self[base].has_key(key): + self[base][key] = PBXList() + elif isinstance(self[base][key], basestring): + self[base][key] = PBXList(self[base][key]) + + if self[base][key].add(flag): + self[base][key] = [e for e in self[base][key] if e] + modified = True + + return modified + + +class XCConfigurationList(PBXType): + pass + + +class XcodeProject(PBXDict): + plutil_path = 'plutil' + special_folders = ['.bundle', '.framework', '.xcodeproj'] + + def __init__(self, d=None, path=None): + if not path: + path = os.path.join(os.getcwd(), 'project.pbxproj') + + self.pbxproj_path =os.path.abspath(path) + self.source_root = os.path.abspath(os.path.join(os.path.split(path)[0], '..')) + + IterableUserDict.__init__(self, d) + + self.data = PBXDict(self.data) + self.objects = self.get('objects') + self.modified = False + + root_id = self.get('rootObject') + if root_id: + self.root_object = self.objects[root_id] + root_group_id = self.root_object.get('mainGroup') + self.root_group = self.objects[root_group_id] + else: + print "error: project has no root object" + self.root_object = None + self.root_group = None + + for k,v in self.objects.iteritems(): + v.id = k + + def add_other_cflags(self, flags): + build_configs = [b for b in self.objects.values() if b.get('isa') == 'XCBuildConfiguration'] + + for b in build_configs: + if b.add_other_cflags(flags): + self.modified = True + + def add_header_search_paths(self, paths, recursive=True): + build_configs = [b for b in self.objects.values() if b.get('isa') == 'XCBuildConfiguration'] + + for b in build_configs: + if b.add_header_search_paths(paths, recursive): + self.modified = True + + def add_library_search_paths(self, paths, recursive=True): + build_configs = [b for b in self.objects.values() if b.get('isa') == 'XCBuildConfiguration'] + + for b in build_configs: + if b.add_library_search_paths(paths, recursive): + self.modified = True + + # TODO: need to return value if project has been modified + + def get_obj(self, id): + return self.objects.get(id) + + def get_files_by_os_path(self, os_path, tree='SOURCE_ROOT'): + files = [f for f in self.objects.values() if f.get('isa') == 'PBXFileReference' + and f.get('path') == os_path] + + return files + + def get_files_by_name(self, name, parent=None): + if parent: + files = [f for f in self.objects.values() if f.get('isa') == 'PBXFileReference' + and f.get(name) == name + and parent.has_child(f)] + else: + files = [f for f in self.objects.values() if f.get('isa') == 'PBXFileReference' + and f.get(name) == name] + + return files + + def get_build_files(self, id): + files = [f for f in self.objects.values() if f.get('isa') == 'PBXBuildFile' + and f.get('fileRef') == id] + + return files + + def get_groups_by_name(self, name, parent=None): + if parent: + groups = [g for g in self.objects.values() if g.get('isa') == 'PBXGroup' + and g.get_name() == name + and parent.has_child(g)] + else: + groups = [g for g in self.objects.values() if g.get('isa') == 'PBXGroup' + and g.get_name() == name] + + return groups + + def get_or_create_group(self, name, path=None, parent=None): + if not name: + return None + + if not parent: + parent = self.root_group + elif not isinstance(parent, PBXGroup): + # assume it's an id + parent = self.objects.get(parent, self.root_group) + + groups = self.get_groups_by_name(name) + + for grp in groups: + if parent.has_child(grp.id): + return grp + + grp = PBXGroup.Create(name, path) + parent.add_child(grp) + + self.objects[grp.id] = grp + + self.modified = True + + return grp + + def get_groups_by_os_path(self, path): + path = os.path.abspath(path) + + groups = [g for g in self.objects.values() if g.get('isa') == 'PBXGroup' + and os.path.abspath(g.get('path','/dev/null')) == path] + + return groups + + def get_build_phases(self, phase_name): + phases = [p for p in self.objects.values() if p.get('isa') == phase_name] + + return phases + + def get_relative_path(self, os_path): + return os.path.relpath(os_path, self.source_root) + + def verify_files(self, file_list, parent=None): + # returns list of files not in the current project. + if not file_list: + return [] + + if parent: + exists_list = [f.get('name') for f in self.objects.values() if f.get('isa') == 'PBXFileReference' and f.get('name') in file_list and parent.has_child(f)] + else: + exists_list = [f.get('name') for f in self.objects.values() if f.get('isa') == 'PBXFileReference' and f.get('name') in file_list] + + return set(file_list).difference(exists_list) + + def add_folder(self, os_path, parent=None, excludes=None, recursive=True, create_build_files=True): + if not os.path.isdir(os_path): + return [] + + if not excludes: + excludes = [] + + results = [] + + if not parent: + parent = self.root_group + elif not isinstance(parent, PBXGroup): + # assume it's an id + parent = self.objects.get(parent, self.root_group) + + path_dict = {os.path.split(os_path)[0]:parent} + special_list = [] + + for (grp_path, subdirs, files) in os.walk(os_path): + parent_folder, folder_name = os.path.split(grp_path) + parent = path_dict.get(parent_folder, parent) + + if [sp for sp in special_list if parent_folder.startswith(sp)]: + continue + + if folder_name.startswith('.'): + special_list.append(grp_path) + continue + + if os.path.splitext(grp_path)[1] in XcodeProject.special_folders: + # if this file has a special extension (bundle or framework mainly) treat it as a file + special_list.append(grp_path) + + new_files = self.verify_files([folder_name], parent=parent) + + if new_files: + results.extend(self.add_file(grp_path, parent, create_build_files=create_build_files)) + + continue + + # create group + grp = self.get_or_create_group(folder_name, path=self.get_relative_path(grp_path) , parent=parent) + path_dict[grp_path] = grp + + results.append(grp) + + file_dict = {} + + for f in files: + if f[0] == '.' or [m for m in excludes if re.match(m,f)]: + continue + + kwds = { + 'create_build_files': create_build_files, + 'parent': grp, + 'name': f + } + + f_path = os.path.join(grp_path, f) + + file_dict[f_path] = kwds + + new_files = self.verify_files([n.get('name') for n in file_dict.values()], parent=grp) + + add_files = [(k,v) for k,v in file_dict.items() if v.get('name') in new_files] + + for path, kwds in add_files: + kwds.pop('name', None) + + self.add_file(path, **kwds) + + if not recursive: + break + + for r in results: + self.objects[r.id] = r + + return results + + def add_file(self, f_path, parent=None, tree='SOURCE_ROOT', create_build_files=True, weak=False): + results = [] + + abs_path = '' + + if os.path.isabs(f_path): + abs_path = f_path + + if not os.path.exists(f_path): + return results + elif tree == 'SOURCE_ROOT': + f_path = os.path.relpath(f_path, self.source_root) + else: + tree = '' + + if not parent: + parent = self.root_group + elif not isinstance(parent, PBXGroup): + # assume it's an id + parent = self.objects.get(parent, self.root_group) + + file_ref = PBXFileReference.Create(f_path, tree) + parent.add_child(file_ref) + results.append(file_ref) + # create a build file for the file ref + if file_ref.build_phase and create_build_files: + phases = self.get_build_phases(file_ref.build_phase) + + for phase in phases: + build_file = PBXBuildFile.Create(file_ref, weak=weak) + + phase.add_build_file(build_file) + results.append(build_file) + + if abs_path and tree == 'SOURCE_ROOT' and os.path.isfile(abs_path)\ + and file_ref.build_phase == 'PBXFrameworksBuildPhase': + + library_path = os.path.join('$(SRCROOT)', os.path.split(f_path)[0]) + + self.add_library_search_paths([library_path], recursive=False) + + for r in results: + self.objects[r.id] = r + + if results: + self.modified = True + + return results + + def remove_group(self, grp): + pass + + def remove_file(self, path, parent): + files = self.get_files_by_os_path(path) + del self.objects[files[0].id] + self.modified = True + + def move_file(self, id, dest_grp=None): + pass + + def apply_patch(self, patch_path, xcode_path): + if not os.path.isfile(patch_path) or not os.path.isdir(xcode_path): + print 'ERROR: couldn\'t apply "%s" to "%s"' % (patch_path, xcode_path) + return + + print 'applying "%s" to "%s"' % (patch_path, xcode_path) + + return subprocess.call(['patch', '-p1', '--forward', '--directory=%s'%xcode_path, '--input=%s'%patch_path]) + + def apply_mods(self, mod_dict, default_path=None): + if not default_path: + default_path = os.getcwd() + + keys = mod_dict.keys() + + for k in keys: + v = mod_dict.pop(k) + + mod_dict[k.lower()] = v + + parent = mod_dict.pop('group', None) + + if parent: + parent = self.get_or_create_group(parent) + + excludes = mod_dict.pop('excludes', []) + + if excludes: + excludes = [re.compile(e) for e in excludes] + + compiler_flags = mod_dict.pop('compiler_flags', {}) + + for k,v in mod_dict.items(): + if k == 'patches': + for p in v: + if not os.path.isabs(p): + p = os.path.join(default_path, p) + + self.apply_patch(p, self.source_root) + elif k == 'folders': + # get and compile excludes list + # do each folder individually + for folder in v: + kwds = {} + + # if path contains ':' remove it and set recursive to False + if ':' in folder: + args = folder.split(':') + kwds['recursive'] = False + folder = args.pop(0) + + if os.path.isabs(folder) and os.path.isdir(folder): + pass + else: + folder = os.path.join(default_path, folder) + if not os.path.isdir(folder): + continue + + if parent: + kwds['parent'] = parent + + if excludes: + kwds['excludes'] = excludes + + self.add_folder(folder, **kwds) + elif k == 'headerpaths' or k == 'librarypaths': + paths = [] + + for p in v: + if p.endswith('/**'): + p = os.path.split(p)[0] + + if not os.path.isabs(p): + p = os.path.join(default_path, p) + + if not os.path.exists(p): + continue + + p = self.get_relative_path(p) + + paths.append(os.path.join('$(SRCROOT)', p, "**")) + + if k == 'headerpaths': + self.add_header_search_paths(paths) + else: + self.add_library_search_paths(paths) + elif k == 'other_cflags': + self.add_other_cflags(v) + elif k == 'libs' or k == 'frameworks' or k == 'files': + paths = {} + + for p in v: + kwds = {} + + if ':' in p: + args = p.split(':') + p = args.pop(0) + + if 'weak' in args: + kwds['weak'] = True + + file_path = os.path.join(default_path, p) + search_path, file_name = os.path.split(file_path) + + if [m for m in excludes if re.match(m,file_name)]: + continue + + try: + expr = re.compile(file_name) + except re.error: + expr = None + + if expr and os.path.isdir(search_path): + file_list = os.listdir(search_path) + + for f in file_list: + if [m for m in excludes if re.match(m,f)]: + continue + + if re.search(expr,f): + kwds['name'] = f + paths[os.path.join(search_path, f)] = kwds + p = None + + if k == 'libs': + kwds['parent'] = self.get_or_create_group('Libraries', parent=parent) + elif k == 'frameworks': + kwds['parent'] = self.get_or_create_group('Frameworks', parent=parent) + + if p: + kwds['name'] = file_name + + if k == 'libs': + p = os.path.join('usr','lib',p) + kwds['tree'] = 'SDKROOT' + elif k == 'frameworks': + p = os.path.join('System','Library','Frameworks',p) + kwds['tree'] = 'SDKROOT' + elif k == 'files' and not os.path.exists(file_path): + # don't add non-existent files to the project. + continue + + paths[p] = kwds + + new_files = self.verify_files([n.get('name') for n in paths.values()]) + + add_files = [(k,v) for k,v in paths.items() if v.get('name') in new_files] + + for path, kwds in add_files: + kwds.pop('name', None) + + if not kwds.has_key('parent') and parent: + kwds['parent'] = parent + + self.add_file(path, **kwds) + + if compiler_flags: + for k,v in compiler_flags.items(): + filerefs = [] + + for f in v: + filerefs.extend([fr.id for fr in self.objects.values() if fr.get('isa') == 'PBXFileReference' + and fr.get('name') == f]) + + + buildfiles = [bf for bf in self.objects.values() if bf.get('isa') == 'PBXBuildFile' + and bf.get('fileRef') in filerefs] + + for bf in buildfiles: + if bf.add_compiler_flag(k): + self.modified = True + + + def backup(self, file_name=None): + if not file_name: + file_name = self.pbxproj_path + + backup_name = "%s.%s.backup" % (file_name, datetime.datetime.now().strftime('%d%m%y-%H%M%S')) + + shutil.copy2(file_name, backup_name) + + def save(self, file_name=None): + if not file_name: + file_name = self.pbxproj_path + + # JSON serialize the project and convert that json to an xml plist + p = subprocess.Popen([XcodeProject.plutil_path, '-convert', 'xml1', '-o', file_name, '-'], stdin=subprocess.PIPE) + p.communicate(PBXEncoder().encode(self.data)) + + @classmethod + def Load(cls, path): + cls.plutil_path = os.path.join(os.path.split(__file__)[0], 'plutil') + + if not os.path.isfile(XcodeProject.plutil_path): + cls.plutil_path = 'plutil' + + if subprocess.call([XcodeProject.plutil_path,'-lint','-s',path]): + print 'ERROR: not a valid .pbxproj file' + return None + + # load project by converting to JSON and parse + p = subprocess.Popen([XcodeProject.plutil_path, '-convert', 'json', '-o', '-', path], stdout=subprocess.PIPE) + tree = json.loads(p.communicate()[0]) + + return XcodeProject(tree, path) + + +def test(argv=None): + if not argv: + argv = sys.argv + + proj = XcodeProject.Load('../../Build/Unity-iPhone.xcodeproj/project.pbxproj') + + proj.add_folder('../Assets/Editor/Airship/UI/Default/StoreFront') + + proj.add_file('../Assets/Editor/Airship/libUAirship-1.1.4.a') + proj.add_file('../Assets/Plugins/Airship/AirshipConfig.plist') + + proj.backup() + proj.save() + + print str(proj) + From 88287c6c2d0e5d5e0048eafba9798f76a2b06bd4 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 19:04:04 -0700 Subject: [PATCH 064/114] add attribute to hold the pbxmodifier script --- Tools/XcodeCapp/TNXCodeCapp.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Tools/XcodeCapp/TNXCodeCapp.h b/Tools/XcodeCapp/TNXCodeCapp.h index 51c507de3..bc61a04dd 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.h +++ b/Tools/XcodeCapp/TNXCodeCapp.h @@ -40,6 +40,7 @@ extern NSString * const XCCListeningStartNotification; NSString *XCodeSupportProjectName; NSString *XCodeTemplatePBXPath; NSString *profilePath; + NSString *PBXModifierScriptPath; NSURL *currentProjectURL; NSURL *XCodeSupportFolder; NSURL *XCodeSupportProject; From cc18a5d3e275e5f4c7c762c3f9f13765bc49507f Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 19:04:30 -0700 Subject: [PATCH 065/114] Update default PBXProj --- Tools/XcodeCapp/project.pbxproj.sample | 149 ++----------------------- 1 file changed, 11 insertions(+), 138 deletions(-) diff --git a/Tools/XcodeCapp/project.pbxproj.sample b/Tools/XcodeCapp/project.pbxproj.sample index 88efdb71f..b2530d0f0 100644 --- a/Tools/XcodeCapp/project.pbxproj.sample +++ b/Tools/XcodeCapp/project.pbxproj.sample @@ -8,28 +8,16 @@ /* Begin PBXBuildFile section */ 9EEC4498135749D200615446 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EEC4497135749D200615446 /* Cocoa.framework */; }; - 9EEC44B5135749D300615446 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EEC4497135749D200615446 /* Cocoa.framework */; }; - 9EEC44CC13574A0B00615446 /* ${CappuccinoProjectName} in Resources */ = {isa = PBXBuildFile; fileRef = 9EEC44CB13574A0B00615446 /* ${CappuccinoProjectName} */; }; + 9EEC44CC13574A0B00615446 /* CappuccinoRessource in Resources */ = {isa = PBXBuildFile; fileRef = 9EEC44CB13574A0B00615446 /* CappuccinoRessource */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 9EEC44B6135749D300615446 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 9EEC448A135749D200615446 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 9EEC4492135749D200615446; - remoteInfo = Another; - }; -/* End PBXContainerItemProxy section */ - /* Begin PBXFileReference section */ 9EEC4493135749D200615446 /* Another.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Another.app; sourceTree = BUILT_PRODUCTS_DIR; }; 9EEC4497135749D200615446 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 9EEC449A135749D300615446 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 9EEC449B135749D300615446 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 9EEC449C135749D300615446 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 9EEC44B4135749D300615446 /* AnotherTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AnotherTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; - 9EEC44CB13574A0B00615446 /* ${CappuccinoProjectName} */ = {isa = PBXFileReference; lastKnownFileType = folder; name = ${CappuccinoProjectName}; path = ${CappuccinoProjectRelativePath}; sourceTree = ""; }; + 9EEC44CB13574A0B00615446 /* CappuccinoRessource */ = {isa = PBXFileReference; lastKnownFileType = folder; name = CappuccinoRessource; path = Resources; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -41,21 +29,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9EEC44B0135749D300615446 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 9EEC44B5135749D300615446 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 9EEC4488135749D200615446 = { isa = PBXGroup; children = ( - 9EEC44CB13574A0B00615446 /* ${CappuccinoProjectName} */, + 9EEC44CB13574A0B00615446 /* CappuccinoRessource */, 9EEC4496135749D200615446 /* Frameworks */, 9EEC4494135749D200615446 /* Products */, ); @@ -65,7 +45,6 @@ isa = PBXGroup; children = ( 9EEC4493135749D200615446 /* Another.app */, - 9EEC44B4135749D300615446 /* AnotherTests.octest */, ); name = Products; sourceTree = ""; @@ -109,34 +88,16 @@ productReference = 9EEC4493135749D200615446 /* Another.app */; productType = "com.apple.product-type.application"; }; - 9EEC44B3135749D300615446 /* AnotherTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9EEC44C8135749D300615446 /* Build configuration list for PBXNativeTarget "AnotherTests" */; - buildPhases = ( - 9EEC44AF135749D300615446 /* Sources */, - 9EEC44B0135749D300615446 /* Frameworks */, - 9EEC44B1135749D300615446 /* Resources */, - 9EEC44B2135749D300615446 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 9EEC44B7135749D300615446 /* PBXTargetDependency */, - ); - name = AnotherTests; - productName = AnotherTests; - productReference = 9EEC44B4135749D300615446 /* AnotherTests.octest */; - productType = "com.apple.product-type.bundle"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 9EEC448A135749D200615446 /* Project object */ = { isa = PBXProject; attributes = { + LastUpgradeCheck = 0440; ORGANIZATIONNAME = "280 North, Inc."; }; - buildConfigurationList = 9EEC448D135749D200615446 /* Build configuration list for PBXProject "Another" */; + buildConfigurationList = 9EEC448D135749D200615446 /* Build configuration list for PBXProject "XCCSampleProj" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; @@ -149,7 +110,6 @@ projectRoot = ""; targets = ( 9EEC4492135749D200615446 /* Another */, - 9EEC44B3135749D300615446 /* AnotherTests */, ); }; /* End PBXProject section */ @@ -159,35 +119,12 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9EEC44CC13574A0B00615446 /* ${CappuccinoProjectName} in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9EEC44B1135749D300615446 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( + 9EEC44CC13574A0B00615446 /* CappuccinoRessource in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 9EEC44B2135749D300615446 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 9EEC448F135749D200615446 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -196,23 +133,8 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9EEC44AF135749D300615446 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXTargetDependency section */ - 9EEC44B7135749D300615446 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 9EEC4492135749D200615446 /* Another */; - targetProxy = 9EEC44B6135749D300615446 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - /* Begin XCBuildConfiguration section */ 9EEC44C3135749D300615446 /* Debug */ = { isa = XCBuildConfiguration; @@ -250,6 +172,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_OBJC_EXCEPTIONS = YES; @@ -265,6 +188,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_ENABLE_OBJC_EXCEPTIONS = YES; @@ -276,54 +200,10 @@ }; name = Release; }; - 9EEC44C9135749D300615446 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Another.app/Contents/MacOS/Another"; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "AnotherTests/AnotherTests-Prefix.pch"; - INFOPLIST_FILE = "AnotherTests/AnotherTests-Info.plist"; - OTHER_LDFLAGS = ( - "-framework", - SenTestingKit, - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = octest; - }; - name = Debug; - }; - 9EEC44CA135749D300615446 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Another.app/Contents/MacOS/Another"; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "AnotherTests/AnotherTests-Prefix.pch"; - INFOPLIST_FILE = "AnotherTests/AnotherTests-Info.plist"; - OTHER_LDFLAGS = ( - "-framework", - SenTestingKit, - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = octest; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 9EEC448D135749D200615446 /* Build configuration list for PBXProject "Another" */ = { + 9EEC448D135749D200615446 /* Build configuration list for PBXProject "XCCSampleProj" */ = { isa = XCConfigurationList; buildConfigurations = ( 9EEC44C3135749D300615446 /* Debug */, @@ -339,16 +219,9 @@ 9EEC44C7135749D300615446 /* Release */, ); defaultConfigurationIsVisible = 0; - }; - 9EEC44C8135749D300615446 /* Build configuration list for PBXNativeTarget "AnotherTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9EEC44C9135749D300615446 /* Debug */, - 9EEC44CA135749D300615446 /* Release */, - ); - defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 9EEC448A135749D200615446 /* Project object */; -} \ No newline at end of file +} From bb20a8f4fff0653cb00281a194d587d485f803ce Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 19:04:52 -0700 Subject: [PATCH 066/114] pbxprojModifier.py now uses the mod_pbxproj --- Tools/XcodeCapp/pbxprojModifier.py | 56 ++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 Tools/XcodeCapp/pbxprojModifier.py diff --git a/Tools/XcodeCapp/pbxprojModifier.py b/Tools/XcodeCapp/pbxprojModifier.py new file mode 100755 index 000000000..515c2b860 --- /dev/null +++ b/Tools/XcodeCapp/pbxprojModifier.py @@ -0,0 +1,56 @@ +import sys, os +from mod_pbxproj import XcodeProject + + +def add_file(PBXProjectFilePath, path): + + project = XcodeProject.Load(PBXProjectFilePath) + shadowGroup = project.get_or_create_group('Shadows') + + files = project.get_files_by_os_path("XcodeSupport/%s" % os.path.basename(path)) + + if "main.m" in path: + sys.exit(0) + + if len(files) == 0: + project.add_file(path, parent=shadowGroup) + project.save() + +def remove_file(PBXProjectFilePath, path): + + project = XcodeProject.Load(PBXProjectFilePath) + shadowGroup = project.get_or_create_group('Shadows') + + files = project.get_files_by_os_path("XcodeSupport/%s" % os.path.basename(path)) + + if "main.m" in path: + sys.exit(0) + + if len(files) == 1: + project.remove_file("XcodeSupport/%s" % os.path.basename(path), parent=shadowGroup) + project.save() + + +if __name__ == '__main__': + + action = sys.argv[1] + PBXProjectFilePath = sys.argv[2] + currentFilePath = sys.argv[3] + + if action == "add": + add_file(PBXProjectFilePath, currentFilePath) + elif action == "remove": + remove_file(PBXProjectFilePath, currentFilePath) + + + + + + + + + + + + + \ No newline at end of file From bf6c0c95ebd053aeefa18bb4250754a609f1aa8c Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 19:05:07 -0700 Subject: [PATCH 067/114] Update Xcode project --- Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj index 7467e0769..94becb428 100644 --- a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj +++ b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 0218442515D32B5D00A782B8 /* pbxprojModifier.py in Resources */ = {isa = PBXBuildFile; fileRef = 0218442415D32B5D00A782B8 /* pbxprojModifier.py */; }; 022BCEA71468632000B72910 /* project.pbxproj.sample in Resources */ = {isa = PBXBuildFile; fileRef = 022BCEA61468632000B72910 /* project.pbxproj.sample */; }; 024A041413699DD400DCBE4D /* parser.j in Resources */ = {isa = PBXBuildFile; fileRef = 024A041113699D6800DCBE4D /* parser.j */; }; 026F3B6213866B0B00EE5B83 /* xcodecapp-icon-inactive.png in Resources */ = {isa = PBXBuildFile; fileRef = 026F3B6113866B0B00EE5B83 /* xcodecapp-icon-inactive.png */; }; @@ -21,6 +22,7 @@ 027FE4BA1462F64E00B1AB92 /* xcodecapp-icon-working.png in Resources */ = {isa = PBXBuildFile; fileRef = 027FE4B91462F64E00B1AB92 /* xcodecapp-icon-working.png */; }; 027FE4BD1462F7EB00B1AB92 /* FSEventCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = 027FE4BC1462F7EB00B1AB92 /* FSEventCallback.m */; }; 0289AC9414668CAF003CD975 /* XcodeCapp.icns in Resources */ = {isa = PBXBuildFile; fileRef = 0289AC9314668CAF003CD975 /* XcodeCapp.icns */; }; + 0294F09315D345A500840547 /* mod_pbxproj.py in Resources */ = {isa = PBXBuildFile; fileRef = 0294F09215D345A500840547 /* mod_pbxproj.py */; }; 02998CEB1369BF7D006C73DB /* Growl Registration Ticket.growlRegDict in Resources */ = {isa = PBXBuildFile; fileRef = 02998CEA1369BF7D006C73DB /* Growl Registration Ticket.growlRegDict */; }; 02998CF71369C339006C73DB /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 02998CF61369C339006C73DB /* Growl.framework */; }; 02998CF91369C38A006C73DB /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 02998CF61369C339006C73DB /* Growl.framework */; }; @@ -44,6 +46,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0218442415D32B5D00A782B8 /* pbxprojModifier.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = pbxprojModifier.py; sourceTree = ""; }; 022BCEA61468632000B72910 /* project.pbxproj.sample */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = project.pbxproj.sample; sourceTree = ""; }; 024A041113699D6800DCBE4D /* parser.j */ = {isa = PBXFileReference; explicitFileType = sourcecode.javascript; fileEncoding = 4; path = parser.j; sourceTree = ""; }; 026F3B6113866B0B00EE5B83 /* xcodecapp-icon-inactive.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "xcodecapp-icon-inactive.png"; sourceTree = ""; }; @@ -56,6 +59,7 @@ 027FE4BB1462F7D600B1AB92 /* FSEventCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSEventCallback.h; sourceTree = ""; }; 027FE4BC1462F7EB00B1AB92 /* FSEventCallback.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSEventCallback.m; sourceTree = ""; }; 0289AC9314668CAF003CD975 /* XcodeCapp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = XcodeCapp.icns; sourceTree = ""; }; + 0294F09215D345A500840547 /* mod_pbxproj.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = mod_pbxproj.py; sourceTree = ""; }; 02998CEA1369BF7D006C73DB /* Growl Registration Ticket.growlRegDict */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "Growl Registration Ticket.growlRegDict"; sourceTree = ""; }; 02998CF61369C339006C73DB /* Growl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Growl.framework; sourceTree = ""; }; 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -156,6 +160,8 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + 0294F09215D345A500840547 /* mod_pbxproj.py */, + 0218442415D32B5D00A782B8 /* pbxprojModifier.py */, 4E2D0D00154840B400475C01 /* help.rtfd */, 022BCEA61468632000B72910 /* project.pbxproj.sample */, 027FE4B91462F64E00B1AB92 /* xcodecapp-icon-working.png */, @@ -242,6 +248,8 @@ 0289AC9414668CAF003CD975 /* XcodeCapp.icns in Resources */, 022BCEA71468632000B72910 /* project.pbxproj.sample in Resources */, 4E2D0D01154840B400475C01 /* help.rtfd in Resources */, + 0218442515D32B5D00A782B8 /* pbxprojModifier.py in Resources */, + 0294F09315D345A500840547 /* mod_pbxproj.py in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From ea31bd2be2ff156baab85d8223ad1082e9b1ae74 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 19:08:16 -0700 Subject: [PATCH 068/114] make XcodeCapp compatible with Xcode 4.4 --- Tools/XcodeCapp/TNXCodeCapp.m | 79 ++++- Tools/XcodeCapp/project.pbxproj.sample.OLD | 354 +++++++++++++++++++++ 2 files changed, 417 insertions(+), 16 deletions(-) create mode 100644 Tools/XcodeCapp/project.pbxproj.sample.OLD diff --git a/Tools/XcodeCapp/TNXCodeCapp.m b/Tools/XcodeCapp/TNXCodeCapp.m index 27a777518..d88a9700d 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.m +++ b/Tools/XcodeCapp/TNXCodeCapp.m @@ -318,6 +318,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification DLog(@"Parsing modified file: %@", fullPath); NSArray *arguments = nil; + NSArray *PBXArguments = nil; NSString *successTitle = nil; NSString *successMsg = nil; NSString *response = nil; @@ -331,13 +332,29 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification if ([self isXIBFile:fullPath]) { - arguments = [NSArray arrayWithObjects: @"-c", [NSString stringWithFormat:@"(%@; nib2cib '%@';) 2>&1", profilePath, fullPath],@"",nil]; + arguments = [NSArray arrayWithObjects: @"-c", + [NSString stringWithFormat:@"(%@; nib2cib '%@';) 2>&1", profilePath, fullPath],@"",nil]; + successTitle = @"XIB converted"; successMsg = splitPath; } else if ([self isObjJFile:fullPath]) { - arguments = [NSArray arrayWithObjects: @"-c", [NSString stringWithFormat:@"(%@; objj '%@' '%@' '%@';) 2>&1", profilePath, parserPath, fullPath, shadowPath],@"",nil]; + arguments = [NSArray arrayWithObjects: @"-c", + [NSString stringWithFormat:@"(%@; objj '%@' '%@' '%@';) 2>&1", + profilePath, + parserPath, + fullPath, + shadowPath], + @"",nil]; + + PBXArguments = [NSArray arrayWithObjects: @"-c", + [NSString stringWithFormat:@"(%@; python %@ add '%@' '%@') 2>&1", + profilePath, + PBXModifierScriptPath, + XCodeSupportPBXPath, + shadowPath],nil]; + successTitle = @"Objective-J source processed"; successMsg = splitPath; } @@ -352,13 +369,22 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification // Run the task and get the response if needed if (arguments) { - DLog(@"Running task..."); + DLog(@"Running conversion task..."); NSArray *statusInfo = [self runTask:arguments]; status = [statusInfo objectAtIndex:0]; response = [statusInfo objectAtIndex:1]; - DLog(@"Task result/response: %@/%@", status, response); + DLog(@"Conversion task result/response: %@/%@", status, response); + } + + if (PBXArguments) + { + DLog(@"Running update PBX task..."); + NSArray *statusInfo = [self runTask:PBXArguments]; + status = [statusInfo objectAtIndex:0]; + response = [statusInfo objectAtIndex:1]; + DLog(@"Update PBX Task result/response: %@/%@", status, response); } if ([status intValue] == 0 && shouldNotify) @@ -393,8 +419,21 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification { NSString *shadowPath = [[self shadowURLForSourceURL:[NSURL URLWithString:[fullPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]] path]; - [fm removeItemAtPath:shadowPath error:nil]; + NSArray *PBXArguments = [NSArray arrayWithObjects: @"-c", + [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@') 2>&1", + profilePath, + PBXModifierScriptPath, + XCodeSupportPBXPath, + shadowPath],nil]; + DLog(@"Removing shadow file: %@", shadowPath); + [fm removeItemAtPath:shadowPath error:nil]; + + DLog(@"Removing PBX reference task..."); + NSArray *statusInfo = [self runTask:PBXArguments]; + NSNumber *status = [statusInfo objectAtIndex:0]; + NSString *response = [statusInfo objectAtIndex:1]; + DLog(@"PBX Reference removal status/response: %@/%@", status, response); } else if ([self isXCCIgnoreFile:fullPath]) { @@ -445,15 +484,17 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification { XCodeSupportProjectName = [NSString stringWithFormat:@"%@.xcodeproj/", currentProjectName]; XCodeTemplatePBXPath = [[NSBundle mainBundle] pathForResource:@"project.pbxproj" ofType:@"sample"]; - XCodeSupportFolder = [NSURL URLWithString:@".xCodeSupport/" relativeToURL:currentProjectURL]; + XCodeSupportFolder = currentProjectURL; XCodeSupportProject = [NSURL URLWithString:XCodeSupportProjectName relativeToURL:XCodeSupportFolder]; - XCodeSupportProjectSources = [NSURL URLWithString:@"Sources/" relativeToURL:XCodeSupportFolder]; + XCodeSupportProjectSources = [NSURL URLWithString:@"XcodeSupport/" relativeToURL:XCodeSupportFolder]; XCodeSupportPBXPath = [NSString stringWithFormat:@"%@/project.pbxproj", [XCodeSupportProject path]]; + PBXModifierScriptPath = [[NSBundle mainBundle] pathForResource:@"pbxprojModifier" ofType:@"py"]; + //[fm removeItemAtURL:XCodeSupportFolder error:nil]; // create the template project if it doesn't exist - if (![fm fileExistsAtPath:[XCodeSupportFolder path]]) + if (![fm fileExistsAtPath:[XCodeSupportProjectSources path]]) { NSLog(@"Xcode support folder created at: %@", [XCodeSupportProject path]); [fm createDirectoryAtPath:[XCodeSupportProject path] withIntermediateDirectories:YES attributes:nil error:nil]; @@ -463,14 +504,6 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification DLog(@"Reading the content of the project.pbxproj"); NSMutableString *PBXContent = [NSMutableString stringWithContentsOfFile:XCodeSupportPBXPath encoding:NSUTF8StringEncoding error:nil]; - [PBXContent replaceOccurrencesOfString:@"${CappuccinoProjectName}" - withString:currentProjectName - options:NSCaseInsensitiveSearch - range:NSMakeRange(0, [PBXContent length])]; - [PBXContent replaceOccurrencesOfString:@"${CappuccinoProjectRelativePath}" - withString:@".." - options:NSCaseInsensitiveSearch - range:NSMakeRange(0, [PBXContent length])]; [PBXContent writeToFile:XCodeSupportPBXPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; DLog(@"PBX file adapted to the project"); @@ -614,6 +647,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification [ignoredFilePaths addObject:@"*/.xCodeSupport/*"]; [ignoredFilePaths addObject:@"*/Build/*"]; [ignoredFilePaths addObject:@"*/NS_*.j"]; + [ignoredFilePaths addObject:@"*main.j"]; NSLog(@"Ignoring file paths: %@", ignoredFilePaths); } @@ -710,6 +744,19 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification { DLog(@"cleaning shadow file: %@", subpath); [fm removeItemAtPath:shadowFullPath error:nil]; + + NSArray *PBXArguments = [NSArray arrayWithObjects: @"-c", + [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@') 2>&1", + profilePath, + PBXModifierScriptPath, + XCodeSupportPBXPath, + shadowFullPath],nil]; + + DLog(@"Cleaning PBX reference task..."); + NSArray *statusInfo = [self runTask:PBXArguments]; + NSNumber *status = [statusInfo objectAtIndex:0]; + NSString *response = [statusInfo objectAtIndex:1]; + DLog(@"PBX Reference cleaning status/response: %@/%@", status, response); if (![self supportFileLevelAPI] && [self respondsToSelector:@selector(updateLastModificationDate:forPath:)]) [self performSelector:@selector(updateLastModificationDate:forPath:) withObject:nil withObject:unshadowed]; diff --git a/Tools/XcodeCapp/project.pbxproj.sample.OLD b/Tools/XcodeCapp/project.pbxproj.sample.OLD new file mode 100644 index 000000000..9b41eca5b --- /dev/null +++ b/Tools/XcodeCapp/project.pbxproj.sample.OLD @@ -0,0 +1,354 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 9EEC4498135749D200615446 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EEC4497135749D200615446 /* Cocoa.framework */; }; + 9EEC44B5135749D300615446 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EEC4497135749D200615446 /* Cocoa.framework */; }; + 9EEC44CC13574A0B00615446 /* ${CappuccinoProjectName} in Sources */ = {isa = PBXBuildFile; fileRef = 9EEC44CB13574A0B00615446 /* ${CappuccinoProjectName} */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9EEC44B6135749D300615446 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9EEC448A135749D200615446 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9EEC4492135749D200615446; + remoteInfo = Another; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 9EEC4493135749D200615446 /* Another.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Another.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9EEC4497135749D200615446 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 9EEC449A135749D300615446 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 9EEC449B135749D300615446 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 9EEC449C135749D300615446 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 9EEC44B4135749D300615446 /* AnotherTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AnotherTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9EEC44CB13574A0B00615446 /* ${CappuccinoProjectName} */ = {isa = PBXFileReference; lastKnownFileType = folder; name = ${CappuccinoProjectName}; path = ${CappuccinoProjectRelativePath}; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9EEC4490135749D200615446 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9EEC4498135749D200615446 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9EEC44B0135749D300615446 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9EEC44B5135749D300615446 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9EEC4488135749D200615446 = { + isa = PBXGroup; + children = ( + 9EEC44CB13574A0B00615446 /* ${CappuccinoProjectName} */, + 9EEC4496135749D200615446 /* Frameworks */, + 9EEC4494135749D200615446 /* Products */, + ); + sourceTree = ""; + }; + 9EEC4494135749D200615446 /* Products */ = { + isa = PBXGroup; + children = ( + 9EEC4493135749D200615446 /* Another.app */, + 9EEC44B4135749D300615446 /* AnotherTests.octest */, + ); + name = Products; + sourceTree = ""; + }; + 9EEC4496135749D200615446 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9EEC4497135749D200615446 /* Cocoa.framework */, + 9EEC4499135749D300615446 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 9EEC4499135749D300615446 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 9EEC449A135749D300615446 /* AppKit.framework */, + 9EEC449B135749D300615446 /* CoreData.framework */, + 9EEC449C135749D300615446 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9EEC4492135749D200615446 /* Another */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9EEC44C5135749D300615446 /* Build configuration list for PBXNativeTarget "Another" */; + buildPhases = ( + 9EEC448F135749D200615446 /* Sources */, + 9EEC4490135749D200615446 /* Frameworks */, + 9EEC4491135749D200615446 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Another; + productName = Another; + productReference = 9EEC4493135749D200615446 /* Another.app */; + productType = "com.apple.product-type.application"; + }; + 9EEC44B3135749D300615446 /* AnotherTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9EEC44C8135749D300615446 /* Build configuration list for PBXNativeTarget "AnotherTests" */; + buildPhases = ( + 9EEC44AF135749D300615446 /* Sources */, + 9EEC44B0135749D300615446 /* Frameworks */, + 9EEC44B1135749D300615446 /* Resources */, + 9EEC44B2135749D300615446 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 9EEC44B7135749D300615446 /* PBXTargetDependency */, + ); + name = AnotherTests; + productName = AnotherTests; + productReference = 9EEC44B4135749D300615446 /* AnotherTests.octest */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9EEC448A135749D200615446 /* Project object */ = { + isa = PBXProject; + attributes = { + ORGANIZATIONNAME = "280 North, Inc."; + }; + buildConfigurationList = 9EEC448D135749D200615446 /* Build configuration list for PBXProject "Another" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 9EEC4488135749D200615446; + productRefGroup = 9EEC4494135749D200615446 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9EEC4492135749D200615446 /* Another */, + 9EEC44B3135749D300615446 /* AnotherTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9EEC4491135749D200615446 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9EEC44CC13574A0B00615446 /* ${CappuccinoProjectName} in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9EEC44B1135749D300615446 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9EEC44B2135749D300615446 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9EEC448F135749D200615446 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9EEC44AF135749D300615446 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9EEC44B7135749D300615446 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9EEC4492135749D200615446 /* Another */; + targetProxy = 9EEC44B6135749D300615446 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 9EEC44C3135749D300615446 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.6; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 9EEC44C4135749D300615446 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.6; + SDKROOT = macosx; + }; + name = Release; + }; + 9EEC44C6135749D300615446 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Another/Another-Prefix.pch"; + INFOPLIST_FILE = "Another/Another-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 9EEC44C7135749D300615446 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Another/Another-Prefix.pch"; + INFOPLIST_FILE = "Another/Another-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 9EEC44C9135749D300615446 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Another.app/Contents/MacOS/Another"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "AnotherTests/AnotherTests-Prefix.pch"; + INFOPLIST_FILE = "AnotherTests/AnotherTests-Info.plist"; + OTHER_LDFLAGS = ( + "-framework", + SenTestingKit, + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Debug; + }; + 9EEC44CA135749D300615446 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Another.app/Contents/MacOS/Another"; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "AnotherTests/AnotherTests-Prefix.pch"; + INFOPLIST_FILE = "AnotherTests/AnotherTests-Info.plist"; + OTHER_LDFLAGS = ( + "-framework", + SenTestingKit, + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9EEC448D135749D200615446 /* Build configuration list for PBXProject "Another" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9EEC44C3135749D300615446 /* Debug */, + 9EEC44C4135749D300615446 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9EEC44C5135749D300615446 /* Build configuration list for PBXNativeTarget "Another" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9EEC44C6135749D300615446 /* Debug */, + 9EEC44C7135749D300615446 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; + 9EEC44C8135749D300615446 /* Build configuration list for PBXNativeTarget "AnotherTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9EEC44C9135749D300615446 /* Debug */, + 9EEC44CA135749D300615446 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9EEC448A135749D200615446 /* Project object */; +} \ No newline at end of file From 455ec8e3aedb62c9844612c8a6285926ac2dc8ab Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 21:51:38 -0700 Subject: [PATCH 069/114] Simplify the FSEvent callback. Events are not so reliable, there are many flaws and special cases (like trashing a folder etc) In order to simplify the process is the following - We receive an event - We tidy up the shadow files - We check if the given path exists - If it's a folder, we continue - If it's a file and it exists : we run handleFileModification - If it's a file and it doesn't exist: we run handleFileRemoval --- Tools/XcodeCapp/FSEventCallback.m | 74 ++++++++++--------------------- 1 file changed, 24 insertions(+), 50 deletions(-) diff --git a/Tools/XcodeCapp/FSEventCallback.m b/Tools/XcodeCapp/FSEventCallback.m index e050e8d8b..380eb7965 100644 --- a/Tools/XcodeCapp/FSEventCallback.m +++ b/Tools/XcodeCapp/FSEventCallback.m @@ -38,74 +38,48 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, for (i = 0; i < numEvents; i++) { [xcc updateLastEventId:eventIds[i]]; + FSEventStreamEventFlags flags = eventFlags[i]; NSString *path = [[(NSArray *)eventPaths objectAtIndex:i] stringByStandardizingPath]; if (useFileBasedListening) { - if (!(flags & kFSEventStreamEventFlagItemIsFile) || - [xcc isPathMatchingIgnoredPaths:path] || - (![xcc isXIBFile:path] && ![xcc isObjJFile:path] && ![xcc isXCCIgnoreFile:path])) - { + BOOL conditionIsFile = flags & kFSEventStreamEventFlagItemIsFile; + BOOL conditionIsDirectory = NO; + BOOL conditionIsIgnored = [xcc isPathMatchingIgnoredPaths:path]; + BOOL conditionIsValidFile = [xcc isXIBFile:path] || [xcc isObjJFile:path] || [xcc isXCCIgnoreFile:path]; + BOOL conditionPathExists = [[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&conditionIsDirectory]; + + if (conditionIsIgnored) continue; - } - if (flags & kFSEventStreamEventFlagItemIsFile && - flags & kFSEventStreamEventFlagItemRemoved) - { - if ([xcc isObjJFile:path]) - { - [xcc tidyShadowedFiles]; - continue; - } - } + if (conditionIsFile && !conditionIsValidFile) + continue; - if (flags & kFSEventStreamEventFlagItemRemoved) + // Events are not so reliable. For example, moving a folder to the trash is not + // a deletion. In order to simplify the code, we simply tidyUp the project when we receive + // an event. + [xcc tidyShadowedFiles]; + + if (conditionIsDirectory) + continue; + + if (!conditionPathExists) { - DLog(@"event type: kFSEventStreamEventFlagItemRemoved for path %@", path); + DLog(@"File removed: %@", path); [xcc handleFileRemoval:path]; } - - if (flags & kFSEventStreamEventFlagItemCreated || - flags & kFSEventStreamEventFlagItemModified) + else { - DLog(@"event type: kFSEventStreamEventFlagItemCreated or kFSEventStreamEventFlagItemModified for path %@", path); + DLog(@"File modified/added: %@", path); [xcc handleFileModification:path notify:YES]; } - - else if ([xcc reactToInodeModification] && - (flags & kFSEventStreamEventFlagItemFinderInfoMod || - flags & kFSEventStreamEventFlagItemXattrMod || - flags & kFSEventStreamEventFlagItemChangeOwner)) - { - DLog(@"event type: %u for path %@", flags, path); - [xcc handleFileModification:path notify:YES]; - } - - else if ([xcc reactToInodeModification] && - flags & kFSEventStreamEventFlagItemInodeMetaMod) - { - DLog(@"event type: kFSEventStreamEventFlagItemInodeMetaMod for path %@", path); - [xcc handleFileModification:path notify:YES]; - } - - else if (flags & kFSEventStreamEventFlagItemRenamed) - { - if (![[NSFileManager defaultManager] fileExistsAtPath:path]) - { - DLog(@"event type: kFSEventStreamEventFlagItemRenamed for path %@ (removed origin)", path); - [xcc handleFileRemoval:path]; - } - else - { - DLog(@"event type: kFSEventStreamEventFlagItemRenamed for path %@ (added destination)", path); - [xcc handleFileModification:path notify:YES]; - } - } } else { + // We should drop support for Snow Leopard soon. + BOOL isDir = NO; [[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDir]; From 7b9582181c0e57791d5b01268b7ea9b872264cc4 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 21:53:25 -0700 Subject: [PATCH 070/114] By default ignore *.xcodeproj and DS_Store --- Tools/XcodeCapp/TNXCodeCapp.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Tools/XcodeCapp/TNXCodeCapp.m b/Tools/XcodeCapp/TNXCodeCapp.m index d88a9700d..1abf98490 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.m +++ b/Tools/XcodeCapp/TNXCodeCapp.m @@ -648,6 +648,8 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification [ignoredFilePaths addObject:@"*/Build/*"]; [ignoredFilePaths addObject:@"*/NS_*.j"]; [ignoredFilePaths addObject:@"*main.j"]; + [ignoredFilePaths addObject:@"*.xcodeproj/*"]; + [ignoredFilePaths addObject:@"*.DS_Store"]; NSLog(@"Ignoring file paths: %@", ignoredFilePaths); } From cfd6928baac8cf122d159a5595ae68374bc673d3 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 21:56:33 -0700 Subject: [PATCH 071/114] make XcodeSupport hidden --- Tools/XcodeCapp/TNXCodeCapp.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tools/XcodeCapp/TNXCodeCapp.m b/Tools/XcodeCapp/TNXCodeCapp.m index 1abf98490..b2a561e2d 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.m +++ b/Tools/XcodeCapp/TNXCodeCapp.m @@ -486,7 +486,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification XCodeTemplatePBXPath = [[NSBundle mainBundle] pathForResource:@"project.pbxproj" ofType:@"sample"]; XCodeSupportFolder = currentProjectURL; XCodeSupportProject = [NSURL URLWithString:XCodeSupportProjectName relativeToURL:XCodeSupportFolder]; - XCodeSupportProjectSources = [NSURL URLWithString:@"XcodeSupport/" relativeToURL:XCodeSupportFolder]; + XCodeSupportProjectSources = [NSURL URLWithString:@".XcodeSupport/" relativeToURL:XCodeSupportFolder]; XCodeSupportPBXPath = [NSString stringWithFormat:@"%@/project.pbxproj", [XCodeSupportProject path]]; PBXModifierScriptPath = [[NSBundle mainBundle] pathForResource:@"pbxprojModifier" ofType:@"py"]; @@ -644,7 +644,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification [ignoredFilePaths addObject:@"*/.svn/*"]; [ignoredFilePaths addObject:@"*/.hg/*"]; [ignoredFilePaths addObject:@"*/Frameworks/*"]; - [ignoredFilePaths addObject:@"*/.xCodeSupport/*"]; + [ignoredFilePaths addObject:@"*/.XcodeSupport/*"]; [ignoredFilePaths addObject:@"*/Build/*"]; [ignoredFilePaths addObject:@"*/NS_*.j"]; [ignoredFilePaths addObject:@"*main.j"]; From 81c1f0c7c93a5ce9c9ee31384693116f8f5accdb Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 22:34:40 -0700 Subject: [PATCH 072/114] don't be stupid --- Tools/XcodeCapp/mod_pbxproj.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Tools/XcodeCapp/mod_pbxproj.py b/Tools/XcodeCapp/mod_pbxproj.py index ab0acf469..c7aaed2fc 100755 --- a/Tools/XcodeCapp/mod_pbxproj.py +++ b/Tools/XcodeCapp/mod_pbxproj.py @@ -736,7 +736,8 @@ class XcodeProject(PBXDict): def remove_file(self, path, parent): files = self.get_files_by_os_path(path) - del self.objects[files[0].id] + for r in files: + del self.objects[r.id] self.modified = True def move_file(self, id, dest_grp=None): From 6a2d7bd2df040ca9c3900b6375de915d6d0c4521 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 22:34:58 -0700 Subject: [PATCH 073/114] Remove useless product group --- Tools/XcodeCapp/project.pbxproj.sample | 1 - 1 file changed, 1 deletion(-) diff --git a/Tools/XcodeCapp/project.pbxproj.sample b/Tools/XcodeCapp/project.pbxproj.sample index b2530d0f0..9a3879f57 100644 --- a/Tools/XcodeCapp/project.pbxproj.sample +++ b/Tools/XcodeCapp/project.pbxproj.sample @@ -37,7 +37,6 @@ children = ( 9EEC44CB13574A0B00615446 /* CappuccinoRessource */, 9EEC4496135749D200615446 /* Frameworks */, - 9EEC4494135749D200615446 /* Products */, ); sourceTree = ""; }; From 4e13f3f2fd218aa10314817ac0bf03601f298f5a Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 8 Aug 2012 22:35:35 -0700 Subject: [PATCH 074/114] Add reference to .j too in a group called Sources --- Tools/XcodeCapp/TNXCodeCapp.h | 1 - Tools/XcodeCapp/TNXCodeCapp.m | 26 ++++++++------ Tools/XcodeCapp/pbxprojModifier.py | 57 ++++++++++++++---------------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/Tools/XcodeCapp/TNXCodeCapp.h b/Tools/XcodeCapp/TNXCodeCapp.h index bc61a04dd..b43cfa130 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.h +++ b/Tools/XcodeCapp/TNXCodeCapp.h @@ -42,7 +42,6 @@ extern NSString * const XCCListeningStartNotification; NSString *profilePath; NSString *PBXModifierScriptPath; NSURL *currentProjectURL; - NSURL *XCodeSupportFolder; NSURL *XCodeSupportProject; NSURL *XCodeSupportProjectSources; PRHEmptyGrowlDelegate *growlDelegateRef; diff --git a/Tools/XcodeCapp/TNXCodeCapp.m b/Tools/XcodeCapp/TNXCodeCapp.m index b2a561e2d..eb90ce76e 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.m +++ b/Tools/XcodeCapp/TNXCodeCapp.m @@ -349,11 +349,13 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification @"",nil]; PBXArguments = [NSArray arrayWithObjects: @"-c", - [NSString stringWithFormat:@"(%@; python %@ add '%@' '%@') 2>&1", + [NSString stringWithFormat:@"(%@; python %@ add '%@' '%@' '%@' '%@') 2>&1", profilePath, PBXModifierScriptPath, XCodeSupportPBXPath, - shadowPath],nil]; + shadowPath, + fullPath, + [currentProjectURL path]],nil]; successTitle = @"Objective-J source processed"; successMsg = splitPath; @@ -420,11 +422,13 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification NSString *shadowPath = [[self shadowURLForSourceURL:[NSURL URLWithString:[fullPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]] path]; NSArray *PBXArguments = [NSArray arrayWithObjects: @"-c", - [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@') 2>&1", + [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@' '%@' '%@') 2>&1", profilePath, PBXModifierScriptPath, XCodeSupportPBXPath, - shadowPath],nil]; + shadowPath, + fullPath, + [currentProjectURL path]],nil]; DLog(@"Removing shadow file: %@", shadowPath); [fm removeItemAtPath:shadowPath error:nil]; @@ -484,14 +488,14 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification { XCodeSupportProjectName = [NSString stringWithFormat:@"%@.xcodeproj/", currentProjectName]; XCodeTemplatePBXPath = [[NSBundle mainBundle] pathForResource:@"project.pbxproj" ofType:@"sample"]; - XCodeSupportFolder = currentProjectURL; - XCodeSupportProject = [NSURL URLWithString:XCodeSupportProjectName relativeToURL:XCodeSupportFolder]; - XCodeSupportProjectSources = [NSURL URLWithString:@".XcodeSupport/" relativeToURL:XCodeSupportFolder]; + XCodeSupportProject = [NSURL URLWithString:XCodeSupportProjectName relativeToURL:currentProjectURL]; + XCodeSupportProjectSources = [NSURL URLWithString:@".XcodeSupport/" relativeToURL:currentProjectURL]; XCodeSupportPBXPath = [NSString stringWithFormat:@"%@/project.pbxproj", [XCodeSupportProject path]]; PBXModifierScriptPath = [[NSBundle mainBundle] pathForResource:@"pbxprojModifier" ofType:@"py"]; - //[fm removeItemAtURL:XCodeSupportFolder error:nil]; + //[fm removeItemAtURL:XCodeSupportProjectSources error:nil]; + //[fm removeItemAtURL:XCodeSupportProject error:nil]; // create the template project if it doesn't exist if (![fm fileExistsAtPath:[XCodeSupportProjectSources path]]) @@ -748,11 +752,13 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification [fm removeItemAtPath:shadowFullPath error:nil]; NSArray *PBXArguments = [NSArray arrayWithObjects: @"-c", - [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@') 2>&1", + [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@' '%@' '%@') 2>&1", profilePath, PBXModifierScriptPath, XCodeSupportPBXPath, - shadowFullPath],nil]; + shadowFullPath, + unshadowed, + [currentProjectURL path]],nil]; DLog(@"Cleaning PBX reference task..."); NSArray *statusInfo = [self runTask:PBXArguments]; diff --git a/Tools/XcodeCapp/pbxprojModifier.py b/Tools/XcodeCapp/pbxprojModifier.py index 515c2b860..01141b0bb 100755 --- a/Tools/XcodeCapp/pbxprojModifier.py +++ b/Tools/XcodeCapp/pbxprojModifier.py @@ -1,47 +1,42 @@ import sys, os from mod_pbxproj import XcodeProject +XCODESUPPORTFOLDER = ".XcodeSupport" -def add_file(PBXProjectFilePath, path): +def add_file(project, shadowGroup, sourceGroup, shadowPath, sourcePath, projectBaseURL): + project.add_file(shadowPath, parent=shadowGroup) + project.add_file(sourcePath, parent=sourceGroup) + project.save() - project = XcodeProject.Load(PBXProjectFilePath) - shadowGroup = project.get_or_create_group('Shadows') - - files = project.get_files_by_os_path("XcodeSupport/%s" % os.path.basename(path)) - - if "main.m" in path: - sys.exit(0) - - if len(files) == 0: - project.add_file(path, parent=shadowGroup) - project.save() - -def remove_file(PBXProjectFilePath, path): - - project = XcodeProject.Load(PBXProjectFilePath) - shadowGroup = project.get_or_create_group('Shadows') - - files = project.get_files_by_os_path("XcodeSupport/%s" % os.path.basename(path)) - - if "main.m" in path: - sys.exit(0) - - if len(files) == 1: - project.remove_file("XcodeSupport/%s" % os.path.basename(path), parent=shadowGroup) - project.save() +def remove_file(project, shadowGroup, sourceGroup, shadowPath, sourcePath, projectBaseURL): + project.remove_file("%s/%s" % (XCODESUPPORTFOLDER, os.path.basename(shadowPath)), parent=shadowGroup) + project.remove_file(os.path.relpath(sourcePath, projectBaseURL), parent=sourceGroup) + project.save() if __name__ == '__main__': action = sys.argv[1] PBXProjectFilePath = sys.argv[2] - currentFilePath = sys.argv[3] + shadowFilePath = sys.argv[3] + sourceFilePath = sys.argv[4] + projectBaseURL = sys.argv[5] - if action == "add": - add_file(PBXProjectFilePath, currentFilePath) - elif action == "remove": - remove_file(PBXProjectFilePath, currentFilePath) + project = XcodeProject.Load(PBXProjectFilePath) + shadowGroup = project.get_or_create_group('Shadows') + sourceGroup = project.get_or_create_group('Sources') + + if "main.m" in shadowFilePath: + sys.exit(0) + + files = project.get_files_by_os_path("%s/%s" % (XCODESUPPORTFOLDER, os.path.basename(shadowFilePath))) + + if action == "add" and len(files) == 0: + add_file(project, shadowGroup, sourceGroup, shadowFilePath, sourceFilePath, projectBaseURL) + + elif action == "remove" and len(files) == 1: + remove_file(project, shadowGroup, sourceGroup, shadowFilePath, sourceFilePath, projectBaseURL) From ad88dabfd1ea0de37714832fa5dc6c63159787f3 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Thu, 9 Aug 2012 10:04:08 -0700 Subject: [PATCH 075/114] Update NativeHost.xcodeproj to build on new Xcode --- .../NativeHost.xcodeproj/project.pbxproj | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Tools/NativeHost/NativeHost.xcodeproj/project.pbxproj b/Tools/NativeHost/NativeHost.xcodeproj/project.pbxproj index f229afa22..b40dc518a 100644 --- a/Tools/NativeHost/NativeHost.xcodeproj/project.pbxproj +++ b/Tools/NativeHost/NativeHost.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 45; + objectVersion = 46; objects = { /* Begin PBXBuildFile section */ @@ -252,8 +252,11 @@ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; + attributes = { + LastUpgradeCheck = 0440; + }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "NativeHost" */; - compatibilityVersion = "Xcode 3.1"; + compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( @@ -334,14 +337,15 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = NativeHost_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = "ACTIVATION=0"; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Info.plist; INFOPLIST_PREPROCESS = YES; INFOPLIST_PREPROCESSOR_DEFINITIONS = "ACTIVATION=0"; @@ -354,10 +358,12 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = NativeHost_Prefix.pch; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Info.plist; INFOPLIST_PREPROCESS = YES; INFOPLIST_PREPROCESSOR_DEFINITIONS = "ACTIVATION=0"; @@ -376,7 +382,6 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; SDKROOT = macosx; }; name = Debug; @@ -388,7 +393,6 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; SDKROOT = macosx; }; name = Release; From dcd3995230426b1873ab1a72128a68ddc3cb7815 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Thu, 9 Aug 2012 11:42:05 -0700 Subject: [PATCH 076/114] remove old pbxproj sample --- Tools/XcodeCapp/project.pbxproj.sample.OLD | 354 --------------------- 1 file changed, 354 deletions(-) delete mode 100644 Tools/XcodeCapp/project.pbxproj.sample.OLD diff --git a/Tools/XcodeCapp/project.pbxproj.sample.OLD b/Tools/XcodeCapp/project.pbxproj.sample.OLD deleted file mode 100644 index 9b41eca5b..000000000 --- a/Tools/XcodeCapp/project.pbxproj.sample.OLD +++ /dev/null @@ -1,354 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 9EEC4498135749D200615446 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EEC4497135749D200615446 /* Cocoa.framework */; }; - 9EEC44B5135749D300615446 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EEC4497135749D200615446 /* Cocoa.framework */; }; - 9EEC44CC13574A0B00615446 /* ${CappuccinoProjectName} in Sources */ = {isa = PBXBuildFile; fileRef = 9EEC44CB13574A0B00615446 /* ${CappuccinoProjectName} */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 9EEC44B6135749D300615446 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 9EEC448A135749D200615446 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 9EEC4492135749D200615446; - remoteInfo = Another; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 9EEC4493135749D200615446 /* Another.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Another.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 9EEC4497135749D200615446 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; - 9EEC449A135749D300615446 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; - 9EEC449B135749D300615446 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; - 9EEC449C135749D300615446 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 9EEC44B4135749D300615446 /* AnotherTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AnotherTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; - 9EEC44CB13574A0B00615446 /* ${CappuccinoProjectName} */ = {isa = PBXFileReference; lastKnownFileType = folder; name = ${CappuccinoProjectName}; path = ${CappuccinoProjectRelativePath}; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 9EEC4490135749D200615446 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 9EEC4498135749D200615446 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9EEC44B0135749D300615446 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 9EEC44B5135749D300615446 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 9EEC4488135749D200615446 = { - isa = PBXGroup; - children = ( - 9EEC44CB13574A0B00615446 /* ${CappuccinoProjectName} */, - 9EEC4496135749D200615446 /* Frameworks */, - 9EEC4494135749D200615446 /* Products */, - ); - sourceTree = ""; - }; - 9EEC4494135749D200615446 /* Products */ = { - isa = PBXGroup; - children = ( - 9EEC4493135749D200615446 /* Another.app */, - 9EEC44B4135749D300615446 /* AnotherTests.octest */, - ); - name = Products; - sourceTree = ""; - }; - 9EEC4496135749D200615446 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 9EEC4497135749D200615446 /* Cocoa.framework */, - 9EEC4499135749D300615446 /* Other Frameworks */, - ); - name = Frameworks; - sourceTree = ""; - }; - 9EEC4499135749D300615446 /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - 9EEC449A135749D300615446 /* AppKit.framework */, - 9EEC449B135749D300615446 /* CoreData.framework */, - 9EEC449C135749D300615446 /* Foundation.framework */, - ); - name = "Other Frameworks"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 9EEC4492135749D200615446 /* Another */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9EEC44C5135749D300615446 /* Build configuration list for PBXNativeTarget "Another" */; - buildPhases = ( - 9EEC448F135749D200615446 /* Sources */, - 9EEC4490135749D200615446 /* Frameworks */, - 9EEC4491135749D200615446 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Another; - productName = Another; - productReference = 9EEC4493135749D200615446 /* Another.app */; - productType = "com.apple.product-type.application"; - }; - 9EEC44B3135749D300615446 /* AnotherTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9EEC44C8135749D300615446 /* Build configuration list for PBXNativeTarget "AnotherTests" */; - buildPhases = ( - 9EEC44AF135749D300615446 /* Sources */, - 9EEC44B0135749D300615446 /* Frameworks */, - 9EEC44B1135749D300615446 /* Resources */, - 9EEC44B2135749D300615446 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 9EEC44B7135749D300615446 /* PBXTargetDependency */, - ); - name = AnotherTests; - productName = AnotherTests; - productReference = 9EEC44B4135749D300615446 /* AnotherTests.octest */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 9EEC448A135749D200615446 /* Project object */ = { - isa = PBXProject; - attributes = { - ORGANIZATIONNAME = "280 North, Inc."; - }; - buildConfigurationList = 9EEC448D135749D200615446 /* Build configuration list for PBXProject "Another" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 9EEC4488135749D200615446; - productRefGroup = 9EEC4494135749D200615446 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 9EEC4492135749D200615446 /* Another */, - 9EEC44B3135749D300615446 /* AnotherTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 9EEC4491135749D200615446 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9EEC44CC13574A0B00615446 /* ${CappuccinoProjectName} in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9EEC44B1135749D300615446 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 9EEC44B2135749D300615446 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 9EEC448F135749D200615446 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9EEC44AF135749D300615446 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 9EEC44B7135749D300615446 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 9EEC4492135749D200615446 /* Another */; - targetProxy = 9EEC44B6135749D300615446 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 9EEC44C3135749D300615446 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = DEBUG; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - }; - name = Debug; - }; - 9EEC44C4135749D300615446 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.6; - SDKROOT = macosx; - }; - name = Release; - }; - 9EEC44C6135749D300615446 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "Another/Another-Prefix.pch"; - INFOPLIST_FILE = "Another/Another-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 9EEC44C7135749D300615446 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "Another/Another-Prefix.pch"; - INFOPLIST_FILE = "Another/Another-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; - 9EEC44C9135749D300615446 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Another.app/Contents/MacOS/Another"; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "AnotherTests/AnotherTests-Prefix.pch"; - INFOPLIST_FILE = "AnotherTests/AnotherTests-Info.plist"; - OTHER_LDFLAGS = ( - "-framework", - SenTestingKit, - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = octest; - }; - name = Debug; - }; - 9EEC44CA135749D300615446 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Another.app/Contents/MacOS/Another"; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "AnotherTests/AnotherTests-Prefix.pch"; - INFOPLIST_FILE = "AnotherTests/AnotherTests-Info.plist"; - OTHER_LDFLAGS = ( - "-framework", - SenTestingKit, - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = octest; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 9EEC448D135749D200615446 /* Build configuration list for PBXProject "Another" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9EEC44C3135749D300615446 /* Debug */, - 9EEC44C4135749D300615446 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 9EEC44C5135749D300615446 /* Build configuration list for PBXNativeTarget "Another" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9EEC44C6135749D300615446 /* Debug */, - 9EEC44C7135749D300615446 /* Release */, - ); - defaultConfigurationIsVisible = 0; - }; - 9EEC44C8135749D300615446 /* Build configuration list for PBXNativeTarget "AnotherTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9EEC44C9135749D300615446 /* Debug */, - 9EEC44CA135749D300615446 /* Release */, - ); - defaultConfigurationIsVisible = 0; - }; -/* End XCConfigurationList section */ - }; - rootObject = 9EEC448A135749D200615446 /* Project object */; -} \ No newline at end of file From 2b6d8697d5739bb754d055a9bd0ae5783386c13f Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Thu, 9 Aug 2012 12:17:31 -0700 Subject: [PATCH 077/114] Fix compiler warnings --- Tools/XcodeCapp/TNXCodeCapp.m | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Tools/XcodeCapp/TNXCodeCapp.m b/Tools/XcodeCapp/TNXCodeCapp.m index eb90ce76e..c6f660d13 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.m +++ b/Tools/XcodeCapp/TNXCodeCapp.m @@ -421,22 +421,24 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification { NSString *shadowPath = [[self shadowURLForSourceURL:[NSURL URLWithString:[fullPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]] path]; - NSArray *PBXArguments = [NSArray arrayWithObjects: @"-c", - [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@' '%@' '%@') 2>&1", - profilePath, - PBXModifierScriptPath, - XCodeSupportPBXPath, - shadowPath, - fullPath, - [currentProjectURL path]],nil]; - DLog(@"Removing shadow file: %@", shadowPath); [fm removeItemAtPath:shadowPath error:nil]; DLog(@"Removing PBX reference task..."); + +#if DEBUG + NSArray *PBXArguments = [NSArray arrayWithObjects: @"-c", + [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@' '%@' '%@') 2>&1", + profilePath, + PBXModifierScriptPath, + XCodeSupportPBXPath, + shadowPath, + fullPath, + [currentProjectURL path]],nil]; NSArray *statusInfo = [self runTask:PBXArguments]; NSNumber *status = [statusInfo objectAtIndex:0]; NSString *response = [statusInfo objectAtIndex:1]; +#endif DLog(@"PBX Reference removal status/response: %@/%@", status, response); } else if ([self isXCCIgnoreFile:fullPath]) @@ -751,6 +753,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification DLog(@"cleaning shadow file: %@", subpath); [fm removeItemAtPath:shadowFullPath error:nil]; +#if DEBUG NSArray *PBXArguments = [NSArray arrayWithObjects: @"-c", [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@' '%@' '%@') 2>&1", profilePath, @@ -764,6 +767,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification NSArray *statusInfo = [self runTask:PBXArguments]; NSNumber *status = [statusInfo objectAtIndex:0]; NSString *response = [statusInfo objectAtIndex:1]; +#endif DLog(@"PBX Reference cleaning status/response: %@/%@", status, response); if (![self supportFileLevelAPI] && [self respondsToSelector:@selector(updateLastModificationDate:forPath:)]) From 15c75f05e53a712db38ed6ea85f15ea741d791c9 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Thu, 9 Aug 2012 12:51:43 -0700 Subject: [PATCH 078/114] Update some labels --- Tools/XcodeCapp/pbxprojModifier.py | 2 +- Tools/XcodeCapp/project.pbxproj.sample | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Tools/XcodeCapp/pbxprojModifier.py b/Tools/XcodeCapp/pbxprojModifier.py index 01141b0bb..b81ebb29d 100755 --- a/Tools/XcodeCapp/pbxprojModifier.py +++ b/Tools/XcodeCapp/pbxprojModifier.py @@ -24,7 +24,7 @@ if __name__ == '__main__': project = XcodeProject.Load(PBXProjectFilePath) - shadowGroup = project.get_or_create_group('Shadows') + shadowGroup = project.get_or_create_group('Classes') sourceGroup = project.get_or_create_group('Sources') if "main.m" in shadowFilePath: diff --git a/Tools/XcodeCapp/project.pbxproj.sample b/Tools/XcodeCapp/project.pbxproj.sample index 9a3879f57..45e5b705f 100644 --- a/Tools/XcodeCapp/project.pbxproj.sample +++ b/Tools/XcodeCapp/project.pbxproj.sample @@ -8,7 +8,7 @@ /* Begin PBXBuildFile section */ 9EEC4498135749D200615446 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EEC4497135749D200615446 /* Cocoa.framework */; }; - 9EEC44CC13574A0B00615446 /* CappuccinoRessource in Resources */ = {isa = PBXBuildFile; fileRef = 9EEC44CB13574A0B00615446 /* CappuccinoRessource */; }; + 9EEC44CC13574A0B00615446 /* CappuccinoResources in Resources */ = {isa = PBXBuildFile; fileRef = 9EEC44CB13574A0B00615446 /* CappuccinoResources */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -17,7 +17,7 @@ 9EEC449A135749D300615446 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 9EEC449B135749D300615446 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 9EEC449C135749D300615446 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 9EEC44CB13574A0B00615446 /* CappuccinoRessource */ = {isa = PBXFileReference; lastKnownFileType = folder; name = CappuccinoRessource; path = Resources; sourceTree = ""; }; + 9EEC44CB13574A0B00615446 /* CappuccinoResources */ = {isa = PBXFileReference; lastKnownFileType = folder; name = CappuccinoResources; path = Resources; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -35,7 +35,7 @@ 9EEC4488135749D200615446 = { isa = PBXGroup; children = ( - 9EEC44CB13574A0B00615446 /* CappuccinoRessource */, + 9EEC44CB13574A0B00615446 /* CappuccinoResources */, 9EEC4496135749D200615446 /* Frameworks */, ); sourceTree = ""; @@ -118,7 +118,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9EEC44CC13574A0B00615446 /* CappuccinoRessource in Resources */, + 9EEC44CC13574A0B00615446 /* CappuccinoResources in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 580da9caefd605a2a391afbb0f0c3569270f5134 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Fri, 10 Aug 2012 03:46:09 +0100 Subject: [PATCH 079/114] Fixed: wrong text sizing across the board for custom fonts. If a custom font was used with the CSS @font-face syntax, Cappuccino would calculate the wrong sizes for strings throughout. This could result in e.g. cut off sizeToFit labels. The sizing tests were being performed inside of an iframe and that iframe would not have the same CSS @font-face declarations. For maximum fidelity all string size tests are now performed in the main document, just off screen. --- AppKit/Platform/DOM/CPPlatformString.j | 79 ++++++++++---------------- 1 file changed, 31 insertions(+), 48 deletions(-) diff --git a/AppKit/Platform/DOM/CPPlatformString.j b/AppKit/Platform/DOM/CPPlatformString.j index da3cc3a17..34929ad7b 100644 --- a/AppKit/Platform/DOM/CPPlatformString.j +++ b/AppKit/Platform/DOM/CPPlatformString.j @@ -25,8 +25,6 @@ var DOMFixedWidthSpanElement = nil, DOMMetricsDivElement = nil, DOMMetricsTextSpanElement = nil, DOMMetricsImgElement = nil, - DOMIFrameElement = nil, - DOMIFrameDocument = nil, DefaultFont = nil; @implementation CPPlatformString : CPBasePlatformString @@ -48,50 +46,27 @@ var DOMFixedWidthSpanElement = nil, + (void)createDOMElements { - var style; + var style, + bodyElement = [CPPlatform mainBodyElement]; - DOMIFrameElement = document.createElement("iframe"); - // necessary for Safari caching bug: - DOMIFrameElement.name = "iframe_" + FLOOR(RAND() * 10000); - DOMIFrameElement.className = "cpdontremove"; - - style = DOMIFrameElement.style; - style.position = "absolute"; - style.left = "-100px"; - style.top = "-100px"; - style.width = "1px"; - style.height = "1px"; - style.borderWidth = "0px"; - style.overflow = "hidden"; - style.zIndex = 100000000000; - - var bodyElement = [CPPlatform mainBodyElement]; - - bodyElement.appendChild(DOMIFrameElement); - - DOMIFrameDocument = (DOMIFrameElement.contentDocument || DOMIFrameElement.contentWindow.document); - DOMIFrameDocument.write(''); - DOMIFrameDocument.close(); - - // IE needs this wide
to prevent unwanted text wrapping: - var DOMDivElement = DOMIFrameDocument.createElement("div"); - DOMDivElement.style.position = "absolute"; - DOMDivElement.style.width = "100000px"; - - DOMIFrameDocument.body.appendChild(DOMDivElement); - - DOMFlexibleWidthSpanElement = DOMIFrameDocument.createElement("span"); + DOMFlexibleWidthSpanElement = document.createElement("span"); + DOMFlexibleWidthSpanElement.className = "cpdontremove"; style = DOMFlexibleWidthSpanElement.style; style.position = "absolute"; + style.left = "-100000px"; + style.zIndex = -100000; style.visibility = "visible"; style.padding = "0px"; style.margin = "0px"; style.whiteSpace = "pre"; - DOMFixedWidthSpanElement = DOMIFrameDocument.createElement("span"); + DOMFixedWidthSpanElement = document.createElement("span"); + DOMFixedWidthSpanElement.className = "cpdontremove"; style = DOMFixedWidthSpanElement.style; style.display = "block"; style.position = "absolute"; + style.left = "-100000px"; + style.zIndex = -10000; style.visibility = "visible"; style.padding = "0px"; style.margin = "0px"; @@ -112,27 +87,31 @@ var DOMFixedWidthSpanElement = nil, style.whiteSpace = "pre"; } - DOMDivElement.appendChild(DOMFlexibleWidthSpanElement); - DOMDivElement.appendChild(DOMFixedWidthSpanElement); + bodyElement.appendChild(DOMFlexibleWidthSpanElement); + bodyElement.appendChild(DOMFixedWidthSpanElement); } + (void)createDOMMetricsElements { - if (!DOMIFrameElement) - [self createDOMElements]; + var style, + bodyElement = [CPPlatform mainBodyElement]; - var style; - - DOMMetricsDivElement = DOMIFrameDocument.createElement("div"); + DOMMetricsDivElement = document.createElement("div"); + DOMMetricsDivElement.className = "cpdontremove"; DOMMetricsDivElement.style.position = "absolute"; + DOMMetricsDivElement.style.left = "-10000px"; + DOMMetricsDivElement.style.zIndex = -10000; DOMMetricsDivElement.style.width = "100000px"; - DOMIFrameDocument.body.appendChild(DOMMetricsDivElement); + bodyElement.appendChild(DOMMetricsDivElement); - DOMMetricsTextSpanElement = DOMIFrameDocument.createElement("span"); + DOMMetricsTextSpanElement = document.createElement("span"); + DOMMetricsTextSpanElement.className = "cpdontremove"; DOMMetricsTextSpanElement.innerHTML = "x"; style = DOMMetricsTextSpanElement.style; style.position = "absolute"; + style.left = "-10000px"; + style.zIndex = -10000; style.visibility = "visible"; style.padding = "0px"; style.margin = "0px"; @@ -140,25 +119,29 @@ var DOMFixedWidthSpanElement = nil, var imgPath = [[CPBundle bundleForClass:[CPView class]] pathForResource:@"empty.png"]; - DOMMetricsImgElement = DOMIFrameDocument.createElement("img"); + DOMMetricsImgElement = document.createElement("img"); + DOMMetricsImgElement.className = "cpdontremove"; DOMMetricsImgElement.setAttribute("src", imgPath); DOMMetricsImgElement.setAttribute("width", "1"); DOMMetricsImgElement.setAttribute("height", "1"); DOMMetricsImgElement.setAttribute("alt", ""); style = DOMMetricsImgElement.style; + style.position = "absolute"; + style.left = "-10000px"; + style.zIndex = -10000; style.visibility = "visible"; style.padding = "0px"; style.margin = "0px"; style.border = "none"; style.verticalAlign = "baseline"; - DOMMetricsDivElement.appendChild(DOMMetricsTextSpanElement); - DOMMetricsDivElement.appendChild(DOMMetricsImgElement); + bodyElement.appendChild(DOMMetricsTextSpanElement); + bodyElement.appendChild(DOMMetricsImgElement); } + (CGSize)sizeOfString:(CPString)aString withFont:(CPFont)aFont forWidth:(float)aWidth { - if (!DOMIFrameElement) + if (!DOMFixedWidthSpanElement) [self createDOMElements]; var span; From 6e40020906e8321e46718d3cecbfb294311ebbbe Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Thu, 9 Aug 2012 20:31:26 -0700 Subject: [PATCH 080/114] Allow nil value in presence of formatter, the formatter may want to format that --- AppKit/CPControl.j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AppKit/CPControl.j b/AppKit/CPControl.j index 25cb70f99..cae59c446 100644 --- a/AppKit/CPControl.j +++ b/AppKit/CPControl.j @@ -516,7 +516,7 @@ var CPControlBlackColor = [CPColor blackColor]; */ - (CPString)stringValue { - if (_formatter && _value !== undefined && _value !== nil) + if (_formatter && _value !== undefined) { var formattedValue = [self hasThemeState:CPThemeStateEditing] ? [_formatter editingStringForObjectValue:_value] : [_formatter stringForObjectValue:_value]; From de8e08f4f4d47398644012de1b94e0c87c8d04c9 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sat, 11 Aug 2012 16:11:04 +0100 Subject: [PATCH 081/114] Refs #1364. Add an `index-debug.html` to test app. --- Tests/Manual/AttachedSheet2/index-debug.html | 107 +++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 Tests/Manual/AttachedSheet2/index-debug.html diff --git a/Tests/Manual/AttachedSheet2/index-debug.html b/Tests/Manual/AttachedSheet2/index-debug.html new file mode 100644 index 000000000..cf044b9ce --- /dev/null +++ b/Tests/Manual/AttachedSheet2/index-debug.html @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + TestSheet + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + From 5a8c94183a3bdedc037e33521795453edf76fbbc Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sat, 11 Aug 2012 19:26:38 +0100 Subject: [PATCH 082/114] Refs #1364. Formatting, don't shadow `window` global. --- AppKit/CPWindow/CPWindow.j | 16 ++++---- AppKit/CPWindow/_CPHUDWindowView.j | 21 +++++----- AppKit/CPWindow/_CPStandardWindowView.j | 29 +++++++------- AppKit/CPWindow/_CPWindowView.j | 4 +- Tests/Manual/AttachedSheet2/AppController.j | 2 +- .../AttachedSheet2/SheetWindowController.j | 38 +++++++++---------- 6 files changed, 55 insertions(+), 55 deletions(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 15f3cdc08..7c6c6f20f 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -779,9 +779,9 @@ CPTexturedBackgroundWindowMask { // if the shadow would be taller/wider than the window height, // make it the same as the window height. this allows views to - // become 0,0 with no shadow on them and makes the sheet + // become 0, 0 with no shadow on them and makes the sheet // animation look nicer - var shadowSize = _CGSizeMake(size.width,size.height); + var shadowSize = _CGSizeMake(size.width, size.height); if (size.width >= (SHADOW_MARGIN_LEFT + SHADOW_MARGIN_RIGHT)) shadowSize.width += SHADOW_MARGIN_LEFT + SHADOW_MARGIN_RIGHT; @@ -2381,9 +2381,9 @@ CPTexturedBackgroundWindowMask var sheetFrame = [aSheet frame]; - _sheetContext = {"sheet":aSheet, "modalDelegate":aModalDelegate, "endSelector":aDidEndSelector, - "contextInfo":aContextInfo, "frame":CGRectMakeCopy(sheetFrame), "returnCode":-1, - "opened": NO }; + _sheetContext = {"sheet": aSheet, "modalDelegate": aModalDelegate, "endSelector": aDidEndSelector, + "contextInfo": aContextInfo, "frame": _CGRectMakeCopy(sheetFrame), "returnCode": -1, + "opened": NO}; [self _attachSheetWindow]; } @@ -2413,9 +2413,9 @@ CPTexturedBackgroundWindowMask var delegate = _sheetContext["modalDelegate"], endSelector = _sheetContext["endSelector"]; - // if the sheet has been ordered out, defer didEndSelector until after sheet animates out, - // this must be done since we cannot block an wait for the animation to complete - if (delegate != nil && endSelector != nil) + // If the sheet has been ordered out, defer didEndSelector until after sheet animates out. + // This must be done since we cannot block and wait for the animation to complete. + if (delegate && endSelector) { if (_sheetContext["isAttached"]) objj_msgSend(delegate, endSelector, _sheetContext["sheet"], _sheetContext["returnCode"], diff --git a/AppKit/CPWindow/_CPHUDWindowView.j b/AppKit/CPWindow/_CPHUDWindowView.j index 42368704c..351f2210b 100644 --- a/AppKit/CPWindow/_CPHUDWindowView.j +++ b/AppKit/CPWindow/_CPHUDWindowView.j @@ -205,13 +205,13 @@ var HUD_TITLEBAR_HEIGHT = 26.0; bounds = [self bounds], width = CGRectGetWidth(bounds); - [_titleField setFrame:CGRectMake(20.0, 3.0, width - 40.0, CGRectGetHeight([_titleField frame]))]; + [_titleField setFrame:_CGRectMake(20.0, 3.0, width - 40.0, _CGRectGetHeight([_titleField frame]))]; var maxY = [self toolbarMaxY]; if ([_titleField isHidden]) maxY -= ([self toolbarOffset]).height; - var contentRect = CGRectMake(0.0, maxY, width, CGRectGetHeight(bounds) - maxY); + var contentRect = _CGRectMake(0.0, maxY, width, _CGRectGetHeight(bounds) - maxY); [[theWindow contentView] setFrame:contentRect]; } @@ -224,23 +224,22 @@ var HUD_TITLEBAR_HEIGHT = 26.0; [_titleField setHidden:enable]; // resize the window - var window = [self window], - frame = [window frame]; + var theWindow = [self window], + frame = [theWindow frame], + dy = ([self toolbarOffset]).height; - var dy = ([self toolbarOffset]).height; if (enable) dy = -dy; - var newHeight = CGRectGetMaxY(frame) + dy, - newWidth = CGRectGetMaxX(frame); + var newHeight = _CGRectGetMaxY(frame) + dy, + newWidth = _CGRectGetMaxX(frame); frame.size.height += dy; - [self setFrameSize:CGSizeMake(newWidth, newHeight)]; + [self setFrameSize:_CGSizeMake(newWidth, newHeight)]; [self tile]; - [window setFrame:frame display:NO animate:NO]; - [window setMovableByWindowBackground:!enable]; + [theWindow setFrame:frame display:NO animate:NO]; + [theWindow setMovableByWindowBackground:!enable]; } @end - diff --git a/AppKit/CPWindow/_CPStandardWindowView.j b/AppKit/CPWindow/_CPStandardWindowView.j index 19ffc4d13..482b6f019 100644 --- a/AppKit/CPWindow/_CPStandardWindowView.j +++ b/AppKit/CPWindow/_CPStandardWindowView.j @@ -326,16 +326,16 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, var theWindow = [self window], bounds = [self bounds], - width = CGRectGetWidth(bounds); + width = _CGRectGetWidth(bounds); - [_headView setFrameSize:CGSizeMake(width, [self toolbarMaxY])]; - [_dividerView setFrame:CGRectMake(0.0, CGRectGetMaxY([_headView frame]), width, 1.0)]; + [_headView setFrameSize:_CGSizeMake(width, [self toolbarMaxY])]; + [_dividerView setFrame:_CGRectMake(0.0, _CGRectGetMaxY([_headView frame]), width, 1.0)]; var dividerMaxY = 0; if (![_dividerView isHidden]) - dividerMaxY = CGRectGetMaxY([_dividerView frame]); + dividerMaxY = _CGRectGetMaxY([_dividerView frame]); - [_bodyView setFrame:CGRectMake(0.0, dividerMaxY, width, CGRectGetHeight(bounds) - dividerMaxY)]; + [_bodyView setFrame:_CGRectMake(0.0, dividerMaxY, width, _CGRectGetHeight(bounds) - dividerMaxY)]; var leftOffset = 8; @@ -344,12 +344,13 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, if (_minimizeButton) leftOffset += 19.0; - [_titleField setFrame:CGRectMake(leftOffset, 5.0, width - leftOffset * 2.0, CGRectGetHeight([_titleField frame]))]; + [_titleField setFrame:_CGRectMake(leftOffset, 5.0, width - leftOffset * 2.0, _CGRectGetHeight([_titleField frame]))]; - var contentRect = CGRectMake(0.0, dividerMaxY, width, CGRectGetHeight([_bodyView frame])); + var contentRect = _CGRectMake(0.0, dividerMaxY, width, _CGRectGetHeight([_bodyView frame])); [[theWindow contentView] setFrame:contentRect]; } + /* - (void)setAnimatingToolbar:(BOOL)isAnimatingToolbar { @@ -428,21 +429,21 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, [_bodyView setBackgroundColor:[[self class] bodyBackgroundColor]]; // resize the window - var window = [self window], - frame = [window frame]; + var theWindow = [self window], + frame = [theWindow frame]; - var dy = CGRectGetHeight([_headView frame]) + CGRectGetHeight([_dividerView frame]); + var dy = _CGRectGetHeight([_headView frame]) + _CGRectGetHeight([_dividerView frame]); if (enable) dy = -dy; - var newHeight = CGRectGetMaxY(frame) + dy, - newWidth = CGRectGetMaxX(frame); + var newHeight = _CGRectGetMaxY(frame) + dy, + newWidth = _CGRectGetMaxX(frame); frame.size.height += dy; - [self setFrameSize:CGSizeMake(newWidth, newHeight)]; + [self setFrameSize:_CGSizeMake(newWidth, newHeight)]; [self tile]; - [window setFrame:frame display:NO animate:NO]; + [theWindow setFrame:frame display:NO animate:NO]; } @end diff --git a/AppKit/CPWindow/_CPWindowView.j b/AppKit/CPWindow/_CPWindowView.j index 5f5f7d635..88fb9d6ce 100644 --- a/AppKit/CPWindow/_CPWindowView.j +++ b/AppKit/CPWindow/_CPWindowView.j @@ -384,10 +384,10 @@ var _CPWindowViewResizeIndicatorImage = nil; if (enable) { var bundle = [CPBundle bundleForClass:[CPWindow class]]; - _sheetShadowView = [[CPView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth([self bounds]), 8)]; + _sheetShadowView = [[CPView alloc] initWithFrame:_CGRectMake(0, 0, _CGRectGetWidth([self bounds]), 8)]; [_sheetShadowView setAutoresizingMask:CPViewWidthSizable]; [_sheetShadowView setBackgroundColor:[CPColor colorWithPatternImage:[[CPImage alloc] - initWithContentsOfFile:[bundle pathForResource:@"CPWindow/CPWindowAttachedSheetShadow.png"] size:CGSizeMake(9,8)]]]; + initWithContentsOfFile:[bundle pathForResource:@"CPWindow/CPWindowAttachedSheetShadow.png"] size:_CGSizeMake(9, 8)]]]; [self addSubview:_sheetShadowView]; } else diff --git a/Tests/Manual/AttachedSheet2/AppController.j b/Tests/Manual/AttachedSheet2/AppController.j index 580cc5eac..900b3b335 100644 --- a/Tests/Manual/AttachedSheet2/AppController.j +++ b/Tests/Manual/AttachedSheet2/AppController.j @@ -13,7 +13,7 @@ - (void)awakeFromCib { - _sheetController = [ [SheetWindowController alloc] initWithWindowCibName:@"Window"]; + _sheetController = [[SheetWindowController alloc] initWithWindowCibName:@"Window"]; [self newDocument:self]; } diff --git a/Tests/Manual/AttachedSheet2/SheetWindowController.j b/Tests/Manual/AttachedSheet2/SheetWindowController.j index 2c3cdb51e..a2507f51a 100644 --- a/Tests/Manual/AttachedSheet2/SheetWindowController.j +++ b/Tests/Manual/AttachedSheet2/SheetWindowController.j @@ -36,7 +36,7 @@ - (void)positionWindow { var keyWindow = [CPApp keyWindow], - origin = CPPointMake(40,40); + origin = CPPointMake(40, 40); if (keyWindow) { @@ -67,39 +67,39 @@ CPLog.warn("No action set on this %@", [sender class]); } -- (void)addButtons:(CPWindow)window +- (void)addButtons:(CPWindow)aWindow { var x = 10, unsetAction = @selector(unsetAction:); - _closeButton = [ [CPButton alloc] initWithFrame:CGRectMake(x,10,32,100)]; + _closeButton = [[CPButton alloc] initWithFrame:CGRectMake(x, 10, 32, 100)]; [_closeButton setTitle:@"Close"]; [_closeButton setButtonType:CPMomentaryPushInButton]; [_closeButton setBezelStyle:CPBezelBorder]; [_closeButton sizeToFit]; [_closeButton setTarget:self]; [_closeButton setAction:unsetAction]; - [[window contentView] addSubview:_closeButton positioned:CPWindowAbove relativeTo:nil]; + [[aWindow contentView] addSubview:_closeButton positioned:CPWindowAbove relativeTo:nil]; x += 10 + CGRectGetWidth([_closeButton frame]); - _altCloseButton = [ [CPButton alloc] initWithFrame:CGRectMake(x, 10,32,100)]; + _altCloseButton = [[CPButton alloc] initWithFrame:CGRectMake(x, 10, 32, 100)]; [_altCloseButton setTitle:@"Close Parent Too"]; [_altCloseButton setButtonType:CPMomentaryPushInButton]; [_altCloseButton setBezelStyle:CPBezelBorder]; [_altCloseButton sizeToFit]; [_altCloseButton setTarget:self]; [_altCloseButton setAction:unsetAction]; - [[window contentView] addSubview:_altCloseButton positioned:CPWindowAbove relativeTo:nil]; + [[aWindow contentView] addSubview:_altCloseButton positioned:CPWindowAbove relativeTo:nil]; x += 10 + CGRectGetWidth([_altCloseButton frame]); - _otherCloseButton = [ [CPButton alloc] initWithFrame:CGRectMake(x, 10,32,100)]; + _otherCloseButton = [[CPButton alloc] initWithFrame:CGRectMake(x, 10, 32, 100)]; [_otherCloseButton setTitle:@"Chain Sheets"]; [_otherCloseButton setButtonType:CPMomentaryPushInButton]; [_otherCloseButton setBezelStyle:CPBezelBorder]; [_otherCloseButton sizeToFit]; [_otherCloseButton setTarget:self]; [_otherCloseButton setAction:unsetAction]; - [[window contentView] addSubview:_otherCloseButton positioned:CPWindowAbove relativeTo:nil]; + [[aWindow contentView] addSubview:_otherCloseButton positioned:CPWindowAbove relativeTo:nil]; } - (SheetWindowController)initWithStyleMask:(int)styleMask debug:(int)debug @@ -109,16 +109,16 @@ if (styleMask < 0) return [self initWithWindowCibName:@"Window"]; - var window = [ [CPWindow alloc] initWithContentRect:CGRectMake(0,0,400,300) styleMask:styleMask]; + var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(0, 0, 400, 300) styleMask:styleMask]; if (debug & 1) - [window setBackgroundColor:[CPColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:0.5]]; + [theWindow setBackgroundColor:[CPColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:0.5]]; if (debug & 2) - [[window contentView] setBackgroundColor:[CPColor colorWithCalibratedRed:0.0 green:0.0 blue:1.0 alpha:0.5]]; + [[theWindow contentView] setBackgroundColor:[CPColor colorWithCalibratedRed:0.0 green:0.0 blue:1.0 alpha:0.5]]; - if (self = [super initWithWindow:window]) - [self addButtons:window]; + if (self = [super initWithWindow:theWindow]) + [self addButtons:theWindow]; return self; } @@ -126,11 +126,11 @@ - (SheetWindowController)allocController { CPLog.debug("[%@ %@] groupClass=%@", [self class], _cmd, - [ [ [ [ [_windowTypeMatrix subviews] objectAtIndex:0] radioGroup] selectedRadio] tag]); + [[[[[_windowTypeMatrix subviews] objectAtIndex:0] radioGroup] selectedRadio] tag]); var type = 1; if (_windowTypeMatrix) - type = [ [ [ [ [_windowTypeMatrix subviews] objectAtIndex:0] radioGroup] selectedRadio] tag]; + type = [[[[[_windowTypeMatrix subviews] objectAtIndex:0] radioGroup] selectedRadio] tag]; var styleMask = 0; if ([_titledMaskButton state]) @@ -416,15 +416,15 @@ otherButton:@"OtherButton" informativeTextWithFormat:@"This informative text sentence shows text wrapping bug."]; - [parentWindow setDelegate:self]; + [parentWindow setDelegate:self]; _parentWindow = parentWindow; _sheet = alert; _returnCode = -1; [alert beginSheetModalForWindow:parentWindow - modalDelegate:self - didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) - contextInfo:parentWindow]; + modalDelegate:self + didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) + contextInfo:parentWindow]; } // From 120cea8734929a8cfabbe6089bf41905818ce478 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 14 Aug 2012 00:15:03 +0100 Subject: [PATCH 083/114] Refs #1364. Fix CPTextField test to work with new sheet changes. --- Tests/Manual/CPTextField/AppController.j | 1 + 1 file changed, 1 insertion(+) diff --git a/Tests/Manual/CPTextField/AppController.j b/Tests/Manual/CPTextField/AppController.j index 1e5639509..ccef231bd 100644 --- a/Tests/Manual/CPTextField/AppController.j +++ b/Tests/Manual/CPTextField/AppController.j @@ -81,6 +81,7 @@ - (void)modalAction:(id)sender { [CPApp endSheet:aWindow returnCode:0]; + [aWindow orderOut:sender]; } - (void)textAction:(id)sender From 64bbe0c641f92990e0b918e160523c026a44487c Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 14 Aug 2012 02:39:18 +0100 Subject: [PATCH 084/114] Refs #1364. Fixed: incorrect key window change when displaying a sheet. When the key window changes the previous window's resignKeyWindow must be called. --- AppKit/CPWindow/CPWindow.j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 7c6c6f20f..e62dd1c7e 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -2545,7 +2545,7 @@ CPTexturedBackgroundWindowMask // NOTE: cocoa doesn't make window key until animation is done, but a // keypress while animating eventually gets to the window. Therefore, // there must be a runloop specifically designed for sheets? - [sheet becomeKeyWindow]; + [sheet makeKeyWindow]; } /* @ignore */ From 77266e0b3ca57e4ec0f28c946002f7fdacf10e2e Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 14 Aug 2012 03:10:08 +0100 Subject: [PATCH 085/114] Refs #1364. Don't orderFront: sheet parent view twice. The sheet's orderFront: already calls the parent window's orderFront:, no need to call it by hand. --- AppKit/CPWindow/CPWindow.j | 1 - 1 file changed, 1 deletion(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index e62dd1c7e..f3b93531f 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -1605,7 +1605,6 @@ CPTexturedBackgroundWindowMask // -dw- if the window is clicked, the sheet should come to front, and become key, // and the window should be immediately behind - [self orderFront:self]; [sheet makeKeyAndOrderFront:self]; break; case CPMouseMoved: From e3d0d6991855008c124af913d5d4f98d24110968 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 14 Aug 2012 22:43:01 +0100 Subject: [PATCH 086/114] Refs #1364. Avoid repeated makeFirstResponder: calls within sheet parent. If a window contained a text field which was the initial first responder, and the window was displaying a sheet, clicking on the window would cause the text field to alternate between being the first responder and not. This was caused by the window `orderFront:` setting its first responder to the initial responder if there wasn't any responder yet. This would cause the text field to focus, even that the window wasn't the key window, and then on the next click the text field would blur which would make the text field automatically resign its first responder status. The solution is to leave the first responder status alone if a window which isn't the key window is `orderFront:`ed. This appears to be more sensible UX in general. You don't expect the first responder of non-key windows to change when you click it's background. --- AppKit/CPWindow/CPWindow.j | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index f3b93531f..6991f5781 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -857,12 +857,12 @@ CPTexturedBackgroundWindowMask [_platformWindow order:CPWindowAbove window:self relativeTo:nil]; #endif - if (_firstResponder === self || !_firstResponder) - [self makeFirstResponder:_initialFirstResponder]; - if (!CPApp._keyWindow) [self makeKeyWindow]; + if ([self isKeyWindow] && (_firstResponder === self || !_firstResponder)) + [self makeFirstResponder:_initialFirstResponder]; + if (!CPApp._mainWindow) [self makeMainWindow]; } From f72615dcbe918dd633066dadec8623bae886b8ab Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 14 Aug 2012 23:41:09 +0100 Subject: [PATCH 087/114] Fixed: non-key window text fields tried to receive input, looked active. Only the first responder of the key window should receive text input. This is important in multi-window apps or windows with sheets. In the multi window case it should be possible to switch between two windows with first responder text fields and keep right on typing. First responder status should not be lost, but new typing should always go into the first responder text field of the key window. For sheets, a text field which was active when the sheet opened should not receive input nor look active while the sheet is open. --- AppKit/CPTextField.j | 64 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 13 deletions(-) diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index e57093ccf..8fb8cab56 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -474,13 +474,31 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [[CPTextFieldInputOwner window] makeFirstResponder:nil]; #endif + // As long as we are the first responder we need to monitor the key status of our window. + [[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(_windowDidResignKey:) name:CPWindowDidResignKeyNotification object:[self window]]; + [[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(_windowDidBecomeKey:) name:CPWindowDidBecomeKeyNotification object:[self window]]; + + _isEditing = NO; + + if ([[self window] isKeyWindow]) + [self _becomeFirstKeyResponder]; + + return YES; +} + +/*! + A text field can be the first responder without necessarily being the focus of keyboard input. For example, it might be the first responder of window A but window B is the main and key window. It's important we don't put a focused input field into a text field in a non key window, even if that field is the first responder, because the key window might also have a first responder text field which the user will expect to receive keyboard input. + + Since a first responder but non-key window text field can't receive input it should not even look like an active text field (Cocoa has a "slightly active" text field look it uses when another window is the key window, but Cappuccino doesn't today.) +*/ +- (void)_becomeFirstKeyResponder +{ [self setThemeState:CPThemeStateEditing]; [self _updatePlaceholderState]; [self setNeedsLayout]; - _isEditing = NO; _stringValue = [self stringValue]; #if PLATFORM(DOM) @@ -559,14 +577,14 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [[self window] platformWindow]._DOMBodyElement.onselectstart = function () {}; } #endif - - return YES; } /* @ignore */ - (BOOL)resignFirstResponder { - [self unsetThemeState:CPThemeStateEditing]; + // When we are no longer the first responder we don't worry about the key status of our window anymore. + [[CPNotificationCenter defaultCenter] removeObserver:self name:CPWindowDidResignKeyNotification object:[self window]]; + [[CPNotificationCenter defaultCenter] removeObserver:self name:CPWindowDidBecomeKeyNotification object:[self window]]; #if PLATFORM(DOM) @@ -583,13 +601,29 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); // even if the value has not changed. if ([self _valueIsValid:newValue] === NO) { - [self setThemeState:CPThemeStateEditing]; element.focus(); return NO; } #endif + [self _resignFirstKeyResponder]; + + _isEditing = NO; + [self textDidEndEditing:[CPNotification notificationWithName:CPControlTextDidEndEditingNotification object:self userInfo:nil]]; + + if ([self sendsActionOnEndEditing]) + [self sendAction:[self action] to:[self target]]; + + [self textDidBlur:[CPNotification notificationWithName:CPTextFieldDidBlurNotification object:self userInfo:nil]]; + + return YES; +} + +- (void)_resignFirstKeyResponder +{ + [self unsetThemeState:CPThemeStateEditing]; + // Cache the formatted string _stringValue = [self stringValue]; @@ -601,6 +635,8 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); #if PLATFORM(DOM) + var element = [self _inputElement]; + CPTextFieldInputResigning = YES; if (CPTextFieldInputIsActive) @@ -627,16 +663,18 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); } #endif +} - _isEditing = NO; - [self textDidEndEditing:[CPNotification notificationWithName:CPControlTextDidEndEditingNotification object:self userInfo:nil]]; +- (void)_windowDidResignKey:(CPNotification)aNotification +{ + if (![[self window] isKeyWindow]) + [self _resignFirstKeyResponder]; +} - if ([self sendsActionOnEndEditing]) - [self sendAction:[self action] to:[self target]]; - - [self textDidBlur:[CPNotification notificationWithName:CPTextFieldDidBlurNotification object:self userInfo:nil]]; - - return YES; +- (void)_windowDidBecomeKey:(CPNotification)aNotification +{ + if ([[self window] isKeyWindow] && [[self window] firstResponder] === self) + [self _becomeFirstKeyResponder]; } - (BOOL)_valueIsValid:(CPString)aValue From 425888ee1fc19d296f9213d217c3374756f84906 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 15 Aug 2012 00:52:45 +0100 Subject: [PATCH 088/114] Fixed: in recent revisions vertical text centring was off by 1 upwards, including window titles. This was caused by making text display generally 1 px taller to allow for fractional pixels at the bottom to show. This should however not be allowed to affect positioning (even if there is a fractional pixel below vertically centred text the text should not move up 0.5 px.) --- AppKit/_CPImageAndTextView.j | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AppKit/_CPImageAndTextView.j b/AppKit/_CPImageAndTextView.j index 4b7b87527..4a33f2201 100644 --- a/AppKit/_CPImageAndTextView.j +++ b/AppKit/_CPImageAndTextView.j @@ -697,7 +697,8 @@ var _CPimageAndTextViewFrameSizeChangedFlag = 1 << 0, if (_verticalAlignment === CPCenterVerticalTextAlignment) { - textRectY = textRectY + (textRectHeight - _textSize.height) / 2.0; + // Since we added +1 px height above to show fractional pixels on the bottom, we have to remove that when calculating vertical centre. + textRectY = textRectY + (textRectHeight - _textSize.height + 1.0) / 2.0; textRectHeight = _textSize.height; } From 9f59ac96dd02a737b7d549ca24f8826082e24e5d Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 15 Aug 2012 00:55:29 +0100 Subject: [PATCH 089/114] Inactive window title, start on window theming support. Now the key window can be recognised by the window title. --- AppKit/CPTheme.j | 3 +- AppKit/CPWindow/_CPStandardWindowView.j | 60 +++++++++++++++++-------- AppKit/CPWindow/_CPWindowView.j | 28 ++++++++++++ 3 files changed, 72 insertions(+), 19 deletions(-) diff --git a/AppKit/CPTheme.j b/AppKit/CPTheme.j index 1da505571..09e689ff9 100644 --- a/AppKit/CPTheme.j +++ b/AppKit/CPTheme.j @@ -419,7 +419,8 @@ CPThemeStateVertical = CPThemeState("vertical"); CPThemeStateDefault = CPThemeState("default"); CPThemeStateCircular = CPThemeState("circular"); CPThemeStateAutocompleting = CPThemeState("autocompleting"); - +CPThemeStateMainWindow = CPThemeState("mainWindow"); +CPThemeStateKeyWindow = CPThemeState("keyWindow"); @implementation _CPThemeAttribute : CPObject { diff --git a/AppKit/CPWindow/_CPStandardWindowView.j b/AppKit/CPWindow/_CPStandardWindowView.j index 482b6f019..10cfb2162 100644 --- a/AppKit/CPWindow/_CPStandardWindowView.j +++ b/AppKit/CPWindow/_CPStandardWindowView.j @@ -104,7 +104,8 @@ var _CPStandardWindowViewBodyBackgroundColor = nil, _CPStandardWindowViewCloseButtonUnsavedImage = nil, _CPStandardWindowViewCloseButtonUnsavedHighlightedImage = nil, _CPStandardWindowViewMinimizeButtonImage = nil, - _CPStandardWindowViewMinimizeButtonHighlightedImage = nil; + _CPStandardWindowViewMinimizeButtonHighlightedImage = nil, + _CPStandardWindowViewThemeValues = nil; var STANDARD_GRADIENT_HEIGHT = 41.0, STANDARD_TITLEBAR_HEIGHT = 25.0; @@ -123,6 +124,21 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, BOOL _isDocumentEdited; } ++ (void)initialize +{ + _CPStandardWindowViewThemeValues = [ + [@"title-font", [CPFont boldSystemFontOfSize:CPFontCurrentSystemSize]], + [@"title-text-color", [CPColor colorWithWhite:22.0 / 255.0 alpha:0.75]], + [@"title-text-color", [CPColor colorWithWhite:22.0 / 255.0 alpha:1], CPThemeStateKeyWindow], + [@"title-text-shadow-color", [CPColor whiteColor]], + [@"title-text-shadow-offset", CGSizeMake(0.0, 1.0)], + [@"title-alignment", CPCenterTextAlignment], + // FIXME: Make this to CPLineBreakByTruncatingMiddle once it's implemented. + [@"title-line-break-mode", CPLineBreakByTruncatingTail], + [@"title-vertical-alignment", CPCenterVerticalTextAlignment] + ]; +} + + (CPColor)bodyBackgroundColor { if (!_CPStandardWindowViewBodyBackgroundColor) @@ -139,14 +155,6 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, return _CPStandardWindowViewDividerBackgroundColor; } -+ (CPColor)titleColor -{ - if (!_CPStandardWindowViewTitleBackgroundColor) - _CPStandardWindowViewTitleBackgroundColor = [CPColor colorWithCalibratedRed:44.0 / 255.0 green:44.0 / 255.0 blue:44.0 / 255.0 alpha:1.0]; - - return _CPStandardWindowViewTitleBackgroundColor; -} - + (CGRect)contentRectForFrameRect:(CGRect)aFrameRect { var contentRect = CGRectMakeCopy(aFrameRect), @@ -212,6 +220,9 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, if (self) { + // Until windows become properly themable, just set these values here in the subclass. + [self registerThemeValues:_CPStandardWindowViewThemeValues]; + var theClass = [self class], bounds = [self bounds]; @@ -244,20 +255,15 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, _titleField = [[CPTextField alloc] initWithFrame:CGRectMakeZero()]; - [_titleField setFont:[CPFont boldSystemFontOfSize:CPFontCurrentSystemSize]]; [_titleField setAutoresizingMask:CPViewWidthSizable]; - // FIXME: Make this to CPLineBreakByTruncatingMiddle once it's implemented. - [_titleField setLineBreakMode:CPLineBreakByTruncatingTail]; - [_titleField setAlignment:CPCenterTextAlignment]; - [_titleField setTextShadowColor:[CPColor whiteColor]]; - [_titleField setTextShadowOffset:CGSizeMake(0.0, 1.0)]; - [_titleField setStringValue:@"Untitled"]; [_titleField sizeToFit]; [_titleField setAutoresizingMask:CPViewWidthSizable]; [_titleField setStringValue:@""]; + [self setNeedsLayout]; + [self addSubview:_titleField]; if (_styleMask & CPClosableWindowMask) @@ -331,9 +337,13 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, [_headView setFrameSize:_CGSizeMake(width, [self toolbarMaxY])]; [_dividerView setFrame:_CGRectMake(0.0, _CGRectGetMaxY([_headView frame]), width, 1.0)]; - var dividerMaxY = 0; + var dividerMaxY = 0, + dividerMinY = 0; if (![_dividerView isHidden]) + { + dividerMinY = _CGRectGetMinY([_dividerView frame]); dividerMaxY = _CGRectGetMaxY([_dividerView frame]); + } [_bodyView setFrame:_CGRectMake(0.0, dividerMaxY, width, _CGRectGetHeight(bounds) - dividerMaxY)]; @@ -344,7 +354,10 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, if (_minimizeButton) leftOffset += 19.0; - [_titleField setFrame:_CGRectMake(leftOffset, 5.0, width - leftOffset * 2.0, _CGRectGetHeight([_titleField frame]))]; + [_titleField sizeToFit]; + // The vertical alignment of the title is set by the theme, so just give it all available space. By default + // the title will vertically centre within. + [_titleField setFrame:_CGRectMake(leftOffset, 0, width - leftOffset * 2.0, dividerMinY)]; var contentRect = _CGRectMake(0.0, dividerMaxY, width, _CGRectGetHeight([_bodyView frame])); @@ -446,4 +459,15 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, [theWindow setFrame:frame display:NO animate:NO]; } +- (void)layoutSubviews +{ + [_titleField setTextColor:[self currentValueForThemeAttribute:@"title-text-color"]]; + [_titleField setFont:[self currentValueForThemeAttribute:@"title-font"]]; + [_titleField setAlignment:[self currentValueForThemeAttribute:@"title-alignment"]]; + [_titleField setVerticalAlignment:[self currentValueForThemeAttribute:@"title-vertical-alignment"]]; + [_titleField setLineBreakMode:[self currentValueForThemeAttribute:@"title-line-break-mode"]]; + [_titleField setTextShadowColor:[self currentValueForThemeAttribute:@"title-text-shadow-color"]]; + [_titleField setTextShadowOffset:[self currentValueForThemeAttribute:@"title-text-shadow-offset"]]; +} + @end diff --git a/AppKit/CPWindow/_CPWindowView.j b/AppKit/CPWindow/_CPWindowView.j index 88fb9d6ce..ae02622cf 100644 --- a/AppKit/CPWindow/_CPWindowView.j +++ b/AppKit/CPWindow/_CPWindowView.j @@ -63,6 +63,17 @@ var _CPWindowViewResizeIndicatorImage = nil; return CGRectMakeCopy(aContentRect); } ++ (CPString)defaultThemeClass +{ + return "window"; +} + ++ (id)themeAttributes +{ + return [CPDictionary dictionaryWithObjects:[[CPColor blackColor], [CPFont systemFontOfSize:CPFontCurrentSystemSize], [CPNull null], _CGSizeMakeZero(), CPCenterTextAlignment, CPLineBreakByTruncatingTail, CPTopVerticalTextAlignment] + forKeys:[@"title-text-color", @"title-font", @"title-text-shadow-color", @"title-text-shadow-offset", @"title-alignment", @"title-line-break-mode", @"title-vertical-alignment"]]; +} + - (CGRect)contentRectForFrameRect:(CGRect)aFrameRect { return [[self class] contentRectForFrameRect:aFrameRect]; @@ -359,6 +370,23 @@ var _CPWindowViewResizeIndicatorImage = nil; [self tile]; } + +- (void)noteKeyWindowStateChanged +{ + if ([[self window] isKeyWindow]) + [self setThemeState:CPThemeStateKeyWindow]; + else + [self unsetThemeState:CPThemeStateKeyWindow]; +} + +- (void)noteMainWindowStateChanged +{ + if ([[self window] isMainWindow]) + [self setThemeState:CPThemeStateMainWindow]; + else + [self unsetThemeState:CPThemeStateMainWindow]; +} + /* - (void)setAnimatingToolbar:(BOOL)isAnimatingToolbar { From aa17d8c7008d4a57adf870cd92b20bd2331b5ed8 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 15 Aug 2012 01:38:25 +0100 Subject: [PATCH 090/114] Pull up window title code to a superclass for reuse. --- AppKit/CPWindow/_CPStandardWindowView.j | 71 +------------- AppKit/CPWindow/_CPTitleableWindowView.j | 114 +++++++++++++++++++++++ 2 files changed, 119 insertions(+), 66 deletions(-) create mode 100644 AppKit/CPWindow/_CPTitleableWindowView.j diff --git a/AppKit/CPWindow/_CPStandardWindowView.j b/AppKit/CPWindow/_CPStandardWindowView.j index 10cfb2162..afcd13d10 100644 --- a/AppKit/CPWindow/_CPStandardWindowView.j +++ b/AppKit/CPWindow/_CPStandardWindowView.j @@ -21,7 +21,7 @@ */ @import "CPTextField.j" -@import "_CPWindowView.j" +@import "_CPTitleableWindowView.j" var GRADIENT_HEIGHT = 41.0; @@ -107,17 +107,15 @@ var _CPStandardWindowViewBodyBackgroundColor = nil, _CPStandardWindowViewMinimizeButtonHighlightedImage = nil, _CPStandardWindowViewThemeValues = nil; -var STANDARD_GRADIENT_HEIGHT = 41.0, - STANDARD_TITLEBAR_HEIGHT = 25.0; +var STANDARD_GRADIENT_HEIGHT = 41.0; -@implementation _CPStandardWindowView : _CPWindowView +@implementation _CPStandardWindowView : _CPTitleableWindowView { _CPTexturedWindowHeadView _headView; CPView _dividerView; CPView _bodyView; CPView _toolbarView; - CPTextField _titleField; CPButton _closeButton; CPButton _minimizeButton; @@ -155,33 +153,6 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, return _CPStandardWindowViewDividerBackgroundColor; } -+ (CGRect)contentRectForFrameRect:(CGRect)aFrameRect -{ - var contentRect = CGRectMakeCopy(aFrameRect), - titleBarHeight = [self titleBarHeight] + 1.0; - - contentRect.origin.y += titleBarHeight; - contentRect.size.height -= titleBarHeight; - - return contentRect; -} - -+ (CGRect)frameRectForContentRect:(CGRect)aContentRect -{ - var frameRect = CGRectMakeCopy(aContentRect), - titleBarHeight = [self titleBarHeight] + 1.0; - - frameRect.origin.y -= titleBarHeight; - frameRect.size.height += titleBarHeight; - - return frameRect; -} - -+ (float)titleBarHeight -{ - return STANDARD_TITLEBAR_HEIGHT; -} - - (CGRect)contentRectForFrameRect:(CGRect)aFrameRect { var contentRect = [[self class] contentRectForFrameRect:aFrameRect], @@ -231,7 +202,7 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, [_headView setAutoresizingMask:CPViewWidthSizable];; [_headView setHitTests:NO]; - [self addSubview:_headView]; + [self addSubview:_headView positioned:CPWindowBelow relativeTo:_titleField]; _dividerView = [[CPView alloc] initWithFrame:CGRectMake(0.0, CGRectGetMaxY([_headView frame]), CGRectGetWidth(bounds), 1.0)]; @@ -253,19 +224,6 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, [self setResizeIndicatorOffset:CGSizeMake(2.0, 2.0)]; - _titleField = [[CPTextField alloc] initWithFrame:CGRectMakeZero()]; - - [_titleField setAutoresizingMask:CPViewWidthSizable]; - - [_titleField setStringValue:@"Untitled"]; - [_titleField sizeToFit]; - [_titleField setAutoresizingMask:CPViewWidthSizable]; - [_titleField setStringValue:@""]; - - [self setNeedsLayout]; - - [self addSubview:_titleField]; - if (_styleMask & CPClosableWindowMask) { if (!_CPStandardWindowViewCloseButtonImage) @@ -354,10 +312,7 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, if (_minimizeButton) leftOffset += 19.0; - [_titleField sizeToFit]; - // The vertical alignment of the title is set by the theme, so just give it all available space. By default - // the title will vertically centre within. - [_titleField setFrame:_CGRectMake(leftOffset, 0, width - leftOffset * 2.0, dividerMinY)]; + [_titleField setFrame:_CGRectMake(leftOffset, 0, width - leftOffset * 2.0, [[self class] titleBarHeight])]; var contentRect = _CGRectMake(0.0, dividerMaxY, width, _CGRectGetHeight([_bodyView frame])); @@ -412,11 +367,6 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, [self _updateCloseButton]; } -- (void)setTitle:(CPString)aTitle -{ - [_titleField setStringValue:aTitle]; -} - - (void)mouseDown:(CPEvent)anEvent { if (![_headView isHidden]) @@ -459,15 +409,4 @@ var STANDARD_GRADIENT_HEIGHT = 41.0, [theWindow setFrame:frame display:NO animate:NO]; } -- (void)layoutSubviews -{ - [_titleField setTextColor:[self currentValueForThemeAttribute:@"title-text-color"]]; - [_titleField setFont:[self currentValueForThemeAttribute:@"title-font"]]; - [_titleField setAlignment:[self currentValueForThemeAttribute:@"title-alignment"]]; - [_titleField setVerticalAlignment:[self currentValueForThemeAttribute:@"title-vertical-alignment"]]; - [_titleField setLineBreakMode:[self currentValueForThemeAttribute:@"title-line-break-mode"]]; - [_titleField setTextShadowColor:[self currentValueForThemeAttribute:@"title-text-shadow-color"]]; - [_titleField setTextShadowOffset:[self currentValueForThemeAttribute:@"title-text-shadow-offset"]]; -} - @end diff --git a/AppKit/CPWindow/_CPTitleableWindowView.j b/AppKit/CPWindow/_CPTitleableWindowView.j new file mode 100644 index 000000000..acb2cd963 --- /dev/null +++ b/AppKit/CPWindow/_CPTitleableWindowView.j @@ -0,0 +1,114 @@ +/* + * _CPTitleableWindowView.j + * AppKit + * + * Created by Alexander Ljungberg. + * Copyright 2012, SlevenBits Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import "_CPWindowView.j" + +var STANDARD_TITLEBAR_HEIGHT = 25.0; + +@implementation _CPTitleableWindowView : _CPWindowView +{ + CPTextField _titleField; +} + ++ (int)titleBarHeight +{ + return STANDARD_TITLEBAR_HEIGHT; +} + ++ (CGRect)contentRectForFrameRect:(CGRect)aFrameRect +{ + var contentRect = CGRectMakeCopy(aFrameRect), + titleBarHeight = [[self class] titleBarHeight]; + + contentRect.origin.y += titleBarHeight; + contentRect.size.height -= titleBarHeight; + + return contentRect; +} + ++ (CGRect)frameRectForContentRect:(CGRect)aContentRect +{ + var frameRect = CGRectMakeCopy(aContentRect), + titleBarHeight = [[self class] titleBarHeight]; + + frameRect.origin.y -= titleBarHeight; + frameRect.size.height += titleBarHeight; + + return frameRect; +} + +- (id)initWithFrame:(CPRect)aFrame styleMask:(unsigned)aStyleMask +{ + self = [super initWithFrame:aFrame styleMask:aStyleMask]; + + if (self) + { + _titleField = [[CPTextField alloc] initWithFrame:CGRectMakeZero()]; + + [_titleField setHitTests:NO]; + [_titleField setStringValue:@"Untitled"]; + [_titleField sizeToFit]; + [_titleField setAutoresizingMask:CPViewWidthSizable]; + [_titleField setStringValue:@""]; + + [_titleField setFrame:CGRectMake(20.0, 3.0, CGRectGetWidth([self bounds]) - 40.0, CGRectGetHeight([_titleField frame]))]; + + [self addSubview:_titleField]; + + [self setNeedsLayout]; + } + + return self; +} + +- (void)setTitle:(CPString)aTitle +{ + [_titleField setStringValue:aTitle]; +} + +- (void)tile +{ + [super tile]; + + var theWindow = [self window], + bounds = [self bounds], + width = CGRectGetWidth(bounds); + + // The vertical alignment of the title is set by the theme, so just give it all available space. By default + // the title will vertically centre within. + [_titleField setFrame:_CGRectMake(20.0, 0, width - 40.0, [[self class] titleBarHeight])]; +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + [_titleField setTextColor:[self currentValueForThemeAttribute:@"title-text-color"]]; + [_titleField setFont:[self currentValueForThemeAttribute:@"title-font"]]; + [_titleField setAlignment:[self currentValueForThemeAttribute:@"title-alignment"]]; + [_titleField setVerticalAlignment:[self currentValueForThemeAttribute:@"title-vertical-alignment"]]; + [_titleField setLineBreakMode:[self currentValueForThemeAttribute:@"title-line-break-mode"]]; + [_titleField setTextShadowColor:[self currentValueForThemeAttribute:@"title-text-shadow-color"]]; + [_titleField setTextShadowOffset:[self currentValueForThemeAttribute:@"title-text-shadow-offset"]]; +} + +@end From ef6633429200aaf02c9f3fdcb836dd9a3a91b4a7 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 15 Aug 2012 02:03:48 +0100 Subject: [PATCH 091/114] Inactive HUD window title. Also fix close and title positioning. --- AppKit/CPWindow/_CPHUDWindowView.j | 79 ++++++++----------------- AppKit/CPWindow/_CPStandardWindowView.j | 3 +- 2 files changed, 27 insertions(+), 55 deletions(-) diff --git a/AppKit/CPWindow/_CPHUDWindowView.j b/AppKit/CPWindow/_CPHUDWindowView.j index 351f2210b..d4a92e6ac 100644 --- a/AppKit/CPWindow/_CPHUDWindowView.j +++ b/AppKit/CPWindow/_CPHUDWindowView.j @@ -21,18 +21,18 @@ */ @import "CPTextField.j" +@import "_CPTitleableWindowView.j" var _CPHUDWindowViewBackgroundColor = nil, + _CPHUDWindowViewThemeValues = nil, CPHUDCloseButtonImage = nil; var HUD_TITLEBAR_HEIGHT = 26.0; -@implementation _CPHUDWindowView : _CPWindowView +@implementation _CPHUDWindowView : _CPTitleableWindowView { CPView _toolbarView; - - CPTextField _titleField; CPButton _closeButton; } @@ -60,28 +60,23 @@ var HUD_TITLEBAR_HEIGHT = 26.0; _CPHUDWindowViewCloseImage = [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"HUDTheme/WindowClose.png"] size:CPSizeMake(18.0, 18.0)]; _CPHUDWindowViewCloseActiveImage = [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"HUDTheme/WindowCloseActive.png"] size:CPSizeMake(18.0, 18.0)]; + + _CPHUDWindowViewThemeValues = [ + [@"title-font", [CPFont systemFontOfSize:[CPFont systemFontSize] - 1]], + [@"title-text-color", [CPColor colorWithWhite:255.0 / 255.0 alpha:0.75]], + [@"title-text-color", [CPColor colorWithWhite:255.0 / 255.0 alpha:1], CPThemeStateKeyWindow], + [@"title-text-shadow-color", [CPColor blackColor]], + [@"title-text-shadow-offset", CGSizeMake(0.0, 1.0)], + [@"title-alignment", CPCenterTextAlignment], + // FIXME: Make this to CPLineBreakByTruncatingMiddle once it's implemented. + [@"title-line-break-mode", CPLineBreakByTruncatingTail], + [@"title-vertical-alignment", CPCenterVerticalTextAlignment] + ]; } -+ (CGRect)contentRectForFrameRect:(CGRect)aFrameRect ++ (int)titleBarHeight { - var contentRect = CGRectMakeCopy(aFrameRect), - titleBarHeight = HUD_TITLEBAR_HEIGHT; - - contentRect.origin.y += titleBarHeight; - contentRect.size.height -= titleBarHeight; - - return contentRect; -} - -+ (CGRect)frameRectForContentRect:(CGRect)aContentRect -{ - var frameRect = CGRectMakeCopy(aContentRect), - titleBarHeight = HUD_TITLEBAR_HEIGHT; - - frameRect.origin.y -= titleBarHeight; - frameRect.size.height += titleBarHeight; - - return frameRect; + return HUD_TITLEBAR_HEIGHT; } - (CGRect)contentRectForFrameRect:(CGRect)aFrameRect @@ -120,37 +115,18 @@ var HUD_TITLEBAR_HEIGHT = 26.0; if (self) { + // Until windows become properly themable, just set these values here in the subclass. + [self registerThemeValues:_CPHUDWindowViewThemeValues]; + var bounds = [self bounds]; [self setBackgroundColor:_CPHUDWindowViewBackgroundColor]; - _titleField = [[CPTextField alloc] initWithFrame:CGRectMakeZero()]; - - [_titleField setHitTests:NO]; - [_titleField setFont:[CPFont systemFontOfSize:[CPFont systemFontSize] - 1]]; - [_titleField setTextColor:[CPColor whiteColor]]; - [_titleField setTextShadowColor:[CPColor blackColor]]; - [_titleField setTextShadowOffset:CGSizeMake(0.0, 1.0)]; - [_titleField setAutoresizingMask:CPViewWidthSizable]; - - // FIXME: Make this to CPLineBreakByTruncatingMiddle once it's implemented. - [_titleField setLineBreakMode:CPLineBreakByTruncatingTail]; - [_titleField setAlignment:CPCenterTextAlignment]; - - [_titleField setStringValue:@"Untitled"]; - [_titleField sizeToFit]; - [_titleField setAutoresizingMask:CPViewWidthSizable]; - [_titleField setStringValue:@""]; - - [_titleField setFrame:CGRectMake(20.0, 3.0, CGRectGetWidth([self bounds]) - 40.0, CGRectGetHeight([_titleField frame]))]; - - [self addSubview:_titleField]; - if (_styleMask & CPClosableWindowMask) { var closeSize = [_CPHUDWindowViewCloseImage size]; - _closeButton = [[CPButton alloc] initWithFrame:CGRectMake(8.0, 5.0, closeSize.width, closeSize.height)]; + _closeButton = [[CPButton alloc] initWithFrame:CGRectMake(8.0, 4.0, closeSize.width, closeSize.height)]; [_closeButton setBordered:NO]; @@ -161,6 +137,8 @@ var HUD_TITLEBAR_HEIGHT = 26.0; } [self setResizeIndicatorOffset:CGSizeMake(5.0, 5.0)]; + + [self tile]; } return self; @@ -172,11 +150,6 @@ var HUD_TITLEBAR_HEIGHT = 26.0; [_closeButton setAction:@selector(performClose:)]; } -- (void)setTitle:(CPString)aTitle -{ - [_titleField setStringValue:aTitle]; -} - - (_CPToolbarView)toolbarView { return _toolbarView; @@ -194,7 +167,7 @@ var HUD_TITLEBAR_HEIGHT = 26.0; - (CGSize)toolbarOffset { - return CGSizeMake(0.0, HUD_TITLEBAR_HEIGHT); + return _CGSizeMake(0.0, [[self class] titleBarHeight]); } - (void)tile @@ -203,9 +176,9 @@ var HUD_TITLEBAR_HEIGHT = 26.0; var theWindow = [self window], bounds = [self bounds], - width = CGRectGetWidth(bounds); + width = _CGRectGetWidth(bounds); - [_titleField setFrame:_CGRectMake(20.0, 3.0, width - 40.0, _CGRectGetHeight([_titleField frame]))]; + [_titleField setFrame:_CGRectMake(20.0, 0, width - 40.0, [self toolbarOffset].height)]; var maxY = [self toolbarMaxY]; if ([_titleField isHidden]) diff --git a/AppKit/CPWindow/_CPStandardWindowView.j b/AppKit/CPWindow/_CPStandardWindowView.j index afcd13d10..9d8fd7147 100644 --- a/AppKit/CPWindow/_CPStandardWindowView.j +++ b/AppKit/CPWindow/_CPStandardWindowView.j @@ -98,7 +98,6 @@ var _CPTexturedWindowHeadGradientColor = nil, var _CPStandardWindowViewBodyBackgroundColor = nil, _CPStandardWindowViewDividerBackgroundColor = nil, - _CPStandardWindowViewTitleBackgroundColor = nil, _CPStandardWindowViewCloseButtonImage = nil, _CPStandardWindowViewCloseButtonHighlightedImage = nil, _CPStandardWindowViewCloseButtonUnsavedImage = nil, @@ -236,7 +235,7 @@ var STANDARD_GRADIENT_HEIGHT = 41.0; _CPStandardWindowViewCloseButtonUnsavedHighlightedImage = [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png"] size:CGSizeMake(16.0, 16.0)]; } - _closeButton = [[CPButton alloc] initWithFrame:CGRectMake(8.0, 7.0, 16.0, 16.0)]; + _closeButton = [[CPButton alloc] initWithFrame:CGRectMake(8.0, 6.0, 16.0, 16.0)]; [_closeButton setBordered:NO]; [self _updateCloseButton]; From d95268b5480f3750ebfd1d337579a3678ae3d8d0 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 15 Aug 2012 13:38:49 +0100 Subject: [PATCH 092/114] Refs #1654. Fix up missing bits. --- AppKit/CPWindow/CPWindow.j | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 6991f5781..7e46c28e0 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -1779,6 +1779,8 @@ CPTexturedBackgroundWindowMask [self _setupFirstResponder:nil]; + [_windowView noteKeyWindowStateChanged]; + [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidBecomeKeyNotification object:self]; @@ -1836,6 +1838,8 @@ CPTexturedBackgroundWindowMask if (CPApp._keyWindow === self) CPApp._keyWindow = nil; + [_windowView noteKeyWindowStateChanged]; + [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidResignKeyNotification object:self]; @@ -2181,6 +2185,8 @@ CPTexturedBackgroundWindowMask [self _synchronizeMenuBarTitleWithWindowTitle]; [self _synchronizeSaveMenuWithDocumentSaving]; + [_windowView noteMainWindowStateChanged]; + [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidBecomeMainNotification object:self]; @@ -2197,6 +2203,8 @@ CPTexturedBackgroundWindowMask if (CPApp._mainWindow === self) CPApp._mainWindow = nil; + + [_windowView noteMainWindowStateChanged]; } - (void)_updateMainAndKeyWindows From 1e4970406220e91d755ac27636c1fdb069644f0e Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 15 Aug 2012 15:36:15 +0100 Subject: [PATCH 093/114] Fixed: the size with string fix broke `metricsOfFont:`. --- AppKit/Platform/DOM/CPPlatformString.j | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AppKit/Platform/DOM/CPPlatformString.j b/AppKit/Platform/DOM/CPPlatformString.j index 34929ad7b..0f6e7731d 100644 --- a/AppKit/Platform/DOM/CPPlatformString.j +++ b/AppKit/Platform/DOM/CPPlatformString.j @@ -135,8 +135,8 @@ var DOMFixedWidthSpanElement = nil, style.border = "none"; style.verticalAlign = "baseline"; - bodyElement.appendChild(DOMMetricsTextSpanElement); - bodyElement.appendChild(DOMMetricsImgElement); + DOMMetricsDivElement.appendChild(DOMMetricsTextSpanElement); + DOMMetricsDivElement.appendChild(DOMMetricsImgElement); } + (CGSize)sizeOfString:(CPString)aString withFont:(CPFont)aFont forWidth:(float)aWidth From d53b8c5b1fd485f73087c3efc2d3fe4bba34065d Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 15 Aug 2012 17:13:34 +0100 Subject: [PATCH 094/114] Fixed: in Firefox the text of edited text fields would "jump" down 1 px. Locking down the line height and vertical alignment explicitly seems to work in Safari 6, Chrome 21, Firefox 14 and IE 8 (although Chrome and IE exhibit some unrelated horizontal jumping.) --- AppKit/CPTextField.j | 4 +++- AppKit/_CPImageAndTextView.j | 14 +++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index 8fb8cab56..8c7bab766 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -546,7 +546,9 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); element.style.top = topPoint; element.style.left = (_CGRectGetMinX(contentRect) - 1) + "px"; // -1 because input element seems to have 1px left inset element.style.width = _CGRectGetWidth(contentRect) + "px"; - element.style.height = lineHeight + "px"; + element.style.height = ROUND(lineHeight) + "px"; + element.style.lineHeight = ROUND(lineHeight) + "px"; + element.style.verticalAlign = @"top"; _DOMElement.appendChild(element); diff --git a/AppKit/_CPImageAndTextView.j b/AppKit/_CPImageAndTextView.j index 4a33f2201..c12661d1e 100644 --- a/AppKit/_CPImageAndTextView.j +++ b/AppKit/_CPImageAndTextView.j @@ -432,13 +432,15 @@ var _CPimageAndTextViewFrameSizeChangedFlag = 1 << 0, { _DOMTextShadowElement = document.createElement("div"); - var shadowStyle = _DOMTextShadowElement.style; + var shadowStyle = _DOMTextShadowElement.style, + font = (_font || [CPFont systemFontOfSize:CPFontCurrentSystemSize]); - shadowStyle.font = [(_font || [CPFont systemFontOfSize:CPFontCurrentSystemSize]) cssString]; + shadowStyle.font = [font cssString]; shadowStyle.position = "absolute"; shadowStyle.whiteSpace = textStyle.whiteSpace; shadowStyle.wordWrap = textStyle.wordWrap; shadowStyle.color = [_textShadowColor cssString]; + shadowStyle.lineHeight = [font defaultLineHeightForFont] + "px"; shadowStyle.zIndex = 150; shadowStyle.textOverflow = textStyle.textOverflow; @@ -484,11 +486,16 @@ var _CPimageAndTextViewFrameSizeChangedFlag = 1 << 0, if (_flags & _CPImageAndTextViewFontChangedFlag) { - var fontStyle = [(_font || [CPFont systemFontOfSize:CPFontCurrentSystemSize]) cssString]; + var font = (_font || [CPFont systemFontOfSize:CPFontCurrentSystemSize]), + fontStyle = [font cssString]; textStyle.font = fontStyle; + textStyle.lineHeight = [font defaultLineHeightForFont] + "px"; if (shadowStyle) + { shadowStyle.font = fontStyle; + shadowStyle.lineHeight = [font defaultLineHeightForFont] + "px"; + } } // Update the line break mode if necessary. @@ -713,6 +720,7 @@ var _CPimageAndTextViewFrameSizeChangedFlag = 1 << 0, textStyle.left = ROUND(textRectX) + "px"; textStyle.width = MAX(CEIL(textRectWidth), 0) + "px"; textStyle.height = MAX(CEIL(textRectHeight), 0) + "px"; + textStyle.verticalAlign = @"top"; if (shadowStyle) { From ca3a4f9b9c4bdcee0bfb329349b8dd0f2c713ce9 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 15 Aug 2012 18:12:53 +0100 Subject: [PATCH 095/114] Fixed: text field font size while editing was wrong in Internet Explorer. Tested in Internet Explorer 8 and 9. --- AppKit/CPCompatibility.j | 7 +++++++ AppKit/CPTextField.j | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/AppKit/CPCompatibility.j b/AppKit/CPCompatibility.j index 1b05ed895..1791b3567 100644 --- a/AppKit/CPCompatibility.j +++ b/AppKit/CPCompatibility.j @@ -67,6 +67,9 @@ CPHTML5DragAndDropSourceYOffBy1 = 1 << 26; CPSOPDisabledFromFileURLs = 1 << 27; +// element.style.font can be set for an element not in the DOM. +CPInputSetFontOutsideOfDOM = 1 << 28; + var USER_AGENT = "", PLATFORM_ENGINE = CPUnknownBrowserEngine, PLATFORM_FEATURES = 0; @@ -74,6 +77,7 @@ var USER_AGENT = "", // default these features to true PLATFORM_FEATURES |= CPInputTypeCanBeChangedFeature; +PLATFORM_FEATURES |= CPInputSetFontOutsideOfDOM; if (typeof window !== "undefined" && typeof window.navigator !== "undefined") USER_AGENT = window.navigator.userAgent; @@ -99,6 +103,9 @@ else if (typeof window !== "undefined" && window.attachEvent) // Must follow Ope PLATFORM_FEATURES |= CPOpacityRequiresFilterFeature; PLATFORM_FEATURES &= ~CPInputTypeCanBeChangedFeature; + + // Tested in Internet Explore 8 and 9. + PLATFORM_FEATURES &= ~CPInputSetFontOutsideOfDOM; } // WebKit diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index 8c7bab766..47f2511ee 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -509,7 +509,8 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); element.value = _stringValue; element.style.color = [[self currentValueForThemeAttribute:@"text-color"] cssString]; - element.style.font = [font cssString]; + if (CPFeatureIsCompatible(CPInputSetFontOutsideOfDOM)) + element.style.font = [font cssString]; element.style.zIndex = 1000; switch ([self alignment]) @@ -552,6 +553,10 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); _DOMElement.appendChild(element); + // The font change above doesn't work for some browsers if the element isn't already .appendChild'ed. + if (!CPFeatureIsCompatible(CPInputSetFontOutsideOfDOM)) + element.style.font = [font cssString]; + window.setTimeout(function() { element.focus(); From 54d5f4b0a44d1038193371ff7b3dd980f2ce3a9f Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 15 Aug 2012 18:31:20 +0100 Subject: [PATCH 096/114] Fixed: horizontal text jump when editing text fields in some browsers. We were compensating for a bug in Safari, older versions of Chrome and Firefox in our input placement. But new Chrome and neither IE 8 nor IE 9 needed it which resulted in the text being off in those browsers. --- AppKit/CPCompatibility.j | 10 ++++++++++ AppKit/CPTextField.j | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/AppKit/CPCompatibility.j b/AppKit/CPCompatibility.j index 1791b3567..d2a8b0279 100644 --- a/AppKit/CPCompatibility.j +++ b/AppKit/CPCompatibility.j @@ -70,6 +70,9 @@ CPSOPDisabledFromFileURLs = 1 << 27; // element.style.font can be set for an element not in the DOM. CPInputSetFontOutsideOfDOM = 1 << 28; +// Input elements have 1 px of extra padding on the left regardless of padding setting. +CPInput1PxLeftPadding = 1 << 29; + var USER_AGENT = "", PLATFORM_ENGINE = CPUnknownBrowserEngine, PLATFORM_FEATURES = 0; @@ -142,6 +145,10 @@ else if (USER_AGENT.indexOf("AppleWebKit/") != -1) if (majorVersion < 532 || (majorVersion === 532 && minorVersion < 6)) PLATFORM_FEATURES |= CPHTML5DragAndDropSourceYOffBy1; + // This is supposedly fixed in webkit r123603. Seems to work in Chrome 21 but not Safari 6.0. + if (majorVersion < 537) + PLATFORM_FEATURES |= CPInput1PxLeftPadding; + if (USER_AGENT.indexOf("Chrome") === CPNotFound) PLATFORM_FEATURES |= CPSOPDisabledFromFileURLs; } @@ -167,6 +174,9 @@ else if (USER_AGENT.indexOf("Gecko") !== -1) // Must follow KHTML check. if (version < 3.0) PLATFORM_FEATURES |= CPJavaScriptMouseWheelValues_8_15; + + // Some day this might be fixed and should be version prefixed. No known fixed version yet. + PLATFORM_FEATURES |= CPInput1PxLeftPadding; } // Feature Specific Checks diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index 47f2511ee..8c0360197 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -545,7 +545,11 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); } element.style.top = topPoint; - element.style.left = (_CGRectGetMinX(contentRect) - 1) + "px"; // -1 because input element seems to have 1px left inset + var left = _CGRectGetMinX(contentRect); + // If the browser has a built in left padding, compensate for it. We need the input text to be exactly on top of the original text. + if (CPFeatureIsCompatible(CPInput1PxLeftPadding)) + left -= 1; + element.style.left = left + "px"; element.style.width = _CGRectGetWidth(contentRect) + "px"; element.style.height = ROUND(lineHeight) + "px"; element.style.lineHeight = ROUND(lineHeight) + "px"; From 1a467f92087c8aaca49c6eacbe519de1f08a18a6 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 15 Aug 2012 18:31:39 +0100 Subject: [PATCH 097/114] Test text fields with various sizes. --- Tests/Manual/CPTextField/AppController.j | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Tests/Manual/CPTextField/AppController.j b/Tests/Manual/CPTextField/AppController.j index ccef231bd..11911d466 100644 --- a/Tests/Manual/CPTextField/AppController.j +++ b/Tests/Manual/CPTextField/AppController.j @@ -52,6 +52,28 @@ [contentView addSubview:shadowLabel]; [contentView addSubview:championOfLightLabel]; + var jumpLabel = [CPTextField labelWithTitle:@"The text of these text fields should not move when a field becomes the first responder."]; + + [jumpLabel sizeToFit]; + [jumpLabel setFrameOrigin:CGPointMake(15, 150)]; + [contentView addSubview:jumpLabel]; + + var y = CGRectGetMaxY([jumpLabel frame]) + 10; + + for (var i = 0; i < 5; i++) + { + var size = 10 + 3 * i, + textField = [CPTextField textFieldWithStringValue:@"Size " + size placeholder:@"Size " + size width:200]; + + [textField setFont:[CPFont systemFontOfSize:size]]; + [textField sizeToFit]; + [textField setFrameOrigin:CGPointMake(15, y)]; + + y = CGRectGetMaxY([textField frame]) + 6; + + [contentView addSubview:textField]; + } + [theWindow orderFront:self]; aWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(150, 300, 400, 150) styleMask:CPTitledWindowMask | CPClosableWindowMask | CPDocModalWindowMask]; From 7abaa30526e91b9355ad0baa8e53a38afb3a0d6a Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 16 Aug 2012 19:03:18 +0100 Subject: [PATCH 098/114] Refs #1001. Fixed: text field cut/paste by context menu would not trigger a change notification. Also just regular copy and paste could fail to trigger notifications. --- AppKit/CPCompatibility.j | 11 +++++++++++ AppKit/CPTextField.j | 22 +++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/AppKit/CPCompatibility.j b/AppKit/CPCompatibility.j index d2a8b0279..30ea26f3e 100644 --- a/AppKit/CPCompatibility.j +++ b/AppKit/CPCompatibility.j @@ -72,6 +72,7 @@ CPInputSetFontOutsideOfDOM = 1 << 28; // Input elements have 1 px of extra padding on the left regardless of padding setting. CPInput1PxLeftPadding = 1 << 29; +CPInputOnInputEventFeature = 1 << 30; var USER_AGENT = "", PLATFORM_ENGINE = CPUnknownBrowserEngine, @@ -202,6 +203,16 @@ if (typeof document != "undefined") PLATFORM_FEATURES |= CPJavaScriptInnerTextFeature; else if (DOMElement.textContent != undefined) PLATFORM_FEATURES |= CPJavaScriptTextContentFeature; + + var DOMInputElement = document.createElement("input"); + if ("oninput" in DOMInputElement) + PLATFORM_FEATURES |= CPInputOnInputEventFeature; + else + { + DOMInputElement.setAttribute("oninput", "return;"); + if (typeof DOMInputElement.oninput === "function") + PLATFORM_FEATURES |= CPInputOnInputEventFeature; + } } function CPFeatureIsCompatible(aFeature) diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index 8c0360197..8c7120acf 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -46,7 +46,8 @@ var CPTextFieldDOMInputElement = nil, CPTextFieldInputIsActive = NO, CPTextFieldCachedSelectStartFunction = nil, CPTextFieldCachedDragFunction = nil, - CPTextFieldBlurFunction = nil; + CPTextFieldBlurFunction = nil, + CPTextFieldInputFunction = nil; #endif @@ -211,6 +212,25 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; }; + if (CPFeatureIsCompatible(CPInputOnInputEventFeature)) + { + CPTextFieldInputFunction = function(anEvent) + { + if (!CPTextFieldInputOwner) + return; + + var cappEvent = [CPEvent keyEventWithType:CPKeyUp location:_CGPointMakeZero() modifierFlags:0 + timestamp:[CPEvent currentTimestamp] windowNumber:[[CPApp keyWindow] windowNumber] context:nil + characters:nil charactersIgnoringModifiers:nil isARepeat:NO keyCode:nil]; + + [CPTextFieldInputOwner keyUp:cappEvent]; + + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; + } + + CPTextFieldDOMInputElement.oninput = CPTextFieldInputFunction; + } + //FIXME make this not onblur CPTextFieldDOMInputElement.onblur = CPTextFieldBlurFunction; From 876757e74814ce344cbe23c725f676f06bd5f2ee Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 16 Aug 2012 19:13:30 +0100 Subject: [PATCH 099/114] Refs #1001. Don't use old cut/paste workaround if oninput fix is available. --- AppKit/CPTextField.j | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index 8c7120acf..07d52f7dd 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -1202,7 +1202,8 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [self copy:sender]; [self deleteBackward:sender]; } - else + // If we don't have an oninput listener, we won't detect the change made by the cut and need to fake a key up "soon". + else if (!CPFeatureIsCompatible(CPInputOnInputEventFeature)) [CPTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(keyUp:) userInfo:nil repeats:NO]; } @@ -1224,7 +1225,8 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [self setStringValue:newValue]; [self setSelectedRange:CPMakeRange(selectedRange.location + pasteString.length, 0)]; } - else + // If we don't have an oninput listener, we won't detect the change made by the cut and need to fake a key up "soon". + else if (!CPFeatureIsCompatible(CPInputOnInputEventFeature)) [CPTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(keyUp:) userInfo:nil repeats:NO]; } From 3dffbd6071a052bb921dcc08aaa3a4c0cd17de57 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 16 Aug 2012 19:13:59 +0100 Subject: [PATCH 100/114] Refs #1001. Make it easy to test text field cut/paste behaviour. --- Tests/Manual/CPTextField/AppController.j | 25 ++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/Tests/Manual/CPTextField/AppController.j b/Tests/Manual/CPTextField/AppController.j index 11911d466..78e54d206 100644 --- a/Tests/Manual/CPTextField/AppController.j +++ b/Tests/Manual/CPTextField/AppController.j @@ -52,7 +52,7 @@ [contentView addSubview:shadowLabel]; [contentView addSubview:championOfLightLabel]; - var jumpLabel = [CPTextField labelWithTitle:@"The text of these text fields should not move when a field becomes the first responder."]; + var jumpLabel = [CPTextField labelWithTitle:@"The text of these text fields should not move ('jump') when a field becomes the first responder. Labels on the right should replicate the input."]; [jumpLabel sizeToFit]; [jumpLabel setFrameOrigin:CGPointMake(15, 150)]; @@ -63,15 +63,24 @@ for (var i = 0; i < 5; i++) { var size = 10 + 3 * i, - textField = [CPTextField textFieldWithStringValue:@"Size " + size placeholder:@"Size " + size width:200]; + textField = [CPTextField textFieldWithStringValue:@"Size " + size placeholder:@"Size " + size width:200], + echoField = [CPTextField labelWithTitle:""]; [textField setFont:[CPFont systemFontOfSize:size]]; [textField sizeToFit]; [textField setFrameOrigin:CGPointMake(15, y)]; + textField.echoField = echoField; + [contentView addSubview:textField]; + + [echoField setFont:[CPFont systemFontOfSize:size]]; + [echoField setStringValue:[textField stringValue]]; + [echoField sizeToFit]; + [echoField setFrameOrigin:CGPointMake(CGRectGetMaxX([textField frame]) + 15, CGRectGetMidY([textField frame]) - CGRectGetHeight([echoField frame]) / 2.0)]; + [contentView addSubview:echoField]; + + [[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange:) name:CPControlTextDidChangeNotification object:textField]; y = CGRectGetMaxY([textField frame]) + 6; - - [contentView addSubview:textField]; } [theWindow orderFront:self]; @@ -111,4 +120,12 @@ [sender setEditable:NO]; } +- (void)textDidChange:(CPNotification)aNotification +{ + var changedField = [aNotification object]; + + [changedField.echoField setStringValue:[changedField stringValue]]; + [changedField.echoField sizeToFit]; +} + @end From fea31d54f81e039ad7618f0682108f052d2fff58 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Fri, 17 Aug 2012 20:14:26 -0700 Subject: [PATCH 101/114] Update comments to remove references to .xCodeSupport --- Tools/XcodeCapp/TNXCodeCapp.m | 6 +++--- Tools/XcodeCapp/help.rtfd/TXT.rtf | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Tools/XcodeCapp/TNXCodeCapp.m b/Tools/XcodeCapp/TNXCodeCapp.m index c6f660d13..a77736932 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.m +++ b/Tools/XcodeCapp/TNXCodeCapp.m @@ -481,7 +481,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification /*! - Check if .xCodeSupport needs to be initialized. + Check if .XcodeSupport needs to be initialized. If not needed, check that all J files are mirrored. If no, then launch conversion for missing mirrored h files @return YES or NO @@ -523,7 +523,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification } /*! - Create the .xCodeSupport/Sources folder if necessary. + Create the .XcodeSupport/Sources folder if necessary. */ - (void)createXcodeSupportProjectSourcesDirIfNecessary { @@ -535,7 +535,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification } /*! - Initialize the creation of the .xCodeSupport project. This + Initialize the creation of the .XcodeSupport project. This Operation is threaded @param arguments Thread arguments (not used) @param shouldNotify is YES, XCCDidPopulateProjectNotification will be send diff --git a/Tools/XcodeCapp/help.rtfd/TXT.rtf b/Tools/XcodeCapp/help.rtfd/TXT.rtf index 23be8a208..26ff5110a 100644 --- a/Tools/XcodeCapp/help.rtfd/TXT.rtf +++ b/Tools/XcodeCapp/help.rtfd/TXT.rtf @@ -1,4 +1,4 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf320 +{\rtf1\ansi\ansicpg1252\cocoartf1187 {\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fswiss\fcharset0 Helvetica;\f2\fmodern\fcharset0 Courier; } {\colortbl;\red255\green255\blue255;} @@ -147,7 +147,7 @@ Note that in addition to whatever patterns you specify (if any), XcodeCapp */.svn/*\ */.hg/*\ */Frameworks/*\ -*/.xCodeSupport/*\ +*/.XcodeSupport/*\ */Build/*\ */NS_*.j\ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural From 4fbd0fdc42e96cf7547bba6bcb643efe63158fc9 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sun, 19 Aug 2012 16:50:09 +0100 Subject: [PATCH 102/114] Unit test `KVCArray setArray:` behaviour. --- Tests/Foundation/CPKVCArrayTest.j | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/Tests/Foundation/CPKVCArrayTest.j b/Tests/Foundation/CPKVCArrayTest.j index 6b893d9bc..448e41175 100644 --- a/Tests/Foundation/CPKVCArrayTest.j +++ b/Tests/Foundation/CPKVCArrayTest.j @@ -15,7 +15,7 @@ var COUNTER; COUNTER = 0; } -- (void)_patchSelector:(SEL)theSelector +- (void)_patchSelector:(SEL)selectors, ... { var method_dtable = [[self object] class].method_dtable, method_list = [[self object] class].method_list, @@ -40,10 +40,14 @@ var COUNTER; [method_list removeObject:implementation]; } - var method = class_getInstanceMethod([[self implementedObject] class], theSelector), - implementation = method_getImplementation(method); + for (var i = 2; i < arguments.length; i++) + { + var theSelector = arguments[i], + method = class_getInstanceMethod([[self implementedObject] class], theSelector), + implementation = method_getImplementation(method); - class_addMethod([[self object] class], theSelector, implementation); + class_addMethod([[self object] class], theSelector, implementation); + } } - (void)testUsesCountOfKey @@ -299,6 +303,20 @@ var COUNTER; message:@"replaceObjectInValuesAtIndexes:withValues: should have been called once"]; } +- (void)testSetArray +{ + [self _patchSelector:@selector(removeObjectFromValuesAtIndex:), @selector(insertObject:inValuesAtIndex:)]; + + // This should result in all 10 objects being removed from the values and the 2 new ones being inserted + // in a KVO compliant manner. + [[[self object] mutableArrayValueForKey:@"values"] setArray:[88, 99]]; + + [self assert:[88, 99] equals:[[self object] values]]; + [self assert:12 + equals:COUNTER + message:@"removeObjectFromValuesAtIndex: should have been called 10 times and insertObject:inValuesAtIndex: 2 times"]; +} + - (void)testKVCArrayOperators { var one = [1, 1, 1, 1, 1, 1, 1, 1], @@ -382,7 +400,7 @@ var COUNTER; - (void)insertObject:(id)theObject inValuesAtIndex:(int)theIndex { - // CPLog.warn(@"insertObject: %@ inValuesAtIndex: %@", theObject, theIndex); + CPLog.warn(@"insertObject: %@ inValuesAtIndex: %@", theObject, theIndex); COUNTER += 1; [[self values] insertObject:theObject atIndex:theIndex]; @@ -398,7 +416,7 @@ var COUNTER; - (void)removeObjectFromValuesAtIndex:(int)theIndex { - // CPLog.warn(@"removeObjectFromValuesAtIndex: %@", theIndex); + CPLog.warn(@"removeObjectFromValuesAtIndex: %@", theIndex); COUNTER += 1; [[self values] removeObjectAtIndex:theIndex]; From 1514e8e98178322066061abd9753c2114d231ebd Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sun, 19 Aug 2012 17:16:09 +0100 Subject: [PATCH 103/114] Fixed: don't crash in unit tests if using Rhino. Apparently Rhino doesn't have `.setAttribute` and an error would be thrown in `CPCompatibility.j`: `Cannot find function setAttribute in object [object Object].` --- AppKit/CPCompatibility.j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AppKit/CPCompatibility.j b/AppKit/CPCompatibility.j index 30ea26f3e..639c301b0 100644 --- a/AppKit/CPCompatibility.j +++ b/AppKit/CPCompatibility.j @@ -207,7 +207,7 @@ if (typeof document != "undefined") var DOMInputElement = document.createElement("input"); if ("oninput" in DOMInputElement) PLATFORM_FEATURES |= CPInputOnInputEventFeature; - else + else if (typeof DOMInputElement.setAttribute === "function") { DOMInputElement.setAttribute("oninput", "return;"); if (typeof DOMInputElement.oninput === "function") From 6d4ce10150604c4a3ecd045d20c31ee197c1d656 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 21 Aug 2012 01:24:36 +0100 Subject: [PATCH 104/114] Formatting. --- Tests/Foundation/CPObjectTest.j | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Tests/Foundation/CPObjectTest.j b/Tests/Foundation/CPObjectTest.j index 8de2fe4b4..5b8f487de 100644 --- a/Tests/Foundation/CPObjectTest.j +++ b/Tests/Foundation/CPObjectTest.j @@ -21,11 +21,11 @@ [self assert:[CPObject version] equals:0]; // create a random new version and round it to an integer - var newVersion = ROUND(RAND()*100); + var newVersion = ROUND(RAND() * 100); // make sure it's not zero while (newVersion == 0) - newVersion = ROUND(RAND()*100); + newVersion = ROUND(RAND() * 100); [CPObject setVersion:newVersion]; @@ -35,18 +35,18 @@ - (void)testMultipleArgumentPerformSelector { - var receiver = [[Receiver alloc] init]; - - var value1 = "a", + var receiver = [[Receiver alloc] init], + + value1 = "a", value2 = "b", value3 = "c", value4 = "d", - selector = @selector(implements:multiple:argument:selector:); - - var returnValue = [receiver performSelector:selector withObjects:value1, value2, value3, value4]; - - var expectedReturnValue = value1 + value2 + value3 + value4; - + selector = @selector(implements:multiple:argument:selector:), + + returnValue = [receiver performSelector:selector withObjects:value1, value2, value3, value4], + + expectedReturnValue = value1 + value2 + value3 + value4; + [self assertTrue:expectedReturnValue === returnValue]; } From b032c9e455df8bb00f90c1f943c287fd4fca2da4 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 21 Aug 2012 22:37:08 +0100 Subject: [PATCH 105/114] Fixed: `objcc --includeTypeSignatures` typo. --- Objective-J/CommonJS/lib/objective-j/compiler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Objective-J/CommonJS/lib/objective-j/compiler.js b/Objective-J/CommonJS/lib/objective-j/compiler.js index b55264689..f7b15a8a1 100644 --- a/Objective-J/CommonJS/lib/objective-j/compiler.js +++ b/Objective-J/CommonJS/lib/objective-j/compiler.js @@ -189,7 +189,7 @@ exports.main = function(args) continue; } - if (argv[0] === "-T" || argv[0] === "--incluceTypeSignatures") + if (argv[0] === "-T" || argv[0] === "--includeTypeSignatures") { objjcFlags |= ObjectiveJ.Preprocessor.Flags.IncludeTypeSignatures; argv.shift(); From 3cdf4fbc88fbdef29161a821a1f611141ea8af0a Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 21 Aug 2012 23:18:24 +0100 Subject: [PATCH 106/114] RC2 bootstrap. --- bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bootstrap.sh b/bootstrap.sh index 5491ddb04..dd4d6948f 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -139,7 +139,7 @@ install_directory="" tmp_zip="/tmp/cappuccino.zip" github_user="cappuccino" -github_ref="v0.9.6-RC1" +github_ref="v0.9.6-RC2" noprompt="" install_capp="" From 9cbc52e858184af239a21f88fa07e0142fcd4196 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Wed, 22 Aug 2012 22:35:53 +0100 Subject: [PATCH 107/114] Cappuccino v0.9.6 RC2. --- README.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.markdown b/README.markdown index 5a4c78b13..d50f07ee2 100644 --- a/README.markdown +++ b/README.markdown @@ -33,7 +33,7 @@ Getting Started --------------- To get started, download and install the current release version of Cappuccino: - $ curl https://raw.github.com/cappuccino/cappuccino/v0.9.6-RC1/bootstrap.sh >/tmp/cappuccino_bootstrap.sh && bash /tmp/cappuccino_bootstrap.sh + $ curl https://raw.github.com/cappuccino/cappuccino/v0.9.6-RC2/bootstrap.sh >/tmp/cappuccino_bootstrap.sh && bash /tmp/cappuccino_bootstrap.sh If you'd just like to get started using Cappuccino for your web apps, you are done. From 46848562d046118a5e38c43bece36e3c86514c24 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Fri, 24 Aug 2012 17:25:37 +0100 Subject: [PATCH 108/114] Improve `describe` format of `CPDictionary` and `CPArray` to be more like literals. E.g. a dictionary is expressed as @{key1: value1}, an array like @[value2, value2], a string like @"". Also don't put all child objects into quotation marks - that makes them all look like strings. --- Foundation/CPArray/CPArray.j | 4 ++-- Foundation/CPDictionary.j | 4 ++-- Foundation/CPObject.j | 4 ++++ Tests/Foundation/CPDictionaryTest.j | 2 ++ Tests/Foundation/CPMutableArrayTest.j | 4 ++-- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Foundation/CPArray/CPArray.j b/Foundation/CPArray/CPArray.j index 7507a21d6..d835196ad 100755 --- a/Foundation/CPArray/CPArray.j +++ b/Foundation/CPArray/CPArray.j @@ -872,7 +872,7 @@ var concat = Array.prototype.concat, { var index = 0, count = [self count], - description = "("; + description = "@["; for (; index < count; ++index) { @@ -888,7 +888,7 @@ var concat = Array.prototype.concat, description += "\n"; } - return description + ")"; + return description + "]"; } // Collecting paths diff --git a/Foundation/CPDictionary.j b/Foundation/CPDictionary.j index 1f3257cf5..e63313c75 100755 --- a/Foundation/CPDictionary.j +++ b/Foundation/CPDictionary.j @@ -633,7 +633,7 @@ */ - (CPString)description { - var string = "{\n\t", + var string = "@{\n", keys = _keys, index = 0, count = _count; @@ -643,7 +643,7 @@ var key = keys[index], value = valueForKey(key); - string += key + " = \"" + CPDescriptionOfObject(value).split('\n').join("\n\t") + "\"\n\t"; + string += "\t" + key + ": " + CPDescriptionOfObject(value).split('\n').join("\n\t") + ",\n"; } return string + "}"; diff --git a/Foundation/CPObject.j b/Foundation/CPObject.j index 6af4622d6..5590a2048 100644 --- a/Foundation/CPObject.j +++ b/Foundation/CPObject.j @@ -533,7 +533,11 @@ CPLog(@"Got some class: %@", inst); function CPDescriptionOfObject(anObject) { if (anObject.isa) + { + if ([anObject isKindOfClass:CPString]) + return '@"' + [anObject description] + '"'; return [anObject description]; + } if (typeof(anObject) !== "object") return String(anObject); diff --git a/Tests/Foundation/CPDictionaryTest.j b/Tests/Foundation/CPDictionaryTest.j index 96a6651ec..cd7e43c1f 100644 --- a/Tests/Foundation/CPDictionaryTest.j +++ b/Tests/Foundation/CPDictionaryTest.j @@ -395,6 +395,8 @@ [self assertTrue:d.indexOf("height: 4") !== -1 message:"Can't find 'height: 4' in description of dictionary " + d]; [self assertTrue:d.indexOf("x: 5") !== -1 message:"Can't find 'x: 5' in description of dictionary " + d]; [self assertTrue:d.indexOf("y: 6") !== -1 message:"Can't find 'y: 6' in description of dictionary " + d]; + + [self assert:'@{\n\tkey1: @[\n\t\t@"1",\n\t\t@"2",\n\t\t@"3"\n\t],\n\tkey2: @"This is a string",\n\tkey3: @{\n\t\tanother: @"object",\n\t},\n}' equals:[json_dict description]]; } @end diff --git a/Tests/Foundation/CPMutableArrayTest.j b/Tests/Foundation/CPMutableArrayTest.j index 47e06311b..4cdf8cbee 100644 --- a/Tests/Foundation/CPMutableArrayTest.j +++ b/Tests/Foundation/CPMutableArrayTest.j @@ -380,11 +380,11 @@ [pretty sortUsingDescriptors:[[[CPSortDescriptor alloc] initWithKey:@"value" ascending:NO]]]; - [self assert:"(\n\t3:d,\n\t2:c,\n\t1:b,\n\t0:a\n)" equals:[pretty description]]; + [self assert:"@[\n\t3:d,\n\t2:c,\n\t1:b,\n\t0:a\n]" equals:[pretty description]]; [pretty sortUsingDescriptors:[[[CPSortDescriptor alloc] initWithKey:@"value" ascending:YES]]]; - [self assert:"(\n\t0:a,\n\t1:b,\n\t2:c,\n\t3:d\n)" equals:[pretty description]]; + [self assert:"@[\n\t0:a,\n\t1:b,\n\t2:c,\n\t3:d\n]" equals:[pretty description]]; } - (void)testThatCPArrayDoesSortUsingTwoDescriptors From b28673d23d125477d4439d33de6063a1043b9d5c Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Fri, 24 Aug 2012 17:26:27 +0100 Subject: [PATCH 109/114] Eliminate some debug output from `jake test` runs. --- Tests/Foundation/CPKVCArrayTest.j | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/Foundation/CPKVCArrayTest.j b/Tests/Foundation/CPKVCArrayTest.j index 448e41175..cc96e2ffa 100644 --- a/Tests/Foundation/CPKVCArrayTest.j +++ b/Tests/Foundation/CPKVCArrayTest.j @@ -400,7 +400,7 @@ var COUNTER; - (void)insertObject:(id)theObject inValuesAtIndex:(int)theIndex { - CPLog.warn(@"insertObject: %@ inValuesAtIndex: %@", theObject, theIndex); + // CPLog.warn(@"insertObject: %@ inValuesAtIndex: %@", theObject, theIndex); COUNTER += 1; [[self values] insertObject:theObject atIndex:theIndex]; @@ -416,7 +416,7 @@ var COUNTER; - (void)removeObjectFromValuesAtIndex:(int)theIndex { - CPLog.warn(@"removeObjectFromValuesAtIndex: %@", theIndex); + // CPLog.warn(@"removeObjectFromValuesAtIndex: %@", theIndex); COUNTER += 1; [[self values] removeObjectAtIndex:theIndex]; From d1c978669bdb2c1f2cd4814bdb473606f77b0fa1 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Fri, 24 Aug 2012 11:48:55 -0700 Subject: [PATCH 110/114] run ImageOptim on all images. Saved around 30% of original size --- AppKit/Resources/CPApplication/New.png | Bin 497 -> 455 bytes .../CPApplication/NewHighlighted.png | Bin 486 -> 442 bytes AppKit/Resources/CPApplication/Open.png | Bin 617 -> 580 bytes .../CPApplication/OpenHighlighted.png | Bin 578 -> 541 bytes AppKit/Resources/CPApplication/Save.png | Bin 438 -> 409 bytes .../CPApplication/SaveHighlighted.png | Bin 462 -> 402 bytes ...tached-window-button-close-highlighted.png | Bin 1377 -> 339 bytes .../attached-window-button-close.png | Bin 1375 -> 338 bytes .../CPImage/CPImageNameColorPanel.png | Bin 1902 -> 1776 bytes .../CPImageNameColorPanelHighlighted.png | Bin 1798 -> 1682 bytes .../CPImageViewBottomLeftShadow.png | Bin 206 -> 144 bytes .../CPImageViewBottomRightShadow.png | Bin 206 -> 144 bytes .../CPImageView/CPImageViewBottomShadow.png | Bin 125 -> 84 bytes .../CPImageView/CPImageViewLeftShadow.png | Bin 112 -> 72 bytes .../CPImageView/CPImageViewRightShadow.png | Bin 116 -> 72 bytes .../CPImageView/CPImageViewTopLeftShadow.png | Bin 182 -> 128 bytes .../CPImageView/CPImageViewTopRightShadow.png | Bin 190 -> 138 bytes .../CPImageView/CPImageViewTopShadow.png | Bin 115 -> 77 bytes .../level-indicator-bezel-center.png | Bin 126 -> 81 bytes .../level-indicator-bezel-left.png | Bin 166 -> 106 bytes .../level-indicator-bezel-right.png | Bin 165 -> 108 bytes ...evel-indicator-segment-critical-center.png | Bin 184 -> 143 bytes .../level-indicator-segment-critical-left.png | Bin 215 -> 172 bytes ...level-indicator-segment-critical-right.png | Bin 235 -> 194 bytes .../level-indicator-segment-empty-center.png | Bin 169 -> 108 bytes .../level-indicator-segment-empty-left.png | Bin 198 -> 126 bytes .../level-indicator-segment-empty-right.png | Bin 205 -> 131 bytes .../level-indicator-segment-normal-center.png | Bin 191 -> 146 bytes .../level-indicator-segment-normal-left.png | Bin 212 -> 173 bytes .../level-indicator-segment-normal-right.png | Bin 242 -> 195 bytes ...level-indicator-segment-warning-center.png | Bin 186 -> 147 bytes .../level-indicator-segment-warning-left.png | Bin 216 -> 172 bytes .../level-indicator-segment-warning-right.png | Bin 229 -> 189 bytes .../CPMenuItem/CPMenuItemOnState.png | Bin 186 -> 114 bytes .../CPMenuItemOnStateHighlighted.png | Bin 181 -> 111 bytes .../CPProgressIndicatorBarBarRegular0.png | Bin 259 -> 218 bytes .../CPProgressIndicatorBarBarRegular1.png | Bin 164 -> 123 bytes .../CPProgressIndicatorBarBarRegular2.png | Bin 252 -> 213 bytes .../CPProgressIndicatorBarHUDBarRegular0.png | Bin 246 -> 205 bytes .../CPProgressIndicatorBarHUDBarRegular1.png | Bin 178 -> 120 bytes .../CPProgressIndicatorBarHUDBarRegular2.png | Bin 244 -> 205 bytes ...rogressIndicatorBezelBorderBarRegular0.png | Bin 222 -> 142 bytes ...rogressIndicatorBezelBorderBarRegular1.png | Bin 169 -> 88 bytes ...rogressIndicatorBezelBorderBarRegular2.png | Bin 220 -> 137 bytes ...ressIndicatorBezelBorderHUDBarRegular0.png | Bin 220 -> 140 bytes ...ressIndicatorBezelBorderHUDBarRegular1.png | Bin 141 -> 89 bytes ...ressIndicatorBezelBorderHUDBarRegular2.png | Bin 222 -> 140 bytes .../CPProgressIndicatorSpinningStyleMini.gif | Bin 4685 -> 2526 bytes ...PProgressIndicatorSpinningStyleRegular.gif | Bin 4481 -> 3120 bytes .../CPProgressIndicatorSpinningStyleSmall.gif | Bin 8796 -> 5956 bytes .../CPSearchField/CPSearchFieldCancel.png | Bin 956 -> 256 bytes .../CPSearchFieldCancelPressed.png | Bin 976 -> 239 bytes .../CPSearchField/CPSearchFieldFind.png | Bin 958 -> 325 bytes .../CPSearchField/CPSearchFieldSearch.png | Bin 938 -> 302 bytes .../CPShadowView/CPShadowViewHeavyBottom.png | Bin 123 -> 86 bytes .../CPShadowViewHeavyBottomLeft.png | Bin 265 -> 228 bytes .../CPShadowViewHeavyBottomRight.png | Bin 271 -> 234 bytes .../CPShadowView/CPShadowViewHeavyLeft.png | Bin 128 -> 82 bytes .../CPShadowView/CPShadowViewHeavyRight.png | Bin 126 -> 80 bytes .../CPShadowView/CPShadowViewHeavyTop.png | Bin 125 -> 88 bytes .../CPShadowView/CPShadowViewHeavyTopLeft.png | Bin 243 -> 206 bytes .../CPShadowViewHeavyTopRight.png | Bin 270 -> 233 bytes .../CPShadowView/CPShadowViewLightBottom.png | Bin 125 -> 84 bytes .../CPShadowViewLightBottomLeft.png | Bin 206 -> 144 bytes .../CPShadowViewLightBottomRight.png | Bin 206 -> 144 bytes .../CPShadowView/CPShadowViewLightLeft.png | Bin 118 -> 74 bytes .../CPShadowView/CPShadowViewLightRight.png | Bin 116 -> 72 bytes .../CPShadowView/CPShadowViewLightTop.png | Bin 123 -> 79 bytes .../CPShadowView/CPShadowViewLightTopLeft.png | Bin 182 -> 128 bytes .../CPShadowViewLightTopRight.png | Bin 190 -> 138 bytes .../CPSplitView/CPSplitViewHorizontal.png | Bin 128 -> 86 bytes .../CPSplitView/CPSplitViewVertical.png | Bin 128 -> 79 bytes .../CPToolbarItem/CPToolbarItemSeparator0.png | Bin 158 -> 114 bytes .../CPToolbarItem/CPToolbarItemSeparator1.png | Bin 111 -> 70 bytes .../CPToolbarItem/CPToolbarItemSeparator2.png | Bin 157 -> 113 bytes .../CPWindow/CPWindowAttachedSheetShadow.png | Bin 183 -> 112 bytes AppKit/Resources/CPWindow/CPWindowShadow0.png | Bin 245 -> 208 bytes AppKit/Resources/CPWindow/CPWindowShadow1.png | Bin 131 -> 88 bytes AppKit/Resources/CPWindow/CPWindowShadow2.png | Bin 251 -> 214 bytes AppKit/Resources/CPWindow/CPWindowShadow3.png | Bin 124 -> 85 bytes AppKit/Resources/CPWindow/CPWindowShadow4.png | Bin 107 -> 68 bytes AppKit/Resources/CPWindow/CPWindowShadow5.png | Bin 124 -> 84 bytes AppKit/Resources/CPWindow/CPWindowShadow6.png | Bin 258 -> 221 bytes AppKit/Resources/CPWindow/CPWindowShadow7.png | Bin 128 -> 87 bytes AppKit/Resources/CPWindow/CPWindowShadow8.png | Bin 260 -> 223 bytes .../CPWindow/HUD/CPWindowHUDBackground0.png | Bin 1141 -> 172 bytes .../CPWindow/HUD/CPWindowHUDBackground1.png | Bin 1033 -> 97 bytes .../CPWindow/HUD/CPWindowHUDBackground2.png | Bin 1166 -> 184 bytes .../CPWindow/HUD/CPWindowHUDBackground3.png | Bin 1002 -> 80 bytes .../CPWindow/HUD/CPWindowHUDBackground4.png | Bin 997 -> 74 bytes .../CPWindow/HUD/CPWindowHUDBackground5.png | Bin 1002 -> 80 bytes .../CPWindow/HUD/CPWindowHUDBackground6.png | Bin 1017 -> 94 bytes .../CPWindow/HUD/CPWindowHUDBackground7.png | Bin 1000 -> 74 bytes .../CPWindow/HUD/CPWindowHUDBackground8.png | Bin 1019 -> 93 bytes .../Standard/CPWindowStandardCloseButton.png | Bin 608 -> 425 bytes ...CPWindowStandardCloseButtonHighlighted.png | Bin 589 -> 420 bytes .../CPWindowStandardCloseButtonUnsaved.png | Bin 757 -> 630 bytes ...wStandardCloseButtonUnsavedHighlighted.png | Bin 753 -> 617 bytes .../CPWindowStandardMaximizeButton.png | Bin 713 -> 418 bytes ...indowStandardMaximizeButtonHighlighted.png | Bin 722 -> 416 bytes .../CPWindowStandardMinimizeButton.png | Bin 661 -> 414 bytes ...indowStandardMinimizeButtonHighlighted.png | Bin 683 -> 407 bytes .../Standard/CPWindowStandardTop0.png | Bin 187 -> 150 bytes .../Standard/CPWindowStandardTop1.png | Bin 128 -> 81 bytes .../Standard/CPWindowStandardTop2.png | Bin 188 -> 151 bytes AppKit/Resources/CPWindowResizeIndicator.png | Bin 189 -> 151 bytes AppKit/Resources/FIXME_ImageShadow.png | Bin 561 -> 524 bytes AppKit/Resources/GenericFile.png | Bin 1449 -> 1139 bytes AppKit/Resources/HUDTheme/WindowClose.png | Bin 1580 -> 473 bytes .../Resources/HUDTheme/WindowCloseActive.png | Bin 1765 -> 547 bytes .../_CPMenuBarWindowBackground.png | Bin 147 -> 106 bytes .../_CPMenuBarWindowBackgroundSelected.png | Bin 151 -> 110 bytes .../_CPMenuWindow/_CPMenuWindow1.png | Bin 116 -> 73 bytes .../_CPMenuWindow/_CPMenuWindow3.png | Bin 109 -> 70 bytes .../_CPMenuWindow/_CPMenuWindow4.png | Bin 106 -> 82 bytes .../_CPMenuWindow/_CPMenuWindow5.png | Bin 109 -> 70 bytes .../_CPMenuWindow/_CPMenuWindow7.png | Bin 112 -> 70 bytes .../_CPMenuWindow/_CPMenuWindowMoreAbove.png | Bin 216 -> 175 bytes .../_CPMenuWindow/_CPMenuWindowMoreBelow.png | Bin 221 -> 183 bytes .../_CPMenuWindow/_CPMenuWindowRounded0.png | Bin 148 -> 97 bytes .../_CPMenuWindow/_CPMenuWindowRounded2.png | Bin 148 -> 100 bytes .../_CPMenuWindow/_CPMenuWindowRounded6.png | Bin 139 -> 90 bytes .../_CPMenuWindow/_CPMenuWindowRounded8.png | Bin 142 -> 96 bytes ..._CPToolbarViewExtraItemsAlternateImage.png | Bin 419 -> 258 bytes .../_CPToolbarViewExtraItemsImage.png | Bin 427 -> 261 bytes .../toolbar-background-bottom.png | Bin 108 -> 82 bytes .../toolbar-background-center.png | Bin 193 -> 144 bytes .../_CPToolbarView/toolbar-background-top.png | Bin 109 -> 82 bytes .../_CPWindowViewResizeIndicator.png | Bin 189 -> 151 bytes AppKit/Resources/action_button.png | Bin 506 -> 352 bytes AppKit/Resources/brightness_bar.png | Bin 232 -> 195 bytes AppKit/Resources/browser-leaf-highlighted.png | Bin 304 -> 184 bytes AppKit/Resources/browser-leaf.png | Bin 321 -> 182 bytes AppKit/Resources/browser-resize-control.png | Bin 162 -> 123 bytes AppKit/Resources/color_well.png | Bin 219 -> 133 bytes AppKit/Resources/empty.png | Bin 110 -> 68 bytes AppKit/Resources/minus_button.png | Bin 115 -> 72 bytes AppKit/Resources/plus_button.png | Bin 159 -> 100 bytes AppKit/Resources/slider_button.png | Bin 253 -> 195 bytes AppKit/Resources/slider_button_h.png | Bin 252 -> 206 bytes AppKit/Resources/standardApplicationIcon.png | Bin 13275 -> 11168 bytes AppKit/Resources/wheel.png | Bin 81812 -> 77631 bytes AppKit/Resources/wheel_black.png | Bin 8385 -> 8034 bytes AppKit/Resources/wheel_button.png | Bin 2013 -> 1914 bytes AppKit/Resources/wheel_button_h.png | Bin 1869 -> 1798 bytes .../Resources/HUD/button-bezel-center.png | Bin 170 -> 89 bytes .../HUD/button-bezel-disabled-center.png | Bin 170 -> 89 bytes .../HUD/button-bezel-disabled-left.png | Bin 254 -> 147 bytes .../HUD/button-bezel-disabled-right.png | Bin 257 -> 145 bytes .../HUD/button-bezel-highlighted-center.png | Bin 173 -> 92 bytes .../HUD/button-bezel-highlighted-left.png | Bin 256 -> 146 bytes .../HUD/button-bezel-highlighted-right.png | Bin 261 -> 140 bytes .../Resources/HUD/button-bezel-left.png | Bin 259 -> 148 bytes .../Resources/HUD/button-bezel-right.png | Bin 260 -> 146 bytes .../HUD/button-bezel-rounded-center.png | Bin 1027 -> 92 bytes .../button-bezel-rounded-disabled-center.png | Bin 1027 -> 92 bytes .../button-bezel-rounded-disabled-left.png | Bin 1374 -> 319 bytes .../button-bezel-rounded-disabled-right.png | Bin 1403 -> 326 bytes ...utton-bezel-rounded-highlighted-center.png | Bin 1028 -> 92 bytes .../button-bezel-rounded-highlighted-left.png | Bin 1397 -> 338 bytes ...button-bezel-rounded-highlighted-right.png | Bin 1417 -> 338 bytes .../HUD/button-bezel-rounded-left.png | Bin 1386 -> 337 bytes .../HUD/button-bezel-rounded-right.png | Bin 1428 -> 338 bytes .../HUD/default-button-bezel-center.png | Bin 185 -> 117 bytes .../default-button-bezel-disabled-center.png | Bin 182 -> 115 bytes .../default-button-bezel-disabled-left.png | Bin 261 -> 195 bytes .../default-button-bezel-disabled-right.png | Bin 271 -> 204 bytes ...efault-button-bezel-highlighted-center.png | Bin 157 -> 115 bytes .../default-button-bezel-highlighted-left.png | Bin 248 -> 203 bytes ...default-button-bezel-highlighted-right.png | Bin 242 -> 205 bytes .../HUD/default-button-bezel-left.png | Bin 282 -> 202 bytes .../HUD/default-button-bezel-right.png | Bin 278 -> 206 bytes .../default-button-bezel-rounded-center.png | Bin 1036 -> 113 bytes ...t-button-bezel-rounded-disabled-center.png | Bin 1033 -> 112 bytes ...ult-button-bezel-rounded-disabled-left.png | Bin 1405 -> 483 bytes ...lt-button-bezel-rounded-disabled-right.png | Bin 1448 -> 505 bytes ...utton-bezel-rounded-highlighted-center.png | Bin 1032 -> 111 bytes ...-button-bezel-rounded-highlighted-left.png | Bin 1420 -> 486 bytes ...button-bezel-rounded-highlighted-right.png | Bin 1450 -> 515 bytes .../HUD/default-button-bezel-rounded-left.png | Bin 1415 -> 491 bytes .../default-button-bezel-rounded-right.png | Bin 1474 -> 518 bytes .../Resources/HUD/horizontal-track-center.png | Bin 130 -> 79 bytes .../HUD/horizontal-track-disabled-center.png | Bin 129 -> 78 bytes .../HUD/horizontal-track-disabled-left.png | Bin 182 -> 109 bytes .../HUD/horizontal-track-disabled-right.png | Bin 189 -> 109 bytes .../Resources/HUD/horizontal-track-left.png | Bin 185 -> 110 bytes .../Resources/HUD/horizontal-track-right.png | Bin 193 -> 110 bytes .../Aristo/Resources/HUD/knob-disabled.png | Bin 894 -> 719 bytes .../Aristo/Resources/HUD/knob-highlighted.png | Bin 3822 -> 913 bytes AppKit/Themes/Aristo/Resources/HUD/knob.png | Bin 3694 -> 784 bytes .../HUD/scroller-down-arrow-disabled.png | Bin 524 -> 329 bytes .../HUD/scroller-down-arrow-highlighted.png | Bin 548 -> 348 bytes .../Resources/HUD/scroller-down-arrow.png | Bin 555 -> 351 bytes .../HUD/scroller-horizontal-knob-center.png | Bin 141 -> 87 bytes .../HUD/scroller-horizontal-knob-left.png | Bin 367 -> 238 bytes .../HUD/scroller-horizontal-knob-right.png | Bin 387 -> 252 bytes .../scroller-horizontal-track-disabled.png | Bin 155 -> 102 bytes .../HUD/scroller-left-arrow-disabled.png | Bin 534 -> 347 bytes .../HUD/scroller-left-arrow-highlighted.png | Bin 549 -> 353 bytes .../Resources/HUD/scroller-left-arrow.png | Bin 556 -> 361 bytes .../HUD/scroller-right-arrow-disabled.png | Bin 546 -> 338 bytes .../HUD/scroller-right-arrow-highlighted.png | Bin 555 -> 355 bytes .../Resources/HUD/scroller-right-arrow.png | Bin 567 -> 360 bytes .../HUD/scroller-up-arrow-disabled.png | Bin 496 -> 322 bytes .../HUD/scroller-up-arrow-highlighted.png | Bin 498 -> 338 bytes .../Resources/HUD/scroller-up-arrow.png | Bin 516 -> 347 bytes .../HUD/scroller-vertical-knob-bottom.png | Bin 349 -> 230 bytes .../HUD/scroller-vertical-knob-center.png | Bin 136 -> 83 bytes .../HUD/scroller-vertical-knob-top.png | Bin 366 -> 243 bytes .../HUD/scroller-vertical-track-disabled.png | Bin 151 -> 94 bytes .../Resources/HUD/scroller-vertical-track.png | Bin 154 -> 96 bytes .../HUD/segmented-control-bezel-center.png | Bin 140 -> 89 bytes ...egmented-control-bezel-disabled-center.png | Bin 140 -> 89 bytes ...gmented-control-bezel-disabled-divider.png | Bin 124 -> 79 bytes .../segmented-control-bezel-disabled-left.png | Bin 228 -> 147 bytes ...segmented-control-bezel-disabled-right.png | Bin 227 -> 146 bytes .../HUD/segmented-control-bezel-divider.png | Bin 124 -> 79 bytes ...ented-control-bezel-highlighted-center.png | Bin 159 -> 117 bytes ...trol-bezel-highlighted-disabled-center.png | Bin 159 -> 117 bytes ...rol-bezel-highlighted-disabled-divider.png | Bin 124 -> 79 bytes ...ontrol-bezel-highlighted-disabled-left.png | Bin 241 -> 197 bytes ...ntrol-bezel-highlighted-disabled-right.png | Bin 245 -> 205 bytes ...nted-control-bezel-highlighted-divider.png | Bin 124 -> 79 bytes ...gmented-control-bezel-highlighted-left.png | Bin 244 -> 201 bytes ...mented-control-bezel-highlighted-right.png | Bin 251 -> 206 bytes .../HUD/segmented-control-bezel-left.png | Bin 226 -> 148 bytes .../segmented-control-bezel-pushed-center.png | Bin 146 -> 92 bytes ...ontrol-bezel-pushed-highlighted-center.png | Bin 145 -> 92 bytes ...-control-bezel-pushed-highlighted-left.png | Bin 226 -> 146 bytes ...control-bezel-pushed-highlighted-right.png | Bin 226 -> 140 bytes .../segmented-control-bezel-pushed-left.png | Bin 227 -> 146 bytes .../segmented-control-bezel-pushed-right.png | Bin 227 -> 140 bytes .../HUD/segmented-control-bezel-right.png | Bin 227 -> 145 bytes .../Resources/HUD/slider-circular-bezel.png | Bin 1496 -> 1101 bytes .../HUD/slider-circular-disabled-bezel.png | Bin 1426 -> 1034 bytes .../HUD/slider-circular-disabled-knob.png | Bin 199 -> 119 bytes .../Resources/HUD/slider-circular-knob.png | Bin 199 -> 120 bytes .../Resources/HUD/vertical-track-bottom.png | Bin 184 -> 109 bytes .../Resources/HUD/vertical-track-center.png | Bin 126 -> 76 bytes .../HUD/vertical-track-disabled-bottom.png | Bin 184 -> 108 bytes .../HUD/vertical-track-disabled-center.png | Bin 126 -> 76 bytes .../HUD/vertical-track-disabled-top.png | Bin 211 -> 123 bytes .../Resources/HUD/vertical-track-top.png | Bin 204 -> 126 bytes .../Themes/Aristo/Resources/alert-error.png | Bin 1738 -> 1503 bytes .../Aristo/Resources/alert-help-pressed.png | Bin 2266 -> 1258 bytes AppKit/Themes/Aristo/Resources/alert-help.png | Bin 2254 -> 1223 bytes AppKit/Themes/Aristo/Resources/alert-info.png | Bin 2472 -> 2354 bytes .../Themes/Aristo/Resources/alert-warning.png | Bin 2126 -> 1913 bytes .../Aristo/Resources/button-bezel-center.png | Bin 139 -> 86 bytes .../button-bezel-disabled-center.png | Bin 148 -> 91 bytes .../Resources/button-bezel-disabled-left.png | Bin 221 -> 140 bytes .../Resources/button-bezel-disabled-right.png | Bin 217 -> 142 bytes .../button-bezel-highlighted-center.png | Bin 136 -> 85 bytes .../button-bezel-highlighted-left.png | Bin 225 -> 150 bytes .../button-bezel-highlighted-right.png | Bin 230 -> 149 bytes .../Aristo/Resources/button-bezel-left.png | Bin 212 -> 139 bytes .../Aristo/Resources/button-bezel-right.png | Bin 215 -> 140 bytes .../Resources/button-bezel-rounded-center.png | Bin 1028 -> 91 bytes .../button-bezel-rounded-disabled-center.png | Bin 1023 -> 90 bytes .../button-bezel-rounded-disabled-left.png | Bin 1408 -> 331 bytes .../button-bezel-rounded-disabled-right.png | Bin 1407 -> 332 bytes ...utton-bezel-rounded-highlighted-center.png | Bin 1025 -> 90 bytes .../button-bezel-rounded-highlighted-left.png | Bin 1439 -> 339 bytes ...button-bezel-rounded-highlighted-right.png | Bin 1446 -> 335 bytes .../Resources/button-bezel-rounded-left.png | Bin 1443 -> 335 bytes .../Resources/button-bezel-rounded-right.png | Bin 1437 -> 339 bytes .../Aristo/Resources/buttonbar-bezel.png | Bin 127 -> 80 bytes .../buttonbar-button-bezel-center.png | Bin 122 -> 78 bytes ...buttonbar-button-bezel-disabled-center.png | Bin 123 -> 79 bytes .../buttonbar-button-bezel-disabled-left.png | Bin 130 -> 90 bytes .../buttonbar-button-bezel-disabled-right.png | Bin 145 -> 105 bytes ...tonbar-button-bezel-highlighted-center.png | Bin 125 -> 78 bytes ...uttonbar-button-bezel-highlighted-left.png | Bin 138 -> 98 bytes ...ttonbar-button-bezel-highlighted-right.png | Bin 141 -> 102 bytes .../Resources/buttonbar-button-bezel-left.png | Bin 136 -> 97 bytes .../buttonbar-button-bezel-right.png | Bin 142 -> 103 bytes .../Resources/buttonbar-resize-control.png | Bin 148 -> 93 bytes .../Resources/check-box-image-disabled.png | Bin 283 -> 232 bytes .../Resources/check-box-image-highlighted.png | Bin 289 -> 239 bytes .../check-box-image-mixed-disabled.png | Bin 424 -> 375 bytes .../check-box-image-mixed-highlighted.png | Bin 419 -> 364 bytes .../Resources/check-box-image-mixed.png | Bin 420 -> 369 bytes .../check-box-image-selected-disabled.png | Bin 639 -> 581 bytes .../check-box-image-selected-highlighted.png | Bin 625 -> 577 bytes .../Resources/check-box-image-selected.png | Bin 617 -> 578 bytes .../Aristo/Resources/check-box-image.png | Bin 269 -> 232 bytes .../Resources/colorwell-bezel-center.png | Bin 133 -> 85 bytes .../colorwell-bezel-disabled-center.png | Bin 141 -> 90 bytes .../colorwell-bezel-disabled-left.png | Bin 199 -> 134 bytes .../colorwell-bezel-disabled-right.png | Bin 198 -> 135 bytes .../colorwell-bezel-highlighted-center.png | Bin 143 -> 90 bytes .../colorwell-bezel-highlighted-left.png | Bin 208 -> 134 bytes .../colorwell-bezel-highlighted-right.png | Bin 216 -> 137 bytes .../Aristo/Resources/colorwell-bezel-left.png | Bin 194 -> 129 bytes .../Resources/colorwell-bezel-right.png | Bin 198 -> 130 bytes .../colorwell-content-border-center.png | Bin 118 -> 79 bytes .../colorwell-content-border-left.png | Bin 119 -> 77 bytes .../colorwell-content-border-right.png | Bin 119 -> 77 bytes .../Resources/combobox-bezel-center.png | Bin 145 -> 97 bytes .../combobox-bezel-disabled-center.png | Bin 139 -> 91 bytes .../combobox-bezel-disabled-left.png | Bin 196 -> 143 bytes .../combobox-bezel-disabled-right.png | Bin 487 -> 439 bytes .../combobox-bezel-focused-center.png | Bin 162 -> 114 bytes .../Resources/combobox-bezel-focused-left.png | Bin 383 -> 312 bytes .../combobox-bezel-focused-right.png | Bin 700 -> 650 bytes .../Aristo/Resources/combobox-bezel-left.png | Bin 209 -> 147 bytes .../combobox-bezel-no-border-center.png | Bin 141 -> 94 bytes ...mbobox-bezel-no-border-disabled-center.png | Bin 141 -> 94 bytes ...combobox-bezel-no-border-disabled-left.png | Bin 211 -> 170 bytes ...ombobox-bezel-no-border-disabled-right.png | Bin 392 -> 311 bytes ...ombobox-bezel-no-border-focused-center.png | Bin 162 -> 114 bytes .../combobox-bezel-no-border-focused-left.png | Bin 373 -> 299 bytes ...combobox-bezel-no-border-focused-right.png | Bin 615 -> 456 bytes .../combobox-bezel-no-border-left.png | Bin 220 -> 177 bytes .../combobox-bezel-no-border-right.png | Bin 413 -> 345 bytes .../Aristo/Resources/combobox-bezel-right.png | Bin 527 -> 486 bytes .../Resources/default-button-bezel-center.png | Bin 147 -> 110 bytes .../default-button-bezel-disabled-center.png | Bin 158 -> 116 bytes .../default-button-bezel-disabled-left.png | Bin 260 -> 220 bytes .../default-button-bezel-disabled-right.png | Bin 261 -> 217 bytes ...efault-button-bezel-highlighted-center.png | Bin 146 -> 109 bytes .../default-button-bezel-highlighted-left.png | Bin 246 -> 209 bytes ...default-button-bezel-highlighted-right.png | Bin 253 -> 216 bytes .../Resources/default-button-bezel-left.png | Bin 257 -> 220 bytes .../Resources/default-button-bezel-right.png | Bin 254 -> 217 bytes .../default-button-bezel-rounded-center.png | Bin 1040 -> 116 bytes ...t-button-bezel-rounded-disabled-center.png | Bin 1039 -> 117 bytes ...ult-button-bezel-rounded-disabled-left.png | Bin 1451 -> 536 bytes ...lt-button-bezel-rounded-disabled-right.png | Bin 1474 -> 550 bytes ...utton-bezel-rounded-highlighted-center.png | Bin 1046 -> 123 bytes ...-button-bezel-rounded-highlighted-left.png | Bin 1459 -> 525 bytes ...button-bezel-rounded-highlighted-right.png | Bin 1502 -> 561 bytes .../default-button-bezel-rounded-left.png | Bin 1482 -> 535 bytes .../default-button-bezel-rounded-right.png | Bin 1516 -> 570 bytes .../Resources/horizontal-track-center.png | Bin 118 -> 73 bytes .../horizontal-track-disabled-center.png | Bin 130 -> 76 bytes .../horizontal-track-disabled-left.png | Bin 182 -> 108 bytes .../horizontal-track-disabled-right.png | Bin 185 -> 108 bytes .../Resources/horizontal-track-left.png | Bin 178 -> 108 bytes .../Resources/horizontal-track-right.png | Bin 179 -> 107 bytes .../Themes/Aristo/Resources/knob-disabled.png | Bin 874 -> 700 bytes .../Aristo/Resources/knob-highlighted.png | Bin 947 -> 896 bytes AppKit/Themes/Aristo/Resources/knob.png | Bin 813 -> 768 bytes .../Aristo/Resources/popup-bezel-center.png | Bin 1026 -> 92 bytes .../Resources/popup-bezel-disabled-center.png | Bin 1018 -> 90 bytes .../Resources/popup-bezel-disabled-left.png | Bin 1096 -> 135 bytes .../popup-bezel-disabled-right-pullsdown.png | Bin 1350 -> 414 bytes .../Resources/popup-bezel-disabled-right.png | Bin 1426 -> 504 bytes .../Aristo/Resources/popup-bezel-left.png | Bin 1098 -> 136 bytes .../Resources/popup-bezel-right-pullsdown.png | Bin 1378 -> 445 bytes .../Aristo/Resources/popup-bezel-right.png | Bin 1488 -> 542 bytes .../Aristo/Resources/radio-image-disabled.png | Bin 653 -> 392 bytes .../Resources/radio-image-highlighted.png | Bin 657 -> 389 bytes .../radio-image-selected-disabled.png | Bin 841 -> 650 bytes .../radio-image-selected-highlighted.png | Bin 856 -> 656 bytes .../Aristo/Resources/radio-image-selected.png | Bin 698 -> 661 bytes .../Themes/Aristo/Resources/radio-image.png | Bin 577 -> 392 bytes .../Aristo/Resources/rule-editor-add.png | Bin 591 -> 88 bytes .../Aristo/Resources/rule-editor-remove.png | Bin 576 -> 79 bytes .../scroller-down-arrow-disabled.png | Bin 378 -> 317 bytes .../scroller-down-arrow-highlighted.png | Bin 469 -> 422 bytes .../Aristo/Resources/scroller-down-arrow.png | Bin 455 -> 409 bytes .../scroller-horizontal-knob-center.png | Bin 123 -> 77 bytes .../scroller-horizontal-knob-dark-center.png | Bin 120 -> 76 bytes .../scroller-horizontal-knob-dark-left.png | Bin 162 -> 107 bytes .../scroller-horizontal-knob-dark-right.png | Bin 155 -> 107 bytes .../scroller-horizontal-knob-left.png | Bin 205 -> 123 bytes .../scroller-horizontal-knob-light-center.png | Bin 122 -> 77 bytes .../scroller-horizontal-knob-light-left.png | Bin 158 -> 108 bytes .../scroller-horizontal-knob-light-right.png | Bin 157 -> 105 bytes .../scroller-horizontal-knob-right.png | Bin 208 -> 126 bytes .../scroller-horizontal-track-center.png | Bin 147 -> 86 bytes .../scroller-horizontal-track-dark-center.png | Bin 147 -> 86 bytes .../scroller-horizontal-track-dark-left.png | Bin 185 -> 107 bytes .../scroller-horizontal-track-dark-right.png | Bin 179 -> 105 bytes .../scroller-horizontal-track-left.png | Bin 220 -> 132 bytes ...scroller-horizontal-track-light-center.png | Bin 122 -> 77 bytes .../scroller-horizontal-track-light-left.png | Bin 158 -> 108 bytes .../scroller-horizontal-track-light-right.png | Bin 152 -> 102 bytes .../scroller-horizontal-track-right.png | Bin 218 -> 132 bytes .../scroller-left-arrow-disabled.png | Bin 387 -> 333 bytes .../scroller-left-arrow-highlighted.png | Bin 491 -> 432 bytes .../Aristo/Resources/scroller-left-arrow.png | Bin 469 -> 418 bytes ...scroller-legacy-horizontal-knob-center.png | Bin 123 -> 79 bytes .../scroller-legacy-horizontal-knob-left.png | Bin 158 -> 107 bytes .../scroller-legacy-horizontal-knob-right.png | Bin 157 -> 107 bytes ...croller-legacy-horizontal-track-center.png | Bin 145 -> 84 bytes .../scroller-legacy-horizontal-track-left.png | Bin 285 -> 171 bytes ...scroller-legacy-horizontal-track-right.png | Bin 301 -> 168 bytes .../scroller-legacy-vertical-knob-bottom.png | Bin 153 -> 100 bytes .../scroller-legacy-vertical-knob-center.png | Bin 123 -> 78 bytes .../scroller-legacy-vertical-knob-top.png | Bin 157 -> 102 bytes .../scroller-legacy-vertical-track-bottom.png | Bin 310 -> 167 bytes .../scroller-legacy-vertical-track-center.png | Bin 139 -> 77 bytes .../scroller-legacy-vertical-track-top.png | Bin 302 -> 161 bytes .../scroller-right-arrow-disabled.png | Bin 413 -> 349 bytes .../scroller-right-arrow-highlighted.png | Bin 488 -> 426 bytes .../Aristo/Resources/scroller-right-arrow.png | Bin 475 -> 396 bytes .../Resources/scroller-up-arrow-disabled.png | Bin 364 -> 313 bytes .../scroller-up-arrow-highlighted.png | Bin 476 -> 433 bytes .../Aristo/Resources/scroller-up-arrow.png | Bin 428 -> 388 bytes .../scroller-vertical-knob-bottom.png | Bin 189 -> 135 bytes .../scroller-vertical-knob-center.png | Bin 119 -> 78 bytes .../scroller-vertical-knob-dark-bottom.png | Bin 160 -> 100 bytes .../scroller-vertical-knob-dark-center.png | Bin 119 -> 76 bytes .../scroller-vertical-knob-dark-top.png | Bin 163 -> 101 bytes .../scroller-vertical-knob-light-bottom.png | Bin 154 -> 102 bytes .../scroller-vertical-knob-light-center.png | Bin 116 -> 75 bytes .../scroller-vertical-knob-light-top.png | Bin 154 -> 99 bytes .../Resources/scroller-vertical-knob-top.png | Bin 186 -> 117 bytes .../scroller-vertical-track-bottom.png | Bin 213 -> 124 bytes .../scroller-vertical-track-center.png | Bin 145 -> 82 bytes .../scroller-vertical-track-dark-bottom.png | Bin 194 -> 121 bytes .../scroller-vertical-track-dark-center.png | Bin 145 -> 82 bytes .../scroller-vertical-track-dark-top.png | Bin 178 -> 123 bytes .../scroller-vertical-track-disabled.png | Bin 128 -> 78 bytes .../scroller-vertical-track-left.png | Bin 220 -> 132 bytes .../scroller-vertical-track-light-bottom.png | Bin 154 -> 102 bytes .../scroller-vertical-track-light-center.png | Bin 116 -> 75 bytes .../scroller-vertical-track-light-top.png | Bin 151 -> 98 bytes .../scroller-vertical-track-right.png | Bin 214 -> 132 bytes .../Resources/scroller-vertical-track-top.png | Bin 204 -> 126 bytes .../Resources/scroller-vertical-track.png | Bin 142 -> 81 bytes .../scrollview-bottom-corner-color.png | Bin 129 -> 81 bytes .../segmented-control-bezel-center.png | Bin 139 -> 86 bytes ...egmented-control-bezel-disabled-center.png | Bin 146 -> 91 bytes ...gmented-control-bezel-disabled-divider.png | Bin 135 -> 86 bytes .../segmented-control-bezel-disabled-left.png | Bin 220 -> 140 bytes ...segmented-control-bezel-disabled-right.png | Bin 215 -> 142 bytes .../segmented-control-bezel-divider.png | Bin 130 -> 83 bytes ...ented-control-bezel-highlighted-center.png | Bin 147 -> 110 bytes ...trol-bezel-highlighted-disabled-center.png | Bin 157 -> 116 bytes ...rol-bezel-highlighted-disabled-divider.png | Bin 144 -> 105 bytes ...ontrol-bezel-highlighted-disabled-left.png | Bin 259 -> 219 bytes ...ntrol-bezel-highlighted-disabled-right.png | Bin 261 -> 217 bytes ...nted-control-bezel-highlighted-divider.png | Bin 137 -> 100 bytes ...gmented-control-bezel-highlighted-left.png | Bin 256 -> 219 bytes ...mented-control-bezel-highlighted-right.png | Bin 253 -> 216 bytes .../segmented-control-bezel-left.png | Bin 214 -> 140 bytes .../segmented-control-bezel-pushed-center.png | Bin 136 -> 85 bytes ...ontrol-bezel-pushed-highlighted-center.png | Bin 146 -> 109 bytes ...-control-bezel-pushed-highlighted-left.png | Bin 247 -> 210 bytes ...control-bezel-pushed-highlighted-right.png | Bin 256 -> 219 bytes .../segmented-control-bezel-pushed-left.png | Bin 212 -> 139 bytes .../segmented-control-bezel-pushed-right.png | Bin 216 -> 143 bytes .../segmented-control-bezel-right.png | Bin 210 -> 140 bytes .../Resources/slider-circular-bezel.png | Bin 1013 -> 915 bytes .../slider-circular-disabled-bezel.png | Bin 1154 -> 937 bytes .../slider-circular-disabled-knob.png | Bin 198 -> 119 bytes .../Aristo/Resources/slider-circular-knob.png | Bin 185 -> 119 bytes AppKit/Themes/Aristo/Resources/spinner.gif | Bin 1849 -> 1440 bytes ...stepper-bezel-big-disabled-down-center.png | Bin 1105 -> 170 bytes .../stepper-bezel-big-disabled-down-left.png | Bin 1061 -> 138 bytes .../stepper-bezel-big-disabled-down-right.png | Bin 1061 -> 135 bytes .../stepper-bezel-big-disabled-up-center.png | Bin 1100 -> 178 bytes .../stepper-bezel-big-disabled-up-left.png | Bin 1066 -> 138 bytes .../stepper-bezel-big-disabled-up-right.png | Bin 1071 -> 145 bytes .../stepper-bezel-big-down-center.png | Bin 1131 -> 183 bytes .../Resources/stepper-bezel-big-down-left.png | Bin 1061 -> 108 bytes .../stepper-bezel-big-down-right.png | Bin 1060 -> 109 bytes ...pper-bezel-big-highlighted-down-center.png | Bin 1125 -> 192 bytes ...tepper-bezel-big-highlighted-down-left.png | Bin 1066 -> 114 bytes ...epper-bezel-big-highlighted-down-right.png | Bin 1064 -> 112 bytes ...tepper-bezel-big-highlighted-up-center.png | Bin 1121 -> 190 bytes .../stepper-bezel-big-highlighted-up-left.png | Bin 1068 -> 118 bytes ...stepper-bezel-big-highlighted-up-right.png | Bin 1069 -> 120 bytes .../Resources/stepper-bezel-big-up-center.png | Bin 1121 -> 190 bytes .../Resources/stepper-bezel-big-up-left.png | Bin 1066 -> 115 bytes .../Resources/stepper-bezel-big-up-right.png | Bin 1066 -> 116 bytes .../tableview-headerview-ascending.png | Bin 267 -> 165 bytes .../tableview-headerview-descending.png | Bin 309 -> 191 bytes ...bleview-headerview-highlighted-pressed.png | Bin 153 -> 109 bytes .../tableview-headerview-highlighted.png | Bin 137 -> 98 bytes .../tableview-headerview-pressed.png | Bin 129 -> 78 bytes .../Aristo/Resources/tableview-headerview.png | Bin 164 -> 79 bytes .../textfield-bezel-rounded-center.png | Bin 141 -> 92 bytes ...extfield-bezel-rounded-disabled-center.png | Bin 141 -> 92 bytes .../textfield-bezel-rounded-disabled-left.png | Bin 436 -> 302 bytes ...textfield-bezel-rounded-disabled-right.png | Bin 473 -> 327 bytes ...textfield-bezel-rounded-focused-center.png | Bin 165 -> 114 bytes .../textfield-bezel-rounded-focused-left.png | Bin 837 -> 693 bytes .../textfield-bezel-rounded-focused-right.png | Bin 910 -> 720 bytes .../textfield-bezel-rounded-left.png | Bin 451 -> 329 bytes .../textfield-bezel-rounded-right.png | Bin 501 -> 350 bytes .../Resources/textfield-bezel-square-0.png | Bin 155 -> 109 bytes .../Resources/textfield-bezel-square-1.png | Bin 129 -> 77 bytes .../Resources/textfield-bezel-square-2.png | Bin 161 -> 115 bytes .../Resources/textfield-bezel-square-3.png | Bin 117 -> 78 bytes .../Resources/textfield-bezel-square-4.png | Bin 109 -> 82 bytes .../Resources/textfield-bezel-square-5.png | Bin 115 -> 76 bytes .../Resources/textfield-bezel-square-6.png | Bin 160 -> 113 bytes .../Resources/textfield-bezel-square-7.png | Bin 124 -> 79 bytes .../Resources/textfield-bezel-square-8.png | Bin 161 -> 111 bytes .../textfield-bezel-square-disabled-0.png | Bin 155 -> 110 bytes .../textfield-bezel-square-disabled-1.png | Bin 129 -> 77 bytes .../textfield-bezel-square-disabled-2.png | Bin 167 -> 113 bytes .../textfield-bezel-square-disabled-3.png | Bin 117 -> 78 bytes .../textfield-bezel-square-disabled-4.png | Bin 109 -> 82 bytes .../textfield-bezel-square-disabled-5.png | Bin 115 -> 76 bytes .../textfield-bezel-square-disabled-6.png | Bin 153 -> 109 bytes .../textfield-bezel-square-disabled-7.png | Bin 124 -> 79 bytes .../textfield-bezel-square-disabled-8.png | Bin 157 -> 110 bytes .../textfield-bezel-square-focused-0.png | Bin 216 -> 172 bytes .../textfield-bezel-square-focused-1.png | Bin 134 -> 94 bytes .../textfield-bezel-square-focused-2.png | Bin 231 -> 174 bytes .../textfield-bezel-square-focused-3.png | Bin 130 -> 87 bytes .../textfield-bezel-square-focused-4.png | Bin 109 -> 82 bytes .../textfield-bezel-square-focused-5.png | Bin 129 -> 88 bytes .../textfield-bezel-square-focused-6.png | Bin 229 -> 169 bytes .../textfield-bezel-square-focused-7.png | Bin 134 -> 93 bytes .../textfield-bezel-square-focused-8.png | Bin 218 -> 171 bytes .../Resources/token-center-disabled.png | Bin 153 -> 95 bytes .../Themes/Aristo/Resources/token-center.png | Bin 915 -> 129 bytes .../Resources/token-close-highlighted.png | Bin 242 -> 171 bytes .../Themes/Aristo/Resources/token-close.png | Bin 251 -> 175 bytes .../Resources/token-highlighted-center.png | Bin 914 -> 130 bytes .../Resources/token-highlighted-left.png | Bin 1310 -> 480 bytes .../Resources/token-highlighted-right.png | Bin 1329 -> 516 bytes .../Aristo/Resources/token-left-disabled.png | Bin 477 -> 295 bytes AppKit/Themes/Aristo/Resources/token-left.png | Bin 1298 -> 467 bytes .../Aristo/Resources/token-right-disabled.png | Bin 498 -> 312 bytes .../Themes/Aristo/Resources/token-right.png | Bin 1331 -> 520 bytes .../Resources/vertical-track-bottom.png | Bin 162 -> 103 bytes .../Resources/vertical-track-center.png | Bin 115 -> 71 bytes .../vertical-track-disabled-bottom.png | Bin 170 -> 103 bytes .../vertical-track-disabled-center.png | Bin 126 -> 75 bytes .../Resources/vertical-track-disabled-top.png | Bin 199 -> 119 bytes .../Aristo/Resources/vertical-track-top.png | Bin 185 -> 119 bytes .../BlendKit/Resources/dark-checkers.png | Bin 131 -> 79 bytes .../BlendKit/Resources/light-checkers.png | Bin 3471 -> 82 bytes .../Themes/BlendKit/Resources/selection.png | Bin 4090 -> 130 bytes .../Resources/horizontal-track-center.png | Bin 122 -> 85 bytes .../Resources/horizontal-track-left.png | Bin 136 -> 99 bytes .../Resources/horizontal-track-right.png | Bin 136 -> 99 bytes .../Default/Resources/knob-highlighted.png | Bin 395 -> 276 bytes AppKit/Themes/Default/Resources/knob.png | Bin 447 -> 294 bytes .../Resources/vertical-track-bottom.png | Bin 133 -> 96 bytes .../Resources/vertical-track-center.png | Bin 118 -> 81 bytes .../Default/Resources/vertical-track-top.png | Bin 136 -> 99 bytes .../ArrayController1/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../AttachedSheet/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../AttachedSheet2/Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/Bindings/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/CPAlertTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPBinder-echo-bug/Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/CPBoxTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/browser-leaf-highlighted.png | Bin 304 -> 184 bytes .../CPBrowserTest/Resources/browser-leaf.png | Bin 321 -> 182 bytes .../Resources/browser-resize-control.png | Bin 162 -> 123 bytes .../CPBrowserTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/CPButtonTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/add1-32.png | Bin 1889 -> 1552 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPColorWellBindings/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPComboBoxTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/CPCursor/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../withNib/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../withoutNib/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPFormatterTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/CPGraphicsTest/Resources/grad0.png | Bin 2836 -> 2620 bytes .../Manual/CPGraphicsTest/Resources/grad1.png | Bin 5182 -> 3934 bytes .../Manual/CPGraphicsTest/Resources/grad2.png | Bin 4371 -> 4060 bytes .../Manual/CPGraphicsTest/Resources/grad3.png | Bin 19076 -> 17150 bytes .../CPGraphicsTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/CPGraphicsTest/Resources/view1.png | Bin 289 -> 127 bytes .../Manual/CPGraphicsTest/Resources/view2.png | Bin 308 -> 157 bytes .../Manual/CPGraphicsTest/Resources/view3.png | Bin 287 -> 149 bytes .../Manual/CPGraphicsTest/Resources/view4.png | Bin 324 -> 170 bytes .../Resources/box.png | Bin 1554 -> 86 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes ...Geographicus_-_Scandinavia-homann-1730.jpg | Bin 30951 -> 28937 bytes .../CPImageViewTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/value.jpg | Bin 8521 -> 5932 bytes .../Resources/valueURL.jpg | Bin 16158 -> 13193 bytes .../CPLevelIndicator/Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/CPLogTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPMenuRemoveAllTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/CPMenuTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPOutlineViewTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPPopUpButtonTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/CPPopover/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPProgressIndicator/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPRuleEditorCibTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/CPScrollView/Resources/photo.jpg | Bin 37959 -> 26217 bytes .../Manual/CPScrollView/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/CPScrollView2/Resources/photo.jpg | Bin 37959 -> 26217 bytes .../CPScrollView2/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPSearchField/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/CPSoundTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPSplitViewTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPStepperNibTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/CPTabView2/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/CPTabViewNib/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/CPTextField/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPTokenFieldTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/CPToolTip/Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/CPToolTip/Resources/test.png | Bin 2472 -> 2354 bytes .../Resources/CPImageNameColorPanel.png | Bin 1902 -> 1776 bytes Tests/Manual/CPToolbarTest/Resources/New.png | Bin 497 -> 455 bytes .../CPToolbarTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPUserDefaults/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPWebViewTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPWebViewTest2/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../CPWindowMovableTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/FF4096Test/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../FontEnhancementTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../FontMetricsExplorer/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../KeyEquivalents/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/horizontal-border-0.png | Bin 1236 -> 221 bytes .../Resources/horizontal-border-1.png | Bin 1008 -> 80 bytes .../Resources/horizontal-border-2.png | Bin 1258 -> 221 bytes .../LayoutTest/Resources/round-border-0.png | Bin 1106 -> 175 bytes .../LayoutTest/Resources/round-border-1.png | Bin 1004 -> 77 bytes .../LayoutTest/Resources/round-border-2.png | Bin 1139 -> 176 bytes .../LayoutTest/Resources/round-border-3.png | Bin 1001 -> 74 bytes .../LayoutTest/Resources/round-border-4.png | Bin 991 -> 82 bytes .../LayoutTest/Resources/round-border-5.png | Bin 999 -> 74 bytes .../LayoutTest/Resources/round-border-6.png | Bin 1137 -> 170 bytes .../LayoutTest/Resources/round-border-7.png | Bin 1001 -> 76 bytes .../LayoutTest/Resources/round-border-8.png | Bin 1117 -> 175 bytes Tests/Manual/LayoutTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/vertical-border-0.png | Bin 1232 -> 241 bytes .../Resources/vertical-border-1.png | Bin 1007 -> 77 bytes .../Resources/vertical-border-2.png | Bin 1246 -> 246 bytes .../Manual/LoadTimeTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/LongBindings/Resources/spinner.gif | Bin 1849 -> 1440 bytes Tests/Manual/NSBoxTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../NewTextFieldBezel/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Nib2CibAlignment/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../NibAppRemixed/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/PatternFillTest/Resources/bad.png | Bin 26065 -> 9730 bytes .../Manual/PatternFillTest/Resources/help.png | Bin 1365 -> 1239 bytes .../PatternFillTest/Resources/pattern.gif | Bin 323 -> 309 bytes .../PatternFillTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../PlatformWindows/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../ScrollviewTheming/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/SmartFolder.png | Bin 1672 -> 1524 bytes .../Resources/searchBarBlue.png | Bin 666 -> 135 bytes .../SmartFoldersDemo/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../BorderTableTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../ColumnResize/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../ColumnSizing2/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../DragAndDrop/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../DrawRowTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../TableTest/Editing/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../EditingControls/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../GroupRowTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../HeaderCornerView/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../TableTest/OldTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../TableBindings/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../TableCibTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../VariableRows/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/ThemeBrowser/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../UserlandNSTest/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../predicateWithFormat/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Resources/spinner.gif | Bin 1849 -> 1440 bytes .../Manual/sizeToFitFix/Resources/spinner.gif | Bin 1849 -> 1440 bytes Tools/Documentation/logo.png | Bin 23047 -> 17840 bytes Tools/XcodeCapp/xcodecapp-icon-active.png | Bin 21235 -> 10573 bytes Tools/XcodeCapp/xcodecapp-icon-inactive.png | Bin 20388 -> 9720 bytes Tools/XcodeCapp/xcodecapp-icon-working.png | Bin 36293 -> 22277 bytes .../Application/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../NibApplication/Resources/spinner.gif | Bin 1849 -> 1440 bytes .../ThemeDescriptor/Resources/spinner.gif | Bin 1849 -> 1440 bytes 681 files changed, 0 insertions(+), 0 deletions(-) diff --git a/AppKit/Resources/CPApplication/New.png b/AppKit/Resources/CPApplication/New.png index 058a6caa45a0c9f650d225cea4b6e56c756b5a5f..2ca371152ed836c53047310d1dcf00bdec112e22 100644 GIT binary patch delta 430 zcmV;f0a5<(1IGi9BYy#oNkluK# z$*rX+aO|KV?Sh%P_NgaT7Rw5mEH~&b`d{U&~CRULZP+P;R?Fl?pO};5r{uWLA>^VjurHJy|Ek? z_TcrWGFi~?_dOgH_Zeqz33zl~Afm*+S8fB9)w|_)k6D>L$>k^5_rBu zUg*Awb1eZ^ANLR`#J)yP!2Sg!j$9x~9>JvGkU+c%7$?;6{Eb6N2nq8LCBI2!+MRVU Yztb%V^>KaPasU7T07*qoM6N<$g6ki`)1MvfpBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zlSxEDR5*=&lRroTVHCiR8fuED)E2Q?8XB6D7Hc#T`{ULU)a2IE6gYO!kaj^%HaK`{ zODI7%C8FXDSK@FS97vRlPA(3@>%ET;G4Im{Kkndr@AtiT-+z4)07w`!$Q-hOEF&(& zi)

$Of{6%u3_I1yt;Uk?3?fU>F8_$F(zLM=0R}+IfqTYqc7qP$)nmkr)bb{aPsD z0&3e&iMp;cip3(xvOL<9Si%J~bAXblZ9>yDh{xkF9+-E|zs9j+@ zCA-L?P+(aWqkqw8K&ey$RaGIGOoE~)kV>UkcbL0}tOy0IR*PZVHkhW#3hMPbRI63? zq|?FNeZ(ykwA<~e@DT#M#wqA_yAwIe1R?Sg0^hCsYoegn>rLc1djN00mFa?hzwh8A zcgVPSkHWM43PCmevv%*PtUs)NI0S>iz`H z!EE?@yaRR@kO*>x#6);wE}I0tJCDw5{@+F}@$+MH;FH}371Qp#M*0KOEeZ7>pMR48 O0000czV7sU4!@P!3S@6zTbO%^%6vs z;A@R-Fomg1W4kQP4%i;sX6uQCD=I)(o6qMI8IQ-*@Aq+!fqx3iMJ2KVh3#Xw+wBU? zW|L~Q8VaJ4hO8tiP+1;>yj*BE+_E&=lokw! zL!r~@kZs!t$x4cBOIqOjzAzXJsNHUp<2YoRCK-l7mStf(1Ws8>S}+=ogdhmW^E?D_ zCOBAp;@3gojDPJ&3&Jp52{V{QMpl3)ES0MtQ}I4asVn7kX~ASNSt{?G&|~<#x?nn; z#uOSE;oQ9-D|nzIJNu(ml5g5g@-Tzjt=e2 z_u>ZPU0`KqvnLs~tbCy$b)9@iCiXV|mE>7Th7a!pVH!Lg83ca;B4Vfdeh(WO00000 LNkvXXu0mjf8uh!F delta 461 zcmV;;0W$u&1LgyeBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zh)G02R5*=&lf6sBKor1(4m!1B8#fmh2M58AmVPYN!NI+VQYj8;BugOB)WKHCQfevG zQbGtFGIR+PO8*uIK@dkl{2QL{9naD>*B<=H!M*ppckglv0DmYr){qS(h9nRb*+uq| zLu3!xM%IMGaL?~+wF=uu9c9CRKfz<`GA7k?Y5v^uS2C$nF?{eCY7*& z%Fa??r_&KM8Vx9y%P?D&RKfx}bAf`WY{GFI&@^pMz>+)e&8Ae)@An0*Rtqf4iU?Se zN4BH_&+`PmUVjgo%_i8k4TfQWuIpf$rl<~M&yb{4Fc=I3zVCzUx*~ykLXD*_-44c{ zBRf(-5CkjXBNR9%Dxe*fk*S_Q{vi#?>)6*)K^TTh$=avz6uhh!j7Fmfxmrqa;ar00 zKf@77>ic;|Mt{+wf{rbhj#)6-@s`8Afz&f-1Ory@w+!^|M%kcne4o zv5;pOiDK-V1j(ED2j|ScMwVpxnj&EHJ}H@Y=N#n^B4VfdhC4%n00000NkvXXu0mjf D*?rC5 diff --git a/AppKit/Resources/CPApplication/Open.png b/AppKit/Resources/CPApplication/Open.png index 15c6cda7fd3f416dff508dcd75e99852a2c8fdd8..e7377da0669707d7723611240c3f9dae55f3bf38 100644 GIT binary patch delta 10 RcmaFKa)f1q@6os#&jbLNHl_^pr3Msd-DJH?J|O{V_;bpnWjn2W|MSXr$(c})M_-D-2Xzl`3A{yK6mJGuv1R50r z?pA<3*|uE>GB5!3V{Y%c;Llbc$>{;W8e3^AP7R&b*GZg2TY-X79Mzoe3D<1V7Xj&B=3@z#CSmK drs==~?>F>Q0S`T{d;94{1GWQ@BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zSV=@dRCwB~Q$1_KP!zo{2?6PpJ(F1iBIur>lRqVYp=0gXf0Nmz3jTl)$e_~AK|)9t ztD;eR&uyP*rKVsn9PZ0~_niCjh&mpRbdOnK7|KB@byD(uUw`n^q9}rU+3)xL!{P8H z@O{_scDuCO?I1+WW>WymvW((5rcS3r?RJ}1tJU*#Ivw&AKnAN3u-R;Axm=1jO_LnQ z5imjG@VG;+=Xr0;eUuKWs**~m4%oIWRVR~)#MkS!#Np8$&W%O`LJ$~U31GIxVj<85 z!fZA>y_*7~(MWQy zMnDG;s59gs_i6;)!CwUQ!vCcMqbLgb&`(%r$k96h*GiIvTCElth9TP>3>U<}y6jb)VQfj0cAK+XRdcMme9)U)jH_dw=Io0Tu=TB?<}HGu!W{00000NkvXX Hu0mjf2E@Q- diff --git a/AppKit/Resources/CPApplication/SaveHighlighted.png b/AppKit/Resources/CPApplication/SaveHighlighted.png index cbba05f64f8d646e9d1d289519c64402f917d886..8a42c72a77db9970a2a2754a6f3d141ff64706be 100644 GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfiU6MwS0D`m-rn9878XEKTwGj1 zK|x7LNmW%V`Jmu;t~=P5)%`Xl9G~>lT%Vs($dn> z)6+9EGYbj|3JVLXs;cVh>gwz38yXtg+uNs4pT2P6!o`ah^L6bh0y~nT{pzFVlsiyUSgNjnw3ZjJrSBv=|G TrDy$53KX)Qu6{1-oD!MeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00D4GL_t(IPoW>3F5Cq{up}WXw?YXyg2m7qbR)r458)lU z>Nbn+dxRdK1hUIg8X_)K6vY3=_YFLWh{>V@KVF>qzIii}h<`lK=|70!a7eXUje5Oa zt_Xr4AB{$LpyvDj2lQYt7?2tI-jT&wcM;Y0oGWpR;55w^av!> zkM(*@rfHS}jcNez-3r}qx0Ht~s7b1#sJ&T1{ee|c)ZVP1CaDT_^L2&!e11*hg{lf@ z)MfCBIF4zv+3?GuX&OaQR0=fE!UHe9g{SFs`uQtECODEX49Akc2aKVC79Mzo94VFj p$Z?)$vsp)COUwtL)`1otcrS^E0T0!~w^slF002ovPDHLkV1k(g$|C>( diff --git a/AppKit/Resources/CPAttachedWindow/attached-window-button-close-highlighted.png b/AppKit/Resources/CPAttachedWindow/attached-window-button-close-highlighted.png index 2d3bcda481290602506d708144b08a7fdbb909ba..61a9f456e3a25f4d5b1093da83885d5f00c0da2d 100644 GIT binary patch delta 323 zcmV-J0lfa<3ey6R8Gi%-006Z?aTLBmV&@*K)h~^EtbP+nb zIF(MF3QmHGgy@h+h||S11QC&#!Apb`f2e}E2--yr;us1UDtC?~Ab0USzMcaxW7~~P z=Ek-e09f>3=*7Umi=hXL0ACF~xpnQzm20=2{PhjyJo@8OUw=<3)zf$B-m^K@+&hy- z{F@ZIg>E*DkUDi|i`0d#qqmQU(RehDc>B@4w~|5wH1t-@ZM^e$#Ux zk(3Uz_lSt>y>uv%IPi;~+8P>p9xY8>{RXjD#!h#)}D$3TaE34SF;|sti8_HI#Sh1>X!)E{}ShB35V%d@c@E@^f Vb~^KlS&RSx002ovPDHLkV1g%qnJ54N literal 1377 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%xRe+5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|85Px?R(JoBXH0dq_dFl)Ro3@&3}V4Udb;uunKD`t|d z2UDWN@%MY5{92+X6;*mcan`2E1s&65yrLE@Tx%I6)!f$hZP^0DjJ)ikfEb;f)>2&) zWJ)qQR<6_6KD+y${~!M&;&pqz+u8kpe%hVYaY3uQrfE|)w@!oPtoH{*En4$8zn11w z+*I(knezj0-AiFc=Le!Phwi`QQj9wEow0&l{sDW5h73bZg6y zyfU+N#=gY~!99^_86K7^5|+p4t(R!KC?<0}QdHVIcf%syP80TdKb-?shR6l23|SPQ zvBq;(ijkzabo2IzgKMT#9n#28GVv|entnP}_jFg+g>7%E)F$uzVDrB7X}|YL!EaZd z=r(t~*d_OE`APGfptI@kr>H)bQ&*SV8nt$t^ij>JUZIuCFTbpiRTt})4b+gV4UFG> zejAIx#MisNYrK!y({=Qb)i0k7XZYSnAN`oO`Fw+Ncun@7|4e-TeVl!VStoprdMEh1 zcJ^Z987wE8XWyGTSyS)Q%B$Ng*_vaUvi`5jDw)B4IbqTv@edp_Y=7+QnRpmD+-K=e T_p{psD)c;E{an^LB{Ts5x>w@k diff --git a/AppKit/Resources/CPAttachedWindow/attached-window-button-close.png b/AppKit/Resources/CPAttachedWindow/attached-window-button-close.png index a39c6ac46f2409c7fde217d7e29a5cfd16f6b284..cd8743de1389bdc6c59a2a54e888a9da90050d95 100644 GIT binary patch delta 322 zcmV-I0log;3ep0Q8Gi%-006Z?j4}9@Xx`)LXy_%{p>yb za9FL>YJSQyQOIdkF0wK71}t#chm_U${;aqh1S##}nlvTehq<&$j@gk(rC-kxuMe*e5nsrGTmV+P45{ZHd6ABWEvMGQ`^9sg|7%{G3ULF93B#MfPiV{P>H!K5K U1q)ivBLDyZ07*qoM6N<$f;eWCUjP6A literal 1375 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%xRe+5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|85Px?R(JoBXH0dq_dFl+od+w+fsfwAAy#WAGfmd~Zr zUWXk-*d8qDlv;Qzsdv%VxC5@{PL3D3j!u={U7+~(UaR(e$1koiKNubzE1#ez(h~4u zk%x}sVliKl_gg>y|LSw{z;&PWb0_DV>5+4txNO$C*Uc3<2bs>C+Q7{>N8#IE@zp{T zk35j|IAC1kb%ue*S)5Ps{THE$TYCPP-EowTdk`)3JAuP3k*RM%no?)8=#Hjnj?}I4 zo+b|j=RFWz6_6gOTG5bg7kDsp_0?P6YLjI@+2qep4&vN@y}eY}zIc<6y3+mcuXo1e zoh_WhtT+8^nzzhkty`bYPM&kS)kx8OB#&BuguiIItH{EJW zT=D+$jps9RByLN;{Bg6T`lp{RN7LgFtoeF%?WV+W3I4 z#&f^?nH$~}^Wy%TN=<3H{?>VtspqCAw^+0EA9ZSF#CY{?Ul-&4)#z<_10zHJ-X;70 Sak4xF6?vYnelF{r5}E+Z1?$QH diff --git a/AppKit/Resources/CPImage/CPImageNameColorPanel.png b/AppKit/Resources/CPImage/CPImageNameColorPanel.png index 85f94ee5833ba1f4a1985ca7dbb52d5535c5d3a1..527ff1ad87655671f82464f31667ae435b15a7cb 100644 GIT binary patch delta 1761 zcmV<71|IqD4)6_-BYy_BNklSS}QyGe*61>YoGroxW#YR3rE-F+JAg8*TwEaoBl$XO~$cE zCp)8LQr9v*sb&1@laD`l@qgtJH+%5NcTQ~2b@9FGpxV6i-cPnR-}#CD-ip$zwRQn6 zXKC8ZJK343$;PSkZ-z_7)xRqze(uD+!+-d{KwmiYvRi2T!r*}2|K&%wyIa=|4rdOu zEhG-a0uYt}i+_h9M4++!rFL%N$e(@{E!o)-T!GPGT|gKdG8}Rg8G$tn3lAUcFW&y;`9ELz-gy8MVOg`b_?~jxozT>^~h`Bk4T2RCwGLRWa1ImE1pa6wMVUZXl z1(uYE4u3Tkxxke8{FX=7RGsQ$PaNOAwB5Mc2E4~vUIQ=qO@l~a(A(qftq#D?+DB+?cK949r~f?%{# zy9{}wE0Z>$ZFesV&^dTH_yq(O0t5k+FoVXFy)tMlngThV z48jnC0xA{)pduh}z?WS}U_l|s0kBvk;NT!|00)bt08$dJ5UJSpkt0eM;Mbu&1#uI+ zRZto0Hr>?_gb*0;ECdoX-H-?bPMO#MF@FUuGUhQ%Q!s;MksbsA66GW3!aNR@tPHpo z!W4R15C%|j!FRjW1iA~B(twFkUWOxMBoUG(&_>Y2p@SsD!;;{jv=EDuOJ>2_iflBSnfPMU&x?;gRE$W6{hk#ecO5 z`n(E|Z?rn^uDrKrj83~uo|F-T7lCS9P-z#EwZUma#XufI&_cOwq>7NlXc9CD9vLAa zlaq~3fPO=TsAINX|Jq;`qiWWvBm%z#cpY%O0%QWTA#Z`(02x7CK$1e*hDsCRxA5E! zN<=7PG%5WIm}E8?3Y0!3Uz&aK%6}8XPwvhAG`XjL#jx!_pum&hI4Ot-Xo9IjUWc>> zQ62IKiWb-wm?qc;*anVhpk$MP0Z#udKG#}|E*<>RD?d;G6*x3E_wGyFb$8U;AfRnQ zCEYit1w|8*I`|FHb#OXe>EaBM7?KX8O$Zy1Hxa!B$RNIWW}#nu^5Dn(=zn+jO#D<0 zsrz=U+_Rba7=kABwxG8OJ#`4`;MG7kK(ryW-5b-FKwkuXEeM-1kih5=ufAA2on@W3 z_I~B1uS54E2f&4AUCRj3-{XaJDd=niJ^#`@VT{@n*w``0<)=dmDo_KWe+RU3ZN3w#SEu)?*eN z+V6u{#3r*KI*4ij{Q|~%U{INVOwXP>Gc!~10`vQ~K4?Aj!{h%-N`E)8H-eTOS_A4Q zw|`^j?K1dQEE{XxYBYc6Z8{hTQg>uH908bJnqOE*qvT9`CaxDtRq5LcmlN~-@4kBJ zbszVAKC*N8S74b3o=@rr_oC6Uh?kIuBsCr>xi z*Zw*my#v&{*OX?tc3OZ4NN))Os=$hJ?E}KnMdC7H4Y&#{mit?RJ|s8v00000NkvXXu0mjf DizvE$h5UEBMZ*Us(# z-WdlIUbS`h&fPn6e&_tpxp$TcA?UmQ_Wb_&^|6s0jE&}=rjfKZd9p3h1nF8d!u4Rm z(EXQT$4(7CcHz7Hux|tH|J6&k!147ZWZ{Z0}#)^Uys5y*}1w z@!@l#7?v1BLgvE~(kOz(#4$P|p$=w|jpb+G``h?C7k}UQf{AGG=)Pm~UjrRFJnRTg zr}ysJ*t7fgzMjbiqJ<^^aE{PPvon)(Ex|{Gd_v@cNGKo^&=z3VP@Z1?WN2z=^!Ox+ zXxGuZPd21~?J_YEPv5Y0P1}#Q_jQk=tkbiQs|rwn#b)YTM@%}cv;@K>SdOSh4Vs}6 zjnQXxbAR7Y*4)&6Q;~`A>1F>4^zeNr2ikM&z#X^sZ}?;!asko+q$#zF;7}SsTpD0d z5hj#Lm=2Ucb`7dih34rzO|Ux$?p|NiiU%He;nso6AQmQ1?YwrtS3Epr}Z z2Im%ha(Q&~Foi_8Ns~7svlurxRe$1UjdU(E^Wi#BCV?LQM@JXy$mk6Bh#waV3y0f^ zl<fQJ&gM9i*|W!8za2AaiJ8Maa(31)(J zha1P$>HXYw!>8Bv{GjW{&X&zf@MX23;4sz(M+Hz@;4FtaI7=yr)zY@iVShajsE3DK zd~a9qaG8WrM!jjiOOKu5riH^+9eteRy-qOe~qDhogK^i&9(-nXK zt!cxVfl;fc()rLiKp+9;A@1?89wWQFRKf8tjFegpOMl=i@1s|?4gZC=^BZ<{?d_*I zKaD;QNFHMj&K;PAh>a{GPk*Ex(}I9n5KxP3Roq*^yt|!F{k`%*6xH9o>(D=bst(oV zeT*)CL@&js-(#=-ccA;WEp+K3+PI7e0SGFYEHDmdteU>t^XS45jza_%AuEAQIy>q0 zXD*$Ms`ZFW?U8SMmA`%6aFIlOqFD?IH}~$?NVSq9%45WwMWsDK`+v(IHv_dsB=P~V zjYXmk&ma2d`LSkFuV{`jxbMiRFJI+X{#g0b`d?btI_v*fGb_6{bmwb*9qpSaDQQ&u z46E}v-Dfb?i50PcYwVdRYcR#QG?6)V*$yOC2%VZ^J`3)^k z82;yVzu2`-cb@R|#eZJ2*qGbA+HeX^Xm)mZo$}_H@?5DDHiD7bw7<|S7j;{lpA3@U z{QA_Vud9QO)NvTe*A`gKl^}UYJ82W5Hz5qHWvAPF&5d@)?oK1QHlZcY)BROV96Mze z&m|Vsr$jvZ!BY6@`*V%6xPKvSQ*|a)(;ZF?fWq$u!5}`Z%2`G^_p-N$pE*Q_&?VS> zcKyAeuSl1HO^`;fn7rODFAX&F~Gj{3B-NeEDYsWn*&1{7R$$ a2`~UHpF4^1YHlt70000JaI diff --git a/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png b/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png index 72d0739f5f908715b99251c7e6ccdc59ad347667..85efbde42f343dcc961b1d9ac2cbbb3f5becd022 100644 GIT binary patch delta 1666 zcmV-|27UR44w4O!BYy^2NklYxQ0e<{sW{+MG8+yJXS(gDJ3Nmu0X8-Mar#~W9+z& zeQvvFFS9dz=ggk?Bq8apK4)f+&ip?6otf1hMjvua{qPqDGk=zy5GN-5MdOep4<&3;bR}ACzjg7gII>%>b4#B1^G{xj@0sY>Hy1`J zP5*XatTy}IC#QyYj|BDAkZ7e#v<|~fLDV9{O%iki+7;^3s)}ed*jfF~=bqjTRMY=3bhsxZ>!i5A7RUT_x6pB#nu3Ey;;2VI)=` z(x@K1*MCa%1f`ILkgd@=`^^67-Q~P|^w{acbJ}48g8A&Hj!e+{I`MXd0MI)+fdvF` zAb`+TM%X`4-oynQsaQ`IQ`Y+~;l-|Dh$FopO*453IB=_;U{17RouA2=B#X^vW5LyV#VYoIdn zNKgREpwc4;l7^67glW6P?Im7f&SIRdc1QdHK?VWvftNxOD`MTu2%?B640UUSX@8fj zJSLY?@{yqg%0LT0f^VYhX@U$6a{?=1YSa9btMGpwxH7n9ileq z6v71QvM$mkkoAQ~#vGMyW%a;z&heM8{P=uXIPb5;*Oy0YtS>+cA{Gfq&i2pXY?5#=Vn`=1PT?SXx2=yEj#-k#x2t z5P+s`2hc(->uj%`L=ke+wJUKsaGjI4yUi08t68AL2SP z&w(A89p)1dW}br-6kAm<@NkvhJ0D#lmA?1F!i8_$_CBg`|5>{&#kJPI-+!kaE|Exd z60;`leiG0uk~Eulq|%8Xv1)Yj&Gu5>iG;`bvv9r?hXN{%I2o;m*~Q^&E)v+|FYE80;QC^ zQ)Cx-z&`oWr=O}b{?nL;54hE|@xYMn1zu)XtKJadXol@}MCRGN^zdPzO5>`(uYEo!Zf=B_}0CzQ@xcNqZ@UEN?1@l1-9V zuXe>>FEx{YL9hv0pa~kF144*mn?B@tH~#Mm_!GMCfEp+lsgt767PxW08uy(#;1~U1 z02esG1_GpoFe;=8Nbj6F&0U*epk)OFEWq#hogBE%2dV!Z delta 1783 zcmVO%8eB^?VA_d7DkT@YF2OQx%2qF$5L=agrwqtv3uYcFs$2@xaRb9nbT|Jv! zf=OodO;vYQ{onttVe~1V$A9?K13Al&E0!;6p_>Ke`!pjG(p(ZeA4p%Hm%e)G!pUEM z@c-nndo6tJ2d9o?CjNP|M*AP$dw=}E?9N8b=Uzt$&#tc)g^G2muHIc5zJKdtIApzl z%h3Gf&F6pjhkwsRwD`Rj!-A`q>S6xW*S~bYo1dwDG};7t)b)Cth3r1kuw+&wn&hJ-qPPqr2{VLi>0@*UHut)bC z+SMo;ho3xkaB-6e%x4~YWG}6(5bs+OSYlEvstT}1fY37)Xaq;XOB7|?GT1f%*($B^ z#}>XyI!Vu14)5EKzwm^tXY+o2ti5svZa|TEzJF7J!6I(svV}x!NuHu|ovFwykwLt2 zShh|>+A+4H-K6&Xw|=(o32t(AZ1>)oe07RCIBM(!)h1UHrA*e13*wm`(B zU(|#)bDmIoJi5VIfou;uKnMcu++#Hkn1kew#4m}QlU#gwS&r^IN_$ z%s&w1Dh-%7^g`xcQ`um4Tud}<^#>O4ONjaj03VQm2L)JW9fkrEXgdY!#zzbU#D6gb zD;2C&Ah0OPhHKMeBg*`-k|=1-?WkSr z@M98Q0!yuRIYisOmzRVgzPFa*q$cDAugQY5Ni=w-)nrCQngu!AB#@BDY_9X%xkdw? ztpO}%c%Lih=KwB~G2EPzU|C6KEq`pVrpeZO?Rrz56>qPfyZ(*#H=ogdkJ%vA60Byu;D2Y!mj{jd znEXCfnM$v%pZoCW_)}lJTiglnYfp73&Yf_ZO;%eya6}4Y4y2VuR3^}`zJ4t(o0Kv7 zzllconQe34b34C#w9WXB6CTa_t!!g<+zaYK?zLLMxZT{1`u%}Qvn$DZ8tFk>_~vG} zpkMsv-Q`!SHc=HGDUhkHMCfYBNrVfq!rH*Z!Eol_f*d>C5_&QaAl4_HeHOJ*x)*({b4%(jZDcl?d1YOaqg)5~@8xrL7gT4&d($ee_w0 zwz;k%w)6TH_?s6iZT{D?gu_Z`TD{xmI*U&v!}^ zlYGA&F&3H}IK%AW2>^-R1^{W-{Q#iqzTOr`O+px4+}vHAjZk$TFRUg92t_lPoHPYO gNU17PKmY=OKdb}|TeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM003}FL_t&-8Fj%y4#7Ya0MIw>F9{p5W90~L;Hu6iEJUP~=~#4@`d(mz z1CFJXvp>S5U^F98kTIAM$av$CQrcmO4vi|1(c^{__Sj;j3N~asaWT1LjfEjVJOU;+S}Fsds^huzO6syl}6#aGf2MC9*S!Hnn gLkg#qMFB8?KVVKLp2z(^mjD0&07*qoM6N<$f<(G6g#Z8m delta 189 zcmV;u07Cze0nP!C8Gi-<007{T1`q%M02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM003}FL_t&-8Fj%s3IZ_{0Kf^nyLc@-FKZzlKm;3Y6vSoSPZ9--2)Z*- zYxPe`X^kC@VOc@-7M2ajsF6}yX$mHccwj&dYED+Rq@+Dv978x{lM@=4OWE4&*xEGM*ksw*>e$%a82Gj^`dEB_ R-vCs`;OXk;vd$@?2>{kP51;@5 delta 105 zcmWHkogkUQ#=yYv+0E?{Xo!oa|=@#P(RAjR+L;uyjqo17q!V36R!z`*Fvuu$>xY$2c&gQu&X%Q~lo FCID7+4JQBq delta 92 zcmeY$m>?O>#=yWJ{Xk?3kdiEMjVKAuPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_( sR3zl-;uyjqo1Bo4Ai$8stl-DM!1$J7;Vzlofk0UXPgg&ebxsLQ0LeibI{*Lx diff --git a/AppKit/Resources/CPImageView/CPImageViewRightShadow.png b/AppKit/Resources/CPImageView/CPImageViewRightShadow.png index 7b93553ffe511430568d1adff04f285393b5dce9..91f8fc2420f256d23bbcb032b7aa47f38ccd62b5 100644 GIT binary patch delta 52 zcmXT%m>{Xo!oa|=?6l7}AjR+L;uyjqo1Esr#_4d5pMhD0F~%_HjUiBq!PC{xWt~$( F697@34DA2_ delta 96 zcmeY$nIIX>#=yY9bEu^jNJ*BsMwA5Sr9h9j4R`fL7hM*~$bc)I$ztaD0e0sxPo9xDI< diff --git a/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png b/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png index 71857276c74f598749a3e255b3d465a4b930d92d..bb6b59f14bfd666c42570145b6e6a9538c3af401 100644 GIT binary patch delta 110 zcmV-!0FnQ;0e}IJ8D|6l002su&YJ)L07pqgK~xAG1;Mcq!!Qg4Fp&I{m7FR!*?+K< z-orou1wfQGVzh#2%l5S`12MMSqqTyFHqR0sxi*tBPf- Q?*IS*07*qoM6N<$f|?vC$^ZZW delta 165 zcmZo*+{QRTvYw5Bf#JbKHUS_dS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1 z)dr|2!qdeuL_)Ik;6~m<1_BHRe%GItn4-n|o8RrEj9;Vlk{^11xXqawT^25!z~Sw@ zDEUEaW8Wqd5jMY?i5@LW7d|{teeP$Wa$v=yEfYOTWX$A*8V?eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM003Y~L_t&-8Fj(23c@fH0Kj``Pz1$6aMAz&ye^{DU=kgKF3nvaZ0r6q z&Q=`_6(3ZzjJs7u!GaeSl)%ZVqoLu38PD8%f7lQaR}{RHu_g-+n3Az0c1X$C9up!N b3xuC9{e2irU~pml00000NkvXXu0mjfDEC3Z diff --git a/AppKit/Resources/CPImageView/CPImageViewTopShadow.png b/AppKit/Resources/CPImageView/CPImageViewTopShadow.png index 483e391fa1229cd9c441e85eaaa14e6ab96a71e0..df08a10a68db566a8872a93672ee527a54ae65cf 100644 GIT binary patch delta 57 zcmXT+ogit#!oa}r^y1u&KuW~Z#W93KHaQ_7B|#t|;X-1<16Bq`X9n-gxo1^?@(iA? KelF{r5}E+rVGyPO delta 95 zcmeY*o*)^;#=yYfepB;pyTS!XcZyV)bg_q>4X3KGtUm9Xxn&62rv{w(=XASi~5Bz|+;wWt~$( F69D^H6HWjC delta 95 zcmWHno1hXUS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALBZ3-F{I*F z(u&oqg_A1&{Pu6{1-oD!MEal|5uLp9acV+pLc-7Ev;K*>7&b7Rws$l5Dt@Xt qpgxc#u=0P$wC0;1Ry%YxGBOC7h)i7bQZf~&nZeW5&t;ucLK6TwrXQ^U delta 148 zcmc~=#yCN;o{fQlVcw#YMj$0w;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^rx)5S5Q;#Sg{)vF(;CL|=VCb3Pc|Nn2}vgOP7vlh;1kYSTxD3o|OXMg?wMJEgt zPCp1}i)Pz?@yQFvGQQ-3f(-%_(%1_bn0OeT8k&@v)bQXj))78&qol`;+00dk( Az5oCK diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-bezel-right.png b/AppKit/Resources/CPLevelIndicator/level-indicator-bezel-right.png index 6d764de47695ae079689ea9bfc440405a146d235..a8960f80655a58395bbaf39472cf3419dd26109f 100644 GIT binary patch delta 89 zcmZ3=m@`2#n1z9X!DRIsE+A#>>Eal|5uLnBn8_(_*_G`p^Z#!&GGsVt&&F|-W7$6= s1@3>Yf-X=0Do62UL^OspUfCbd@FY?^Y4#oFKA?66Pgg&ebxsLQ03|RV7XSbN delta 147 zcmc~<$~Zx?o{fQlVcw#YMj$0w;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^s0)5S5Q;#Sg{)vJY*8XE5R^vm1-<4-y}$1->Zr`D+t@9*2QrSK`w`TYHTJlmU7 z4MrAI9!@)$YhqdDa4wODk8fJbr+Ow935FF*%uZi^r_B2uXeNWFtDnm{r-UW|)0{bb diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-center.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-center.png index 73c27b640b98b10791aebd1941444844116538f7..3701f36299f2c264db5ad6b54d390379c1372e6e 100644 GIT binary patch delta 114 zcmV-&0FD2+0gnNYBx_blL_t&t9RB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o00015 zNklGHXCWnUlp@qB(Hi)T0a7VYX$>ycf~zp?Aw0hT0~G+t@*3@j9f(K(0000< KMNUMnLSTZ_0X?Sx diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-left.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-left.png index f7c0e99a3124b19a406fb5df2f389815bb2fa196..8b16af62e4babbb391aa2b081bdeaa5afbeed63d 100644 GIT binary patch delta 144 zcmV;B0B`@-0jvR#B!6>BL_t&tnPUkE2&iUYV9*9)1{NkJCaumtD%W@hHU!eL-=g+T~FA*}o-o8c1{Q2|=A@l#&FEj*)iH!}xVG|TYaM&d! p5pLsvaey+nr)g0B!7uXL_t&t9WBm13c^4X#PMNPRxN|1$Pu!q*(%^s!~=K(k6@kq zSOn6gNRt$SW&PNBTKwSsndULZ`1rf>*7s*28F=bCh;#16W7|T?^5(9tA-3dog;;Fk z2>Hb@U@I)rG(k#arg?_gl9vTy%O@p>E%Y8@;j0Q_v2PlP#UG&@V!z!(xJX%^U#I3q U&iPIE0{{R307*qoM6N<$g0x#u(f|Me delta 207 zcmV;=05Jc;0qX&fB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001u zNkl$|1-$ z{X)nvv9TdIY=VLa4!fizg2MsjFflRxW0|I!U8yh|xJ<`f;uVeG!h(qT*d&f|&e-a0-)Bv?Jc)I$ztaD0e0sxEiA-@0s delta 151 zcmc~<$v8o>o{fQlLFVu=As{7L;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^r})5S5Q;+D?Ije-Xhcvucz_hxM73W#2H>FI@ji34Q^SZB)^eLg7hIMtaK8Sj~>HEHL7YAeJP|-ilyQ*uMco=jxOAFTJ+z{*ln#gTe~DWM4f DBaAr2 diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-empty-left.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-empty-left.png index 1610a148e5fe66bbaf470cf6ba53946a839b1adb..f46aa0027012ef037c9274726197855b92a0a5f3 100644 GIT binary patch delta 107 zcmX@cST{j3m4$(UVUzv6B|ys6)5S4_BRZLLMcRe5goMOPt2$YN&eR{3bl6iL!;>J# z-tvomVV&cO`3bMi%X9EM{r%a!Xp*4QMhA_wj+s6Q_ufiQ<>6sCxl+>MVuHLW&_D)H LS3j3^P6m02nqFF8}}l8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?0BA`>K~#9!bk4yIfFKNo;TC!zEWi%B3|B`nG6=gl34}IQ6R8(T-r>ui zG+@s80Dx5oP>1~m@3(AG2!r^>8;!z zhJTYEHhlQ!xFTNQm3qrB=0*P;R_xcQSF~B-<<_CV-ICN6;3Ht19>P@logt$}TB0EF R?|Go944$rjF6*2UngHEdEMouw delta 188 zcmV;t07L(S0nGuB8Gi-<000;^7B2t*02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM003`EL_t(|+EmU_3VW95Ium`67N{I=mz3jj~ztWEHi2~*x=h> z{18G|rn|N&=X_ipW1P`@Kh|1nMr-YWQmUabMlP*2L9JC#N;MG>(F6K|k(uT4`vw4l qUV=UZJ=2>_JLgJDY3eZjRt1NWaS2Cn?%_LW~+E9Advth>{8?#m|e1fvOa}|4a|XMmJQ5Cygokx XhzA+7A+jG#00000NkvXXu0mjfy6P}_ delta 163 zcmV;U09^l)0lxu|B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001C zNkl_M9?{7nL4jqmj<>8EiFC1{qsk2>x0RZN-8xvZ4 R>6QQh002ovPDHLkV1g)eK}-Mu diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-left.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-left.png index ff0c4d5453e2a75847e82f08ea8ba54b65fb808e..09616818627fe544531aa13b7e25c7c9ca9b5bd5 100644 GIT binary patch delta 41 vcmcb@xR!B(3TKI@i(?4K%w*1qLD`}VB@?u|cmDk^%K!wPu6{1-oD!M<9}5k{ delta 80 zcmZ3>c!hC-ik@VNYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4R1_p*QPZ!6K jid#uM6Lqu26%H^I{?zI)*>~&+P>R9R)z4*}Q$iB}ZJrzd diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-right.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-right.png index 18c5f258d848942c6e83245c699a36bff397326b..93d128c981e113b87dd98e6538cd4759451c0b28 100644 GIT binary patch delta 167 zcmV;Y09gO>0mA{1B!7xYL_t&t9WBl)4#H3rgyG3K0%!>}7}5<8R#JHlf~62Pz#`CS z_JcwO-sX_3E~rf#*Bp!_J14m?O{b`wy* z0V%Ha8KkJ+cTkGXp78rMaw002ovPDHLkV1k@KNrC_X delta 214 zcmV;{04e{&0rCNmB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001# zNkl6<-TKGE&nyY% zFf-r%%kuN*Pbi1^FU$KcZxEb!pI;$3pTB>Aas>adeEsIk>=_KOhbdHy@bu1H|Fx;sljdI>mDIau}FKX?FuB#z4L(cWc`+&TEVndkE YKl=L{H@7Ebvj6}907*qoM6N<$f_?)s$N&HU delta 158 zcmV;P0Ac@=0lEQ@B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o00017 zNkl!m^plj2IqJYUH)CD!u(uOf zHv=e@1yf4k<#*8g4GiG`V>rQ_Z?Kg7JrPi;2GrX8bdc7J@fQ_f0Q&nIH}5ZaQvd(} M07*qoM6N<$f+ep&HUIzs diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-warning-left.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-warning-left.png index 28749052a798010e70d1dec28bf9e749b5a2c9c1..c26b6db9d8eff72f2ad6df6c1dc067a7b7baba3d 100644 GIT binary patch delta 144 zcmV;B0B`@;0jvR#B!6>BL_t&tnPUkE2&iUYV9*9)1{NkJCau<*b&+5WGc)sF5s456 zn9M&;E>#A&3^R)ag7fRwF9hey=eG#X=g%+UoIgK)yhq6V{P77P^ZWNVgv`Hxzme== yW=3#0IJgiTZf-t=+qk*;;WD>p&6lnOaR8_+DvN!w5V!yU00{s|MNUMnLSTX&m_CsJ delta 188 zcmV;t07L(*0oVbMB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001b zNklO!T&fTbNQRk3 z0>Sz9>lcFa6aL%6}Ki(r`e*XA`koo=l8$#yazct@T_AoOeI2;^Y2o5(l qAHr?i-28Bv+q33NSAsYI0R{j{GA}QoBOc2D0000o!D!Sk)~-%UDDtLcqez%#43o zIJq>y944mQ|5%t=B%m_){<8e~^$W^j{>$>^^IHVx^XHcc&W|4-p&Y?KEI)sIf^tOu zvi$!24W{f5%fElW5qf|Gg2TbVh2U^=^C5Hip>AXP$1-cabQ&c@hT$Fn%Aqd<9t&wg P00000NkvXXu0mjfS>H@9 delta 201 zcmV;)05<=<0p$UZB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001o zNkl2`Sva{gz#Jx~+y9uDStJ<1 zn3?%6%dcO*pvr)pFQ4BcIG;biL~wrm_z2|){$cs~;}eu4@@m diff --git a/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png b/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png index 614ae28f1d2b85e2b837b0707746f1a20e1759a1..4c25d65a896c6c990d17dd903c0fb775a529d7fc 100644 GIT binary patch delta 84 zcmdnRSTsS!&(hPyF+}5h@{j-j?U^lSBz9!8FqtXju|Ikqz>~CDaIxT$5B5@d>TZvV ob)@EB4pF}8r>bAj7I})1!FtZm6=`bc{xAT6r>mdKI;Vst0E6@(v;Y7A delta 157 zcmV;O0Al}gx&e?Re+h6%S#tmY3ljhU3ljkVnw%H_003-BL_t(270r-A4!|G?1WONm zop1O%ofetmsc97ez90fFjbMniCxvqQe!le_(XZ-v`7rWyF!zW+8k^U5@00000 LNkvXXu0mjf>EAv3 diff --git a/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png b/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png index f1a9c8360f9ce5b6d044c60441436873d273bdb1..aee93822c9551130e0a0601e8d3156a715697caa 100644 GIT binary patch delta 81 zcmdnWm_I?q+sxC&F+}5h@{j-j?U^lSB)-T_VSZGmP{()lZGd5ulq1(gM{7f=`N@jiAKU-{ delta 152 zcmV;J0B8SiwE>VMe+h6%S#tmY3ljhU3ljkVnw%H_003u6L_t(270r-Q3cw%?Lvug#Sa647!9V)B9bDwA|W#81dFz*%GQa-n_xLVtm=8-*;^BDQ+4yH z?%Dh8%em(;roNu5II0x&nTg5}jW_O7<`BX58J8u(KR&#s5|wrO`=@FE0000tWlf2-3LYh0000>Dg7gjSN r`{o z_g@(6&u1^8 delta 135 zcmV;20C@juI5!0V00000LFS0Tuqe1rk{PpVxJ2T@imM>qweLr*Y$`xHD>1)iVUj3HmX8C_$ pRdfCZhX4Qn>jAM05HkV<7y#~lT#!>CRzCm$002ovPDHLkV1n6?IBNg^ diff --git a/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png b/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png index 499de408be86f47139154374c1c30aa82d50d12e..6f52b10082f40a3c5ecab63038f553a5edc884d4 100644 GIT binary patch delta 147 zcmV;E0BryE0nGuBBtDc$L_t&tTVv6;uw`aoV6X;a9TtZF|81)(%8DKA?Ce;Wn3+s$ zY-}C>F|ly7{Q2{T`!53{_uoH%7(mLHk%}Qo%xG3t)?Z)0eEGov1T3m5%GVAZ*nip5 z+D3o;wF`S!y{7A9sU6B`>_$A3&L+$?|o{Net~ zz{vgg&mRUBhX4PW|Ni;Q00J!kft=re|G+sQr3lXN-v|yfs#6S%!+@rT`8U*PCRSF~ zUthm``2n(&NmWJp+MxscFMt00`8(sI$B*Umi^@W7-@U8B2-L#}R4xs~LI42<06MW* U$mtFv4FCWD07*qoM6N<$f<3on;s5{u diff --git a/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png b/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png index f49b3f392f106a2961f52623abcc7a582f62537e..8a3924309cc29e51bab612c9cd94c97b6399eb9c 100644 GIT binary patch delta 90 zcmdnQSTR8*#NN}zF@z&J`O@|cy6IL`3Hj`om*?9{&iMD|@96_yzVlD`@fS$^X7~8> uk2n3VL0D-5gpUXO@geCyeBr4DV delta 149 zcmV;G0BZkuvH_4Je;IT|SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM002}; zL_t(|+G5bRuq|i&^5fTk#%J$7|7U#k`on+5`_JG0XT0^~<$uO&51#&Kymi4-u0l00000NkvXXu0mjf Dk&H%E diff --git a/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png b/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png index 81691a35590447635c2d92d70a96185bd410a1ae..f46d6e2b1eddffa190da29e6d68f567b612b5529 100644 GIT binary patch delta 77 zcmeyuc$RU33da;r7sn8e=;Vok=~fYT_5c3-{c%w_JS23=dc*j=Rlf5czMs!5T)o?@ h;mRwD0000mdKI;Vst09ke}8~^|S delta 205 zcmV;;05boM0p0eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004kVL_t(|+G1pY03je&0WpO4?%g}}>({TZ88|pNY=DdpzkmP!&-CNR z4=xrK7XE+#{xPrsl`(-BAOPYp{{8zG&Owo3LY6^QhEoq*8AcNi56^#~#h*a3%--JK zVyvvJ98ywJ3Jh=Gz7+@#4tD3~=MQ20|NlQoIX@6f0|XcVITt=7{1=lA00000NkvXX Hu0mjfvPx0q diff --git a/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png b/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png index f3e7717c4d5b5c5d169882b93f595d03c3dcfb29..e42a7c4588befad94c97ee998309acf263bd6c2e 100644 GIT binary patch delta 69 zcmZ3<7%@T8o`r#dp?2C`8z3d`>Eal|5uKb^koI$T`%`&lk-x1I>nGk2&}`+H_P?B= X^@>38!o1R0pi%};S3j3^P6o{fQl;re{h?LbPh#5JNMI6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZZ8 z4N#G{r;B4q#Vwg5fm{s=0G3~UL zN?vf!I&1C1C~d8!3+5PmX%@cO`}Y0kIS0OS88Aef7z=K45Z^x;XfA`NtDnm{r-UW| DB|ABC diff --git a/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png b/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png index 075026cb307977067915eebe296f38f3c244d724..0a1939345250d2eb0460e92afaabb2cc2bfb81a0 100644 GIT binary patch delta 119 zcmV--0EqwG0f_;S8E^yu004Po4FLcE08mLpK~xA^V_`63xWn*{eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004eTL_t(|+G1c}U@!w>AqEim`t|GUy?ggg1u}&he*gacA1LsFgM-6{ z>EFM93@j`x{6BvD;9>!Bpn!?x@87>L4kJz(G-W6<_)Yuu>qOTl9v+_mOy9nJ`>=oi z{`Ib|u5TIm`T0YFgM;1QzI`je@c;jREgdsK~xA^V`5-n5MnT6Vi5Lhj^E0}p(z&4 zB*OHAi-G?i0}}(&KL!xR_?O`?f`=xEBF6}(c>e$S1f*QwzFPnL1Jj&~ipx)>G6{cJ cbK=7_060S>Sg);LbpQYW07*qoM6N<$f&%FeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004eTL_t(|+G1pY03je&VFVJwo}QjfVq#)pEF2shnm|T06B83Z(~loN zxPY?!|Ni}BU;#3iKnxH7aTx#p{R`)y$ly_iQx7AI!^FeG^F;s8pFf{K0!*&1u5Vwx zdbR%d@82I7-oAY+5F8xr&d<*u!ubFHe~@y1AeIIQFaYuzIr>UGT(AHD002ovPDHLk FV1f%zR5<_u diff --git a/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png b/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png index e4d1fc5d5c595b81dbdc936f5d85e3134285360f..e0a0bd2411e5fad88967fb87597927f3f83cae8a 100644 GIT binary patch delta 70 zcmeBWjGQ3pz{0@5P&@6e4Ukgsba4#fh)zx{Nb|gP_|yExr}7eiU6T&n6xgEN^z^?h YLtdpo@z3N>g+R3op00i_>zopr0AH{g761SM delta 122 zcma#-Wt<>c!p6YBaDBe$b|58L;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B=8i)5S5Q;#N{ZLP9~BkC)f4^I!h|uV-6U|Noz3=l=TtNd*^=JYeByF=pm{z`$X^ YkW!#IIrd>fG*Bypr>mdKI;Vst0Ee9|)c^nh diff --git a/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png b/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png index b6d88f15a82e24d470c66ab4a1a4d047affc2cb6..b0e9559a1b517f952506393bb4a6148d102008a6 100644 GIT binary patch delta 122 zcmV-=0EPeF0gM5V8FK^x004Po4FLcE08>dsK~xA^V_`63xWn*{C4TFxRom-Wm_)>) zIhM2hV_@L_!3Cli7?@c8f+$894^{9lir_z(%734D{eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004kVL_t(|+G1c}U@!w>As}X8j*pMOASERwe&^1elT1J$A|@sl&B4K; z$@K5vKadLkA3uI@u|PQ>z{K+R?_U^)5mg4aG9(TYPCblZOGf|v`SXc~hvz@j@87>a zyn6L&y{oJ1TLyl9{*d6{VE4Cg-wH7N|NmbLi1~q-0U*EtJD)?pc^~`Z00000NkvXX Hu0mjf;n7)p diff --git a/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleMini.gif b/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleMini.gif index e0124ff71dfae05eb2ae7eaa23b7aa34ba0f1c3f..370ef06a918451a8e4e773d1ac784eb8b2fc16e4 100644 GIT binary patch literal 2526 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 literal 4685 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 LP^(_M1o-LSyVK+l literal 4481 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 diff --git a/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleSmall.gif b/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleSmall.gif index 140e850c74b529e892ba8e9fac627f704d6a318f..cbd275d4c7518ea70badd731ffc21f42944d19d5 100644 GIT binary patch literal 5956 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 bd}RH=7$o9k#QYyD`EVwZhVE98U^D**+c=$p diff --git a/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png b/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png index fc32eabb36e7a94ebbf753b53e14a5442009e98f..233c7235c94f1338167b2caf1d5dd1cc395562ae 100644 GIT binary patch delta 229 zcmV>QBYyzLNklVauzw#RVH z1)yTGbM6u2#GEQ^%Mh!y*52Qs5W+JWVT^OQM$Bc2@fZ`R5nhforhAs0yfjUs<_S~8 z{L5IgTj9Nb6|~|~Vl3(Drw$L-xQEx~t{b@#^ZJMc=hYcZ&M?)yzK&E*p_TScrNq}K fWHz7BsYCSvQ(=i5&WaXP00000NkvXXu0mjfe4lNe delta 935 zcmV;Y16cfk0=x&1BYy$iX+uL$Nkc;*P;zf(X>4Tx0C)kdlEF(GK@`TnO%N4}m7<>a zAYvi5Yu12XBt~tK<`80vReFiDYZ7qRWp|AV9{d|T2!&E873rn)Xz3}?OMCDjVr$#~ zLcxp3_M08j^w8kN2XFT`-+uFE=FI}heA)BX5&#@G^ovh(`hSb1Wxew!H1y#<2JpBn z0&lud$kWm$uD;XFI31O>+L+qOy*?KNv=j~f6~$S}D~d~!H$yL^rz%-g%NBWuobpS> z8S;B_Z$pM&1#&5iglRTY^^jJeJ2z&e4SzEuC*El|Ya6_$I6C;eXS>fA z`0iuoSN$i&CR_IGT$Al!?ysj7&X<}xau|bwG}A-|i|VfV72^}^{Tbm~<4gUmRQ`?7 z-imuTv+iyCwMsSAr}?MbDSh4*k5YQtFedQ_U>k!9YfK&t00009a7bBm000XU000XU z0RWnu7=Hi&0fk9KK~y*q?Nm!j#6S>@9|i?c{OtUJieA72=weL3imV1+T-V*91trQD->1P1kaJqG1w|J;avbL*1Hv#oFJoQ$jB!lFV7I|m z>_frCIYlB`)feNX<(yU=Kp_*;7YXaTS9FK)D`={5Mexs;${BDDi(dz?5l=fu5Cq4j zX@8zZQFOro{4;!kVOiE?p~#=wtx(3K%Y(>Efz!9^pD)V7F`H+T#7)FAz)9W&0F zv7=@|c32%^rwBqvnDv4MwM8uzg} zNpy5JicNhLb@+Mp&n*EwxBnL;=>=(B=>)W?hiQ`xX8vRXAmq$&tE+az-hULWPtnW( O00004Tx0C)kdlFv&UK@`Woo3t3QNR6%M zJ&2?b%bGP1FC{;qMeHHO6l-sB@)O*3*=(W(5B?1v1VIX=MZAbdi>H8>_TZt2t*!nQ z3SLCk@9YrLLqjipFwAG(eCN%3Zw3g*N{+J}0$|ymTX>b#-+wN?(+7Sbj1i0?ikXsV zI+=X_H6?xQ<_9#nbvh|y^%3=R54*e&(Bc$4sVPoNUQ%3?yy`g~HFe3NUMiE<$#J(> z$dUKR!!^ZUBrhrcD!DCc^6WX;u*(e_2t~-La-}KAX|gCcg+=~MPFdCpFFsJS+4C(P0Q*_s>21$9G0k+7z|nTkcYPl8N*jwbt7akyrwttf z54U{(dI1=C2HgGh{o6y|zuV>Azk$w;Xu0h`%R;mhCj5`Js#!$`zOx2e@J4@U)t5kJ z0G~PlQ^DK@u#*NRxQJc=d2%t0kZE>@>LI1TV0Ow#7=LC`9{jInEw}hifyrR&`$%x{NHQU?9O^B8dg{j@-p`ihVsJeCr&yKT6M^=2g~${^VAi_im$B_w)>Z zaV4(L+TwX!PZ-7w?g6=#ee6k7WrY9$010qNS#tmY3ljhU3ljkVnw%H_00E~-L_t(I z5$%(^N`J&q5Qejgid)3S3uqA3Mp7um!o^BqArG)`;0wf8$y21#CrDu@u@F=iZA_sN z@z!J!FHQXaBqtup>~5vi4t#sg&dixi{>d?nk^Qv-jUf+MKztP}gE_$bCvXd5@CZa3 zRCp67955@MG>jMc&%n79AD5i)ZGc^1f_~OSz<&bopw{`AaEh#0&)aq!XFtobZXCxwxY#+@1XLy!-a&MR89d0M zmSuIgwpuN0txl38hd~frS5=BlSN|^+-b2DfnUt|pRopa98%2+N-;WT_fExZJ_NV2U ze1DNN*5m4+?qflk6e}Y5l{#L5pHk!k=NfT2>bC@(~V!{eZ+ zDPLcgMH?PFzXa+**vcJ$!M_BW93BhkgJN;|!Z6Ig66C!C>iY&N>!*{tAo;gkWfvQL zXrFK$gNq{c^DAl0C~wjSpe)mX#wPTlyfo4$pjH&V!IMRtH);*=>dph&Gq?jcpmvqv d8`(c8@D1`EjJyN|Txb9Q002ovPDHLkV1l2ezWD$E diff --git a/AppKit/Resources/CPSearchField/CPSearchFieldFind.png b/AppKit/Resources/CPSearchField/CPSearchFieldFind.png index 0dcd0cd5328e4ee9210896c2c2fba5f22701df4c..c5b8f5e00328ad0aab3e562be1bc5de6ea139b47 100644 GIT binary patch delta 298 zcmV+_0oDG#2gL%AB!3J^L_t(|+U?XaYr;?%g<^q!6L})Z-ss|qU$QSP65=h~mdro7}!4zLIMdy|UeQdGA zUUt}OXOJmf#E39KTPBFK>t?;h3<<{YP)14fSi2c4u8PGP2Y>i*VZ?>6-8xH&gGdK8 z&)o7!yGW%0R%Zl%mAvVoAFJ;lebi9b9O9ta0Z~z!0>z+; zS0sq>Ein?6eCoa9v@ZQF9$v7(Miv-hi9Oy?!PRk5#UtuyX!h`|q91%@Ei$kwbi|@` wR1~9~*MF_3q9Y#4FnJX{sK6rE82pp`0=l3t3N(%J!T35SjjiWB zh@=q9nl%tFB|o4=>>=4pJLoa1_;MWjNy@Yb;+V$DwEgAakp5= zk@v{MHN{^fFDd>ixh-n)>^a%6%MBX{MaZdgr76g1vM4u&MgB}qS=I{Uhc3x6;kY~- zen1|Vec?=NUw;8FK2WpS^DQ0#`&r=WZO=C`&2*E%(RR;weIE2m8;dlnW+Diu4IKgx zw|xJ40T_4&-2L?Z+e6>K+vVNAfzFL+x$Qv9LbMYm{ExM&Sw#oFvj$r5Mt^73mq29z zpE>|j!Q2M0lLjWZh+Y7BaxsmNX?BO|A*H}zcFIT?W`9y1{I6y$xA;zh$#43oV!xT^ z{FozFbzc^`j4Y;LAi-fGi3RnJ+{JW?eLW+5>m0W~O3$C>Rn~(3`7B)g#Z8m32;bRa{vGf6951U69E94oEQKA0hLKaK~zW$ z?UPF@MSoEg$FEmJ3`8=PDDq0mkO3ou`vpu)eGdblfv+I>22viS#6Wo~@)&vL{rdgf zb9CsOdv&7}|N7m%_uA{Owb$DFq*DL-lN~6?Qnh{_)&zz%jbX6Q z4z@*gf~Ss3o7&C{Z-ERL^_yh6`SBZ85@4*=uunJ7%$2bqwP!G+p z4ELZ;GQ-DT10=~4mqRIpr+;AX0ZcLqHLwfg;46$(QYAY3{ym}3SFVE5*X4R0TEU98 z;0V4|cAyLzzv-`|Uvh0000< KMNUMnLSTYLv$m4} diff --git a/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png b/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png index 77434b8a2085c5acbb0550b101eb53945dc405f3..6789691b0fbee5483054922426ad687488d1c5e4 100644 GIT binary patch delta 276 zcmV+v0qg#%2d)B;BYyz(Nkl6@+JZv6NeBOcF8v2|(ttzP z+Nmy%LiY|%f)q+|vRvEz{!YKcbIF)9lYQ`69tV#k0$;Mg z1fMuyi5#`#k>eVD3~+@Wh8o&y=sfkG@d)DK(8ljj#Hguzt)-zmbl{pAIzt;-^SAZC a$q$?#D85YJXbnRE00004Tx0C)kdlEF(GK@`TnO%N4}m7<>a zAYvi5Yu12XBt~tK<`80vReFiDYZ7qRWp|AV9{d|T2!&E873rn)Xz3}?OMCDjVr$#~ zLcxp3_M08j^w8kN2XFT`-+uFE=FI}heA)BX5&#@G^ovh(`hSb1Wxew!H1y#<2JpBn z0&lud$kWm$uD;XFI31O>+L+qOy*?KNv=j~f6~$S}D~d~!H$yL^rz%-g%NBWuobpS> z8S;B_Z$pM&1#&5iglRTY^^jJeJ2z&e4SzEuC*El|Ya6_$I6C;eXS>fA z`0iuoSN$i&CR_IGT$Al!?ysj7&X<}xau|bwG}A-|i|VfV72^}^{Tbm~<4gUmRQ`?7 z-imuTv+iyCwMsSAr}?MbDSh4*k5YQtFedQ_U>k!9YfK&t00009a7bBm000XU000XU z0RWnu7=Hi&0dq-2K~zW$?UPF@MNt@rk4thd5;2vc6a&SS!c6%Cet|zCKSuZi2Fj&O zOcde_)EUbych8fx>ZrB%KAp&bx1RH@z1FwBwcc;n3xPk0`OK{$sBe5-V&!(o_*cF5}r%k{~k rEzkz3ze0UgGj{!mgN(C&dHMr^lt#u5^bR!z00000NkvXXu0mjf1edbC diff --git a/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png b/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png index 17398406c1d6b304bcbb3d6aef008d048860135e..4b62ff445e7b38b8c0f120f765ab4f4a4bf4c831 100644 GIT binary patch delta 7 Ocmb;po1ik$(+B_yKLU~f delta 42 xcmWHmo}i*6S>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)n=liDF8j%4<-Nr diff --git a/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png b/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png index 0fa178fb88018d913d50feb3af6c3b1003b9fb73..5e8887378a6b88ac5382785772e9e00b25860a18 100644 GIT binary patch delta 9 QcmeBVdcrtCWuoT+01=S`zW@LL delta 44 zcmaFD*vT|OMM<*6HKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNmZM8(4ZTEY-h diff --git a/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png b/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png index 8015c51d49d16c5432435c032af8afb7c4d0a521..f6f1195f6729fa64bbdfc7fa32a1d541f9a14a2d 100644 GIT binary patch delta 9 QcmeBYdc`Eal|A)B0#koX{RLc)cF4T&6y8VLuO7~~f-2I?Q@ R4+Sb>@O1TaS?83{1OQWA65ap+ delta 109 zcmWG)V4NVC&c?vNV6odZ5lBgvxJHx&=ckpFCl;kLIHu$$r7C#lCZ?wbr6#6S7M@JC z0V-1Rba4#fkWEei0>&gcg=q{)yb9YG9|VdGqR;~T4cD}bsQJYD@< J);T3K0RZQ-A-(_r diff --git a/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png b/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png index aec43cd340fb6f474291fd35fa1361881025c73c..6e443d4833eb95f644a093fc5ce3488f550402cb 100644 GIT binary patch delta 60 zcmb;mm>_A+!oa{VX;bejASLeU;uyjqo1AuljY}d$qD5kdL`1`+{|ua2jO&WjAH)Ea OFnGH9xvX delta 42 xcma#3ouHy5S>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)n=liIRHL_4=exx diff --git a/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png b/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png index 7fedc4e2492473b7eefef85ac6b0f60d174d9161..6f02fadaa99fa1dc6eccc8743cf2ef72ce493784 100644 GIT binary patch delta 9 Qcmey&c#d&`%0$mq02Gr0`~Uy| delta 44 zcmX@d_?dBnijriBYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK5+iHd6hXde)e diff --git a/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png b/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png index 4914a6a50ed834be54b7a75f40366d307ba28b66..7c775fbf452fc17618b198fec5538d399de2fb92 100644 GIT binary patch delta 9 QcmeBUddWCJWuoU%01@T`&Hw-a delta 44 zcmaFK*vB+MMM<*6HKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNmZM8y*TTy+p) diff --git a/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png b/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png index 6500896891afd6e7aa665e3c933e2009e6630fe2..ec75c41e7da0c8f9a4b0686145735831efc2b72b 100644 GIT binary patch delta 64 zcmb;onILJ+!oa`~>ED+Rq@+Dv978x{lM@=4OWE4&*xEGM*ksw*>e$%a82Gj^`dEB_ R-vCs`;OXk;vd$@?2>{kP51;@5 delta 105 zcmWHkogkUQ#=yYv+0E?}^ zlYGA&F&3H}IK%AW2>^-R1^{W-{Q#iqzTOr`O+px4+}vHAjZk$TFRUg92t_lPoHPYO gNU17PKmY=OKdb}|TeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM003}FL_t&-8Fj%y4#7Ya0MIw>F9{p5W90~L;Hu6iEJUP~=~#4@`d(mz z1CFJXvp>S5U^F98kTIAM$av$CQrcmO4vi|1(c^{__Sj;j3N~asaWT1LjfEjVJOU;+S}Fsds^huzO6syl}6#aGf2MC9*S!Hnn gLkg#qMFB8?KVVKLp2z(^mjD0&07*qoM6N<$f<(G6g#Z8m delta 189 zcmV;u07Cze0nP!C8Gi-<007{T1`q%M02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM003}FL_t&-8Fj%s3IZ_{0Kf^nyLc@-FKZzlKm;3Y6vSoSPZ9--2)Z*- zYxPe`X^kC@VOc@-7M2ajsF6}yX$mHccwj&dY#=yY9bEu^jNJ*BsMwA5Sr{Xo!oa|=?6l7}AjR+L;uyjqo1Esr#_4d5pMhD0F~%_HjUiBq!PC{xWt~$( F697@34DA2_ delta 96 zcmeY$nIIX>#=yY9bEu^jNJ*BsMwA5Sr9h9j4R`fL7hM*~$bc)I$ztaD0e0sxPo9xDI< diff --git a/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png b/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png index e930dc7d95cb687048207f8fedc8e3b05d4ed33c..05e9291d0c5851fe8adbd38fe58577616cd9e3ac 100644 GIT binary patch delta 59 zcmb>SpCD<*!oa`~>ED+Rq{KX3978x{lM@nB5(E+wE+i&ANOfRkU|qrBZLw*3I8X(H Mr>mdKI;Vst0LX9d diff --git a/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png b/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png index 71857276c74f598749a3e255b3d465a4b930d92d..bb6b59f14bfd666c42570145b6e6a9538c3af401 100644 GIT binary patch delta 110 zcmV-!0FnQ;0e}IJ8D|6l002su&YJ)L07pqgK~xAG1;Mcq!!Qg4Fp&I{m7FR!*?+K< z-orou1wfQGVzh#2%l5S`12MMSqqTyFHqR0sxi*tBPf- Q?*IS*07*qoM6N<$f|?vC$^ZZW delta 165 zcmZo*+{QRTvYw5Bf#JbKHUS_dS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1 z)dr|2!qdeuL_)Ik;6~m<1_BHRe%GItn4-n|o8RrEj9;Vlk{^11xXqawT^25!z~Sw@ zDEUEaW8Wqd5jMY?i5@LW7d|{teeP$Wa$v=yEfYOTWX$A*8V?eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM003Y~L_t&-8Fj(23c@fH0Kj``Pz1$6aMAz&ye^{DU=kgKF3nvaZ0r6q z&Q=`_6(3ZzjJs7u!GaeSl)%ZVqoLu38PD8%f7lQaR}{RHu_g-+n3Az0c1X$C9up!N b3xuC9{e2irU~pml00000NkvXXu0mjfDEC3Z diff --git a/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png b/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png index 6a016f697e82f5d1c7f7929353faa4b1af196900..6fd8bf2191caefa5e1025459361796a0fa6847fb 100644 GIT binary patch delta 67 zcmZo*44WWn%K!u+KD$=~DOpb!#}JO_@7S3j3^P6ibC7<>yqOY6eeN KKbLh*2~7Ys86zYB diff --git a/AppKit/Resources/CPSplitView/CPSplitViewVertical.png b/AppKit/Resources/CPSplitView/CPSplitViewVertical.png index ed3225ab5284a075f6c05601a3d15a6fbd5f4eb2..80f5725d69341cdb68d08d7d13c7e47e5777fe84 100644 GIT binary patch delta 60 zcmZo*^q(MU#sCEUVFyDq1f(QOTq8a>QWZRN6Vp?JQWH}u3s0un z02L{Dx;Tb#$R@|^Dp}dv%PTA_Y;0`I&CT7?VsLF;>}ijQCJcx8_%5!#*60sZ&EV-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^rv)5S4_V`gc8BNu}K3#;Vp|NoO_Uk#q6xy$d6f>K$zB%`{%i&nzFL{~uv!)vqm rO?~`r#;(;8N6%Jf{Z(p8tY8*@!2E<^^;K!0Sqz@8Y<@25oD!MWD8bgTe~DWM4f D5b`im=%EUm?jr?8+2-g~$IJA{jzw8(D_;A9)QlgTd3)&t;ucLK6TkZYW{^ delta 139 zcmXS%%Q!)@o{fQlVXkrSB_JhP;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^s1)5S4_BRV-LA;I9^|Nr&O!ptmx*bVtIIm4geCxmSTqX& diff --git a/AppKit/Resources/CPWindow/CPWindowAttachedSheetShadow.png b/AppKit/Resources/CPWindow/CPWindowAttachedSheetShadow.png index 836eb6a16f0e2a7d9cdf2ba9b435e3222a2e4052..2ecc53336253dea8c1a5223acc1c580b365fc5b4 100644 GIT binary patch delta 82 zcmdnaSTI4w$K2D!F+?IfIUymTqcMp?v9m=ms6enfv2mV%Q~loCIG969JBxc delta 154 zcmXTe&NxA(Ub4hBq9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V14E>zi(^Q| zt)!HMgbv0ewgv{Kg%S-6Ni0H>4CEXb3=b`Nu!w%jn+`ANjVoK7d8A3lw z#I~x$6*DmLs0bWzU}z}0qqKx0MM&S#_5c6>>Py-f8ASFeu_?2;jijriBYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK5+iHhq1Xw49o diff --git a/AppKit/Resources/CPWindow/CPWindowShadow1.png b/AppKit/Resources/CPWindow/CPWindowShadow1.png index 109156c56dddeb44fe18147a4fdc1ada77ecf30d..253bef1590a138b2a1a1b0d8a72ccdba866a06df 100644 GIT binary patch delta 69 zcmZo>jF=#4&%(gK@SADEal|5uKcvkdT;=!Z^_a>QWZRN6Vp?JQWH}u3s0un z02Qfvx;Tb#%uN3A|Gzymhk;R}hrq!jERUNa&#YkKp5yR%Q$pYw4hH2k=79Xa8Pz}y N44$rjF6*2UngE=XB@6%n diff --git a/AppKit/Resources/CPWindow/CPWindowShadow2.png b/AppKit/Resources/CPWindow/CPWindowShadow2.png index e8bc7540ab08aa13109674b290a97f09ea0b3985..b480d36c2b5037395ce4a600bd368ba40eddc8c3 100644 GIT binary patch delta 9 Qcmey(c#Uy_%0$mi02Lbq6aWAK delta 44 zcmcb{_?vNpijriBYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK5+iHchRYS$2` diff --git a/AppKit/Resources/CPWindow/CPWindowShadow3.png b/AppKit/Resources/CPWindow/CPWindowShadow3.png index ca075356d7951c730238e189b9165f334b42d6bf..15946b13691ac73fb7ded37376b339067ef7912c 100644 GIT binary patch delta 65 zcmb;kogit$!oa{#GTUt(kdpCqaSY*zPEJWkNnl8FV^h;eX>$_ONMY+XVq#z}W-zpv Sr_qgAd>(9 diff --git a/AppKit/Resources/CPWindow/CPWindowShadow4.png b/AppKit/Resources/CPWindow/CPWindowShadow4.png index c8ebdd586c72441f3a527faa8de5461cfb84cc10..3b08d680bf5bd0170dfbaefafe65ad70ea901459 100644 GIT binary patch delta 48 zcmd0HnINgn!oa|=RfdNNNO60*IEHY@CMOsGImQfzdHQB5Ko*0itDnm{r-UW|$JYq? delta 87 zcmZ?Co*)^-#=yWJFM6aCNJ*BsMwA5Sr-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B=8M)5S4_BRV-LA;BPlN$9`hk@%2D{927_ZOeYh-w`qBW@I?_T|n){fiD?A)eN4l KelF{r5}E*poh1kW diff --git a/AppKit/Resources/CPWindow/CPWindowShadow8.png b/AppKit/Resources/CPWindow/CPWindowShadow8.png index eb82b4b21f66e1e00284025ce64332b5fee155a4..83851db042f9ec2b8ebaa8fb03b21c8e677b9d66 100644 GIT binary patch delta 9 QcmZo+y3aU4WuoV901-R`umAu6 delta 44 zcmcc5*upeHMM<*6HKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNmZM8$moSq~6I diff --git a/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png b/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png index 49f0f1bbf2edb98e4ab1b57402d809f8e47c132f..052311dc3d99352608da24ccce077c655ed1ae9a 100644 GIT binary patch delta 155 zcmV;M0A&C52&@5+8Gi%-001OEJ7oX>0CP!1K~yNuV_^URBZe3T4F)j=1{NSELA*{u zP=Jk{nGwh}V#v}GXJGjL|JxssY?i+2F9yc{U`;@-3L87aKPV5#9l~zlCs1|XPW`s#LT%T!kT=$NKZ(1Xmf*Kxjyd3}GpBWxFc8=elDZ!Fo zz{Ae&i2(Oc^j55i5lgZ89os>7LuCXmrY2~(qh6>sa{N56%FfZXz=L@R9m(-cr>dns zP#^&YnIueDP=Y{0Nt8;5v5ll4@R1VaK+6eZ#i#RNkn!f}t9jf5A*TMRl5t-$fALp%^Mnl&;;b3F638G`GV zN{hr^xR5B8GNEDm0!l)`b)&fE(IGA4A8ss(4lCn67RopzV}Zr$F&J+tv)ujKPy}S& zsQUtk6~!FYi8bb8j~4YD&%PvW$5tWALWJZrltn0I5mFFTbls2)O*2xGF19$9(#;z% zlNYm^tmH+6bVEsNNVUpsLPBi-R-EY8_yGY&FbpSvPz4?z^t8uC^6zZBL&*dvvsi__E7Z~s0tv*FnFx%h$D#foWJR{Il%*mW+p_Y*5Vy0-Ti*ExA_^7z}6 z4{DDeF28W~-0K;}@oIAR&B1@qx82EKxiMLM0=}+a976yA literal 1033 zcmbVLO>5LZ7)}w2lorHWJq;;>2RE6S-Ay*3YsqGscEPP>yXYP_n@qc*O(rH&H|?cj zPyPS}51u>;;veXt1@+)b&w}7d6oekUcb)7<^-y{+kjzKk=Xu`Gr|WAgb2B$)BuSd9 zuac%%r^I{n>a_SC-a33OmU+J1<{NC2_uYg_me0Br)I)cRHmU3HJ^V-)CF#m$&}#E` z_;8*1b1iN9$!i8Iy`r>flJJT_Ie-|s8^qQa6b6&Z$+ zb6{K$7KL;#;%-)m(uD~Fp{bVyF%MV-az?kyc6n76o{mBY<3{70I7-Kf5-C$NH&&4X z)iBKC8d|5kN&mWWp>^8Yi>cbADcemvQIE}q30UOra-rN%cw^p60#OuqhcIt9q!F)^ zsx1B}e&CxBRUkro3F;VX6@&}~4MH5vu`H*k5j^3z2wQVtxrQstx>3Uj5yvQ5hOHHK zfi9Qzk}<*7qm;XmM<=?0&>dsRrC8HWsLNT>Vr*y90qZ@+S=wVUus2Ge;d()opY!sJ zq9rs59#P*(SO|vsHG>QEbq(8Ajo_j+io4=yxKhGa*~X5@hVXra_5UYls&Gclo8zBm znOunu%(v&QFAnF!LnARUi5QLNKd${2V`bEd)ylqfJDpDD-M7=z!ONdtkNO8M&IW@| ykBLO*KYuuRe|#`F^PZiwR^D9y_1#UUR%gM9G(Ai2+u188AI|#n8hKmmJoy7`NJmxx diff --git a/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png b/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png index 049910091193595b69002c98981f8d44d7036e19..e9d58269766098a71f859b3ba82fc8f50ed7a8ca 100644 GIT binary patch delta 167 zcmV;Y09gNy3Ah1}8Gi%-001OEJ7oX>0DnnDK~yM_V`4Z1gxeVU7>pQzfXQFSPsiQf zJW+fNLjsWd?$7%_-~V&5X^AsrF&HrYXZX+XkKyA_Vt8VeY^GFi3=AN-RRRmjMQ8Y%jV+NFabhdl^swX-1*y1pu~& V%x#p;1@iy^002ovPDHLkV1hO0L)!oV literal 1166 zcmbVMU1-%-9FK_FY8BKvKel0v9d^T;oRfQRauXZxlAFd}*zM}=ExQgx)8w=_-sYpp z>26vEgXx0<5pknW`l4*^VRUbU(Ye72e!vjM7>wz3Ohv@GO?;3s7(40htv(bV7D&$d zpY#9y{@?jvpnu=m)!SB66t%Y4r4vK9AM@t{9~8)k?o)%J%G zU3AS+R7R#fIer!OP}K4fr&7h$(i^hnyR4b$u(2BuG)48~nhb*7Csj%7eZuW zKdkuvSgQjDYCiU(njg@G!3?~nl6!?Ow>3mvk z#+@?+K9}LuY=JjOHi+*{to?s-#t~<@q&c2xmevvJz+}7F`b1b99^{dU3CU<&nav+2 zWA$}WS1a+)U+v$s?px3?@!4zI`aPRp?>HEKbo2b>U%NV9TD8NtG=th+F1~%__jBw} zXS*7o-t@Qf-mtQQ+7;ivG=4X?;rjz^Lqk6v-T2qd{Ort{(hoPTfALGY(S0VGt9;zK z#li=sUwol{jq5(R;dV~D^`ujy>JO(MJkXA<=&N7+t+9FIvh|zt^<%kDPS)<7_%s(C zI{xlgN8HoJF@!@lIUymzLRnw`f2fz&D`6`(hU}9Z@dazeH!}c%r>mdKI;Vst E0EKD~RR910 literal 1002 zcmbVLyKd7^7&by&ROkR3osQg<_+0GRu~kz!c1+v|(&n}m9Vx^ zsx%j9N!r+~@-RA}9E|8B$!z)j)0qsC*p{EQ0~F*gohI9-1>HN{8APWCkr~UIkHAJ{ z34)aJ5LD@5R$7%U&v`AeudksD<|h2WmKRP9gI(aVf`Yb!S`pF_(6NG5%`l9IfFO(@ zA`p`nHY}A`2!Z7z3$-F1TYb-8YKfCAPdU#m2xqgIGE)^+OdvK*v*sYAB`jLyNyfvf zm6huagGbA#NOGRA4AhL_h#hlV7M?CbNb?}LAkNBVqD0DI73L5t2&QQr*W9|~efrmp zORdYnNlsy(mh8BQL_Nmq4OryvYN6Utcw;>+5>b@!&|}eYN;BT`Y+3wK;v}{Z?jVc} z4H*RK9gIzkOwaRm-*J3Z_ejHW8MfU1G_VSj#PF$XPL9?6B#8-6`X&oU$Cadm0GBD9P$`U7kg>9xamRH1-RYf_Z+e zDC$7`=i0Ulj?)WaI1^*F*7KY}^e diff --git a/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png b/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png index eb0bc87f35a18f8dd137702011fd0b8667551976..db7fc63a3489c6d7db5fdb18c824020480f1cc3c 100644 GIT binary patch delta 44 ycmaFL?lnP0P0-WDF@!@ldBUVgzgQ0O7_c#DFtIXrpZ8wP00f?{elF{r5}E)hAq?~Y literal 997 zcmbVLJ#W)M7&ZkVR8a{bF~HK3%Si0Ii(|)DP38D%8mTT(8broA_NB2}`^@=D+>UIl z6~BX#g@J{IjhWwo#LmPyi3>y30ZaCM_Tpo+vu{dN?F^@P^yo60C=x5O}9nvT{fAfuQE6VL@IvR^{xbMU))1ul&tFl6( z6=i#;Dx&y=3NWF^Y3{1OK7Ua`nz-ugP6)%or?YhLg44r`gHe2O65ENo^BinfjwHya zh(MK{=A~1)>Vnsi`}$f}!NNqGxa!iWaX0`z;}mo>*ovVEfr&KKHZ03}1~5cWhge6r zg)FCy9SFhdQKcGBrp}NAD=m3))tL~5qwDkeT${Hw#*cMm+jh-?aZ6gX%JW=ARVy#I z8U{kkn5TtESq^H(Xu{5ft4dFoA!J1uUJ>WzDp4|JdKDEq(x9GYbzBSUQVi)|H?FlV zN9P6AhqPp8JeKvCZZ%+;yPJh-L+Oq4lBcpL(J5i^Sw?fwC$1|0Xi1tl5OpC!mH{mc z%`QSVf;J(68F*gMHVJMxuEX{M1dT4TEW3vhB7tpqwr{pAiSBeP!)~zsycAI$(?&Oy zx+|=CBi8XbjRfN(#!j0K7|fVp<%|`;KQurX#c5uj>+&q4C6uRcX%cXjfkl3u^csE3 z#J<-fxa}?D?gl3A8rbXjIFQ+pzAv%K|Kv=U&ggY>{L?JWmF&QJd)4~#a5X$MmlMO~ yXv|)%K{-~B`otSmKPDe8FMoek?(E+mC=ZU5hr?Us`)227J$U`y1M;zV^zIK&Y%InA diff --git a/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png b/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png index 260cc579cdd0aac344077fc1285039d9b325bbc9..83b4070c5b887372e4af440127a22530edc5bc66 100644 GIT binary patch delta 50 zcmaFG9xy>gN8HoJF@!@ldBUVgzgqg9K7G31$iQF@BSUE?N4(P0^%od`z|+;wWt~$( F69Dsf6CD5m literal 1002 zcmbVLJ#W)M7{kU`Gs`lejQc9k68Ihu`OU-p@Dtok#0y8*73fthe`^E?;l* zcjeY9|K7R%;hZmb*>0a5&>@@n84;|I4hU$+{t@XCKb$`QMz#du+A!+%S>JnX1T>cX z(nc!cl%oYX%7L0 z2+9!42-lEi)Ug2}SUw_G%fg}2b=;*EKbhi)vDA>|$z&o;>JrV4WTfkQ$$@c=Th#Jt z!u+C^o-kA7o-RU&Q_s5~PV!}oMG{z&v+X3zdf48{Y0Z^z_%)SF8QQ!?*XhUl#Yk7vVwY`uX_xjk9w4 M+PfX+ee2olKk&3NQvd(} diff --git a/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png b/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png index 01fe3ad8ad7fb74ab4e4bbcf8a92a1a501823a6e..291d55d3bc475ea3c7e54153b6df5862ba168949 100644 GIT binary patch delta 64 zcmey#9ydY7O4ZZFF@z&JIUymzLRnw`f2fz&D`BfN22U+*?Rs`ihvNyJF%k@%>S8;~ SHaP5M00K`}KbLh*2~7ZlS`%mh literal 1017 zcmbVLJ#W)M7RWd*@$Cb605b(*jM6qs@RbD z0}T8HC^JJP5CaoCf1)EoES%H0AW?O|l6@b3pXYf$U+ru^T3WcXAW71ayGc4?y(!-7 zx8}w7+2`9|#InrWJ-*9^eBx(RYKCk;fgAfH+M#}U`1~tf6M$jV?eU(sWd$r&{L)4# z;#8m|X>Gko{a}xBFrcF-vE{Rmr!t5_TYlQ`ke9aTINChQ=;zc@1SSHQ{@QP5COEkGIq8dh+9RoC_VKt&iq zq(ZFLux`~=3n4IjWTBRYL#soanU*-&@|g3~f^agKD3iLvvJu3lX_g$SS`!wv{4n8u zQA_fbihKVS#kmW8M1A;hWYT@WYvEKwq5u<%oe6$InBjB9G0^A7#v z#--MI_b{cfLvwbJ1)?6ql?p6!cePMyD7>*AXOSq1zfV|j5YvRa#FoV$C5%D~VFO{T zuOeMVnt`#2kx7W7InAb1*N9qiT!wY9)>t(fs&2M0#>6qrw%I0a4XKW1I9k2Jx=GIc zB%qaUBy?w3d?nUuWz^>^>oT@qb->P;ah8u+3R=4j;Q2w6l;^TM=g|_HMK5URWGn{L z{94f^`v1he(a?#5v7wQcX4Fl2h7JEGXHYl;%jWp2S*k11f#vq1^~K?0cxWOfCKIFK ze*1JyjMY7tG`q$3LD=sbD-gc_`Rm8o>EihK#@5LR!u`3|;O(LzJv^S1K0KMf`)1h- O%VBie+vMFw|K)F5YBq)d diff --git a/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png b/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png index 6300ed5d668874e884857245aad57844f90b6974..421d344a7a365350a6acc9e1357ea26e2e08009a 100644 GIT binary patch delta 55 zcmaFC?lnQukcEMP;m4J=oIpy@)5S4_LpFKBuOkZor#3$1Vc^-s^tSwq@N1wXgQu&X J%Q~loCII#N63qYr literal 1000 zcmbVLJ#W)M7&ae5sG?#877lkM_T441W2>fe?3zZxrAi}_5y!qHR%@TJuf*+GCN|Wa zfq|8Yje(^L6)Ou8zk!K`iPuS77^)6fvhTz1^E~h8>z(b#t1I_bBuQHBZMl6|ufTil z<_-Avf3Ra%?uyN!*yUp}3vwpe5g#$sOM(gOvmiQr@rA7eU>pyIV(33HL!Kx>Wuufy z253oI-zc*n++zZb*d$IZ`RAw4GKwQhe%AJ}pE+zAZyn`q_h@?%9_@ujByT)I>!k?< z2@?S-ll`fny{~~RT<4q#GWNDoErK&$l*CdZ3Q<%tYM@Pg*02bu0KQ+6RcvY z651fT*`y}MX!*#XmPcc=?|MruI9c*kh|E;g*=(lFnhMV+DlrVB;-Itv7LDRC6+ziZ zi?y1;Wks0BnTUCcD#l>M4}>Lyr;8Ah%=gcU(_)z@NSRs&nMxF_CP@|7+`15b_ScOI zt&727#?(G5_(2{*J;rM_7;<;HP-O_-m{0QEtXBJRfkrUw6RHlnY)=d4`(_X~g@if|LQM>I>53&KiFR;=7})shliyw zF*%IJ`**MI!&u$vx%Qy^K6-O<^857k?Ck8TbbTUSy(QiLcJ;yAkL_R8?DaOc-4EU8 G$A17OUNVOO diff --git a/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png b/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png index 14c5c58e13194640bb2a1d4f11b49882b870cd53..ff4610cb6305ca3824099bb4549834f6e963faf9 100644 GIT binary patch delta 63 zcmey(9y>wBQpMB7F@z&JdBUVgzgqg9K7G31$iQGuB7@ T`FrQHG5~?6tDnm{r-UW|cqhZ*JdS2nrp4$ zwpcHV_tMO?_}>3;<)c`x@@AKBvOXV?luGr0^(bgXWSh1r3HBa-qKg914?A7n^={if zixg7WD0!3!v?MJq=Lzw5CK^ox1|5WJ`zhVrU+?()JH8dj z%S&J}w*^5&IRSaJ8)tUz$YWkx?2Btv24fSxB}v-y$%)67r9goi8!1taOPA$Mfq=}8Dt;(4dUaW+YmNST_GL`4czqo{~$ zY@P8o{o}@&)>&sSp=z6EY?%6@9{u?eEOK|gP+=&%vG1gzC<@ud%pXQH<}K{V;*S!9 zfeld&B4jQ=Q-ekgAqznZW7lx&b+>9@t>ich>moy6sOg4jH4sABwXCMq#7zTgu2FN1 zYKd*d87Hw%OWjcDPO$p9Si6x@!dcp3Y`5%yjRE5<8?Xd4Hg(_;Ka7iWQJ#}%F-^lq zG;mWEfpLEA@C^Nb;$GEF>>^Y%aKoroEqQ_s{wHUua7HbfbiTwuI#?~e z5u3^8JKPO?1iM84MA{J1qjlARD6Z8M?P3y(7#LWJ+~qK^bmM5=1%vlOcqel3B{!Ek zo9WJUQ)jukgD)cClb+&4`hHeQT3X7i^nGzcPxv5OnoP>bnt!)o!Mv=Dq|&5l2tnj@ zDD#xHXvM0Ml2t1fWo4dDheU!{c_SyUh~Kts`GcaoobrZP5MRE_D_e7m8#lPMrYvvy zPCWR!)GevlRB+|Zm4ZzbB|rX21S3CR*45NiTzhk^qONA$>WkrEWT#V6x90&DF7RMa zUBynvaF94U-+$InMca}kZB#XEJ35yL;+Ik&ep9z+hux-@mX?;L!|va6Q~E_h2%-jkd)~QxJbrCzI)1%;eE#LT zLDBF*k3M6jm9?~#O&ilE8a|2WH6UTssDuH%BH`VC>l0;O^}Sf{B>(^b07*qoM6N<$ Ef&n+j*Z=?k delta 594 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 delta 700 zcmV;t0z>_x1IY!D8Gi-<001BJ|6u?C02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00L`CL_t(|+H_Mpi<&_co$vFlt777dwO4{`1PLi@1WBWnsTn1Y!R{AWAS|+7K*aB$&=3;_4=WXna3%&csi)$$!9MhCBD1x#!M|QYaLJ zHuCwrQm@zDyHy8|GOeRw!6bhBj&(Cj)#o}J$sJF=aN~Q9o)9HMk z&*v`?x^FZZRf22AxW^pkYCHvMBA3euNRyZMUhGS{a$RhTd~<} zdKgcAipaw?UQ0<~IAimX;E2?#Bd$>f7rEY@Xt z)^4}^3O-F1i$&OMHVKNHo}Nl@t;LzcTyn^z7x!YZNSMuLVYONXXC#Q(Y<6re?T|=o zs`{^Oqes?CX)$I5EmC0l2|U61>S+M+wHOswBd9*rAG?Pd_G?v zR~Vr(Z7^{WYfgcmkx1n2csve6S=FwPqu=k#nPiIcD)|;5 zvLlCFwtw^n7Cs=*hOgtP?0BoylHgh!%waA$K~yLeO~Jh{qj3NL;9nD6biTwuI#?~e z5u3^8f6%nvD!JC_N7}T}7H zDtakcRkr5FjWuPf3Zj?ODTyGpb-1jgqM>G}rlF!_+18;{kgngA)U<497;4ziQd3gD zlMcTB7*sXg`s!9w)z5!2!A$M7q3POJ*P0qCucm{U{!>fKx}vRL2O%3&$ig^;LoMVxI_p+(xk=bUnh@yZ?V|k+sWheZ&{O);e!!l=G5&w vc5GkWoH5DpNy4ZJ8M9_(Oc<32@BRZ`>Pk9_X!QsH015yANkvXXu0mjf26@gT delta 709 zcmV;$0y_Pm1JVVM8Gi-<001BJ|6u?C02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00MMLL_t(|+FVn=Yg$nlz0cnoB3eyT(e4K(Egfo$p-VtQrmEl&?9j$Q+Cs%AjXv!;7k{6my>PtO`+etp-#zy} z<>=^07^Bf>D5s~V{>#hD=hNx*>D}F3l>0WD?Tgdt{J6Kb_bQ!E-)6JfrNL1Q0gx@l zVli=jeO;Z+W{*rJlej+?i-oXSt)oC7aC~xd@(v>NwE)Q0a=H9$I2=~ZX0sqDpeTwY zFPBRxpzFHC?tkv?aiLInjrdGKP&qq0Q=84^1vcy!i$xG5=ks|fP^;CX$b3GR!1_-r zmD)czIOwuZ*ZKK*0Tt~S!r^cToR{s2a5yZ%HTM`}4s*#N*McAacs!27C>i9;Bf!A* z`T5`2H@qQ-TnhN$_%_LGJ(J0ZP$=||fu&MO&R17g^nXhp2S)p`^?(9Sw6=h{l)hj2 z|6#;fh~AM)0pay}waH}S=DJ?53v|Q^(mW2DY4|{JxZQ4zGplOBVDKwlXVT{8rttZE z!sGF*D|5{~#+bugauAxbgP*vL_k+PeMZiR(jQj8PdUB@wE|*K5o$ml53v$TiJJ`VD zNvG3!*?(%a_Ki2d^TKH9$v&^u@?w^R#s*_29o`LKi_V*qad1$YQ{BE z6he!5Jl<7RwTkVxz&G<~G!ltKVv0YvTU%Q<(P&i1vwaBIHBB?|-tqqRNF?$rnM{7z z+1Yu6+)u!Fi0Vo%my_*PDi!&t02PP<5ny}e<30`02Rc9(_`&Z$UMW8ko(mguw9Uld rz+fe|u@acDLlWsca@U{pUjYUHR~8Z?<1jw900000NkvXXu0mjfIObve diff --git a/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png b/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png index 9b462b25b3a2b67bd71ecd740155906871abdefa..a63d93f5401373580c50c7dbbd24d81bf3a2197f 100644 GIT binary patch delta 399 zcmV;A0dW461)c+t8Gi%-006c6H|hWY0cA-Xpx!8zwNFsM>O z9TOE1v~jxnZg9a3Efk6tH(X#)eIKXMgqV3>r-`DCg^i6x8%2{k<~=bXb-iq2V$sFJ z$H$|Kg-Mg^B`IP5GE`V}cxAI!I#?*KKGB8j-MWp7!(uBeaBykUT9Xm7&dS2WMbW^( zpn<~0!@^mS5r6c@sf|w$7n=tjuyN_(WAivg7gDQIH}nY@{CR*+H(ZrS2{8)uk@rvV zn2#tB6Eu>XJWqyU@COgW#gr40Xd*(CJq|yd+1t}sK)}=2?Cqn&5qm_pu}F~T6q5l1 tOisy@*y5ku?68YYjvP9>>}+y>16BoGD(z04@Bjb+00>D%PDHLkV1lU8xikO( delta 648 zcmV;30(bqM1C<4k8Gi-<001BJ|6u?C02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00K8jL_t(|+JsX(iyBcFy)!<>_ao6LSXxL}jUXX~76D0Nmp_qSNfihP zT3J}=9~cnQrwg(eAz&32i#0s^%8ITIFy!DC6(EMc0a*lxEH`~7}XE|;Gc3I&45j)2w$7W7wD64|YHkg<5$Xp?^?l31P@?Z!j2$#bP1NcsLF? zA`*$n5!huo99}Xa(0qLE{+v>cwLOMI@>3Y8l+Y<_?64$K48W(z6&O~ zkNXY{X@HI_YN%z;*J$q(0%IoscgP`^8fxVTz$Bec>!|F;caX)xFM3J9lt@7->9U#(V2TmavWX8xnWA9hF~ iHxKTC8fyOvFaYw+5N7>)9|8aX002ovPDHLkU;%>dupR9H diff --git a/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png b/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png index d4136ec3847c90db293e446e89d447e8124cd556..ab3765c7973924329f70a5f19cb1d71e8ac3c4e4 100644 GIT binary patch delta 392 zcmV;30eAkZ1(ySm8Gi%-006c6H|hWY0bWT&K~yMHWs$K<0&yHizX!SG95fUTtu5DR zZcc9f4<6;6CY|J|2zPn@PR^mRJt7c-+8e}KoRkPB#{y|-2}zIFkeblvjqkHP5fKqV zyWc5Yo5O6Bjm%-``hEvZ{>GMnV!j)kE-^6Q{S&rUI;L_4XMb1}IOm)K7H1f!95E3= z>m8aiiy|e;RH#sd!U?aii&O9MqffTDp* z6`R@{3E}7>s^HRK!fF#5xKz0OMi-8&^Ey6PjMs-TSNPO%<|KvV_NR-&$Dx3QMF9sN zg-iRBq@X{HJbwaOH1U=+X%XP@FhUm+(@;eLA?*!90#q~&NeFQ={ek*-Q1l06hzlBf zn6JZ|DBRFD(aQ*vJv0#^#sS%{$L`1NA|&K?(f#;(!r*||Iu^U6sd2|M&)iWX&F)(N m=4P9HbW)_y*=Ku|`v-oKL$v&=jq3ma002ovPDHLkU;%=X@36T5 delta 670 zcmV;P0%84^1FHp)8Gi-<001BJ|6u?C02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00K=(L_t(|+JsU)iyBcBeKU@Z8Wl`5D|VKm*+PP?7O~UTA|fbQ81x4O zQi_ltprq5nY-6)cND&e=g$NnY-EQ|}zu(6ZcQ_nhT`t%AL?ZFBP$=A%%jJ{MC>F8OXf(2m z#p2cBa0tn=%xpFrzcUQuaVF0Sb1r7<}f*p@X4$}P1=kt%#>9huh zdpsV$AhL>TPN$Pmza02~_Zu8=p@9}N2&~uZl(39nR0qfrcR&@n1FI`&phbcQH1P|o zxL7Q*NF>6nXEvL$Ua!YFNJxVYQ20I)xX7AGLK(fIUw>L3yL%9W5FEI{?4adq^!xq# zcDwZnd!0^)>AKF7@l{dW?RGPd$HT;WeLkNq-hobbe`uQa2tA{M*X!j&vmUV-xBw3t z3hz+zH?8BX-EKEUHS~#!Rv;!Ef(s3_h};H)!H=0tW`gYhJK%r|4Ya%k!k1(+*&*wW z!C(-l6@STMg;pWmo2gVvi^XCcXrQ$%mrIt-W_M>NH}QDfpy55FNvoU9hIA*A)6d_*t!14XIM8@c!EEHh)xv7$HfB5-!dLZV2B9p9mV^SFKh%V6_TX zh4)>r*N?4M3&a)S`#IUYbAl}#LWs!|_XG{J{}%)p0HK=`S3J*o2mk;807*qoM6N<$ Ef)Q~&?~ delta 44 zcmbQnxSMf;ijriBYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK5+iHfBFRTmHF diff --git a/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png b/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png index 05e7096884bae4baed030012b7ea7110b6efdf2a..fd2f055fb18fc3b1c68e98a0f795e8f68dcf3839 100644 GIT binary patch delta 62 zcmZo*44fco!2kpo8)f)_l!T{?V+coda>dav^E(;4HXf|6h+H9%!^iM7PF3Wj%-;r( NT2EI$mvv4FO#ngw6X*Z{ delta 109 zcmWG+V4NVC&cwjLP~CB*6-Y^zxJHx&=ckpFCl;kLIHu$$r7C#lCZ?wbr6#6S7M@JC z0V-1Rba4#fh)%Bh`bzZj|NsAIN=QfqWF&puU;qDv*x~kxcbFM^?epfeohT^bP0l+XkKBgQD; diff --git a/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png b/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png index f0bafb8d1ba2f399c4023202f0cf83342803a930..c75f83c70f2ac2d58021c9703475def3cd0bf748 100644 GIT binary patch delta 9 QcmdnPIGu5V%0$m%01)g0R{#J2 delta 44 zcmbQvxQB6qijriBYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK5+iHcD-rQK?*331eNY%#D4d(ZsyZl)-YJZ%6wXayGrK9A{}e`A!Rt7-iACf@_law* c*SA~l7bvZNkPE`B^#A|>07*qoM6N<$f=zHYxc~qF delta 161 zcmbQvxR-H)O1)%>YeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4R1_p+BPZ!4! zjfu%W{{OdU-gx824U0)CM;&fW1rlfcCnX8YS2=p=(j`U}O}0ztfJ9Q{B$4DFjT4es zSz8q*i5!017;)4==OhD5nL`_|k0CpIyZD4{&6>|1J^Cco_DR*ThCyR({RELLdn2G- N44$rjF6*2UngB{EKUe?& diff --git a/AppKit/Resources/FIXME_ImageShadow.png b/AppKit/Resources/FIXME_ImageShadow.png index 2b3e46c558fc0078bdaf0d2ba7abf49e271ba020..5d81254138d7ab326a558ba16075643c2b57f7c1 100644 GIT binary patch delta 10 RcmdnU(!(-Ad85ZmMgSEO1Ka=r delta 46 zcmeBS*~l_MS(!ny#5JNMI6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZZ8%|^x7i~wdC B5ODwi diff --git a/AppKit/Resources/GenericFile.png b/AppKit/Resources/GenericFile.png index f6147a1767c386a5594cede49908596003a76b9b..d1d48824b30b2e48fb37919a7372de7b0f60c472 100644 GIT binary patch delta 1119 zcmV-l1fct=3-bt&BYy-sNklSS*GyF_Gb^4(o!^+ z%e|suMJImS3V)^j6dlz`8v6Zy-N|baZrfV`IY+5G(_rD2n3-rLh@p0Qha1{e!aGKKqhQBcY$z)Oofoj5gyFl<+jDL#ODgg9J5eUo#^Z+0ljp_iv zGMUVbT_CtF1!|c90H6`jLx&_13Ecp~=H}*uLGZcF`C1?V0&4_-0uaCgfG{>T_FxcP zRRj2U;3%7Uh2SCy0D60SMR#{MYQoIc*4954M%C>MfWu(G!NGyf0v1WZU{D7r7KBVLhquMM3oNjQkRu@1A?C$OglH~epj0uOsy7OSe;NYMb7#NtNbP)6N z^NWQ-p=fIg5YjDM14S=YJLLr?2^>hQqB(0_}ywY8&#g@rZxx(Z0;DF7G*jy`CP z8i3c>9GO!D#_#!a0Bv}9_~q2p)Th0@y|1Te|wPw@-%{B(KqX^ni zGn9@^foA5ZI`ze#DVn0g+kXoH?qS$k1b@xFSM-2P0a*k)m;qMhds8*QOAL@TK-K^o z0pK-N7D1^5B>){;1LQK;(LzW{VOa#F5|k+*Q$PYB0q9r&G%x*gR5CyUaK9Ij_XK4M z*aZMZ-g7`%owKDUN6)C`^ZD;|1T8=ZmK2veuF(;h^6Ba6nP_lGQXg;OIvy8&Oj!0r z+#NpjyFB=K<`~W&k>$xs;xFd}twa+C^y6d+ad-04?dgE1;}O>%WIxHu4`Be0@rmE3 lF1^q+g9%m9;IMSZw_i>Rd{kS-)8YUC002ovPDHLkV1g5L2_OIf delta 1432 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 diff --git a/AppKit/Resources/HUDTheme/WindowCloseActive.png b/AppKit/Resources/HUDTheme/WindowCloseActive.png index 5fa29fed3c88a7401d9ebcce7f9c7da3d54a77ae..5f54a821821b63aa111a1e2ae624c444dd66798d 100644 GIT binary patch delta 533 zcmV+w0_y$c4Wk5*8Gi%-008{QM%(}Z0qRLaK~yM_V_={%xWIUUDVR?%k-LX&727KA z9>K(5z6(qj7*UkmWYselm@Yh1vRArYx?QqYc&5N~J@cEaNXi~CYdQ$dmhIH9wl8rh zbSbni(XW>66r8K!^ne+zC`MFpf?S}?**UCo!XM!kV6Dd;72#P7nJ@Vwj|D*Sh-oNnw z$dlrnplG#pk>dYs5Jj8<1v=pgfel#`XB>HU;XhEx^NBMWvJwLI!uj(5b3qhw3#A(Q zW_$G{%1P+L|}Rxwb! z!uXN;Z?T^o|B<8kKjVMa|GfVt{ww@f1wsWNix((@tOOQ4|JnX?{pSHfE+C5uAp-zE X1j*!W>kb?^00000NkvXXu0mjf8o~gv literal 1765 zcmbVNeM}Q)7;i)fkX2?^21C(XA$&O6-nG!L!5H-D=%Cn@3W$P~_OPY2SKFf$2o6{f zQBaV{aDoVms7yp>`P_m;bf6;Q#uN<6CJTrkU;@a8Q+7pgOJ?@RF1dT(=e_6md%o`q z#1Wqn?Op5%1OibQ3QO>nWVvl^@MqMm1JU^M0TvR2MWRVqnoN%nf)r>X0thv-ornaH zDbjcKApQh`Rgy{?gT;u#d2&=klUa0VCXEh96A1o+CY?;KMlc`|*{RY7P$t_uD1b^4 zK#BGffg&9rQK~{S^hjhzgjAlPmU9)9z)t{w6AvfQAeam=X;QQXo+*H`#LL6?mSZ{v zSW>~%0hHHH#fZcJAJrp(9}T3+K^6$GAR5H?|y3@XItF&R7%1ePxf zZcVR9;z?k^vMpQ+peQj+$D`BJ($Z*YOd6`+Nr$*xu7!iapyC=-L%J4|nW$QW+X@4W z8031D4pX68z``g?L{qT<3hwFa5HvcG=nb*fu$(A7WptBFM~7%2U8AwYwWMvpB*@=x zyj9yEP1hlG31UD~^>Vx(Np34(Ja_+X$fAgQ!`rM^;YE?9z^FV`gJ>}!96-U}&=e{K z4}>@%1hIWVHUngFAczZrTo@Lx1VKRpCJSb)aJ&u6V6$Kr$l|iOd?p0J0xma%8v=*0 zK!$+D5wMsmSfSQ{$+U80#jXmsyNu=hCzi+8BQgxtOHnjsr31uD6hjS4R0r@Q{Q!|n zuF_g$OL<;L3nO}!5m5;As0LWdFHiLr`~QkN*pCehAc(_)`792TOIgM${!h;6xHEK1 zbNr)OR*vuvv~1tBJ}$f&9z=^zj2<72443&CeBvC1aFEnA^qn*;Y@Li;86EH8;o%N7 z9a?=!BqUe2l-Ae=#|@A!7H={>mXAe6x21X-w-w*XGe)*`e?IQe2(X-0ROpoZFTRsP zM$gTYW7orPH@MD?9&J6}I$JSCyg!bW=eKZ1b7(o*y1KfBkHgez^$jD2ku~Pn5@Y*Q z&-~7W&~-)Ex~8Y6>w0^8UBX>8kX$Z*C+vhOFJ}K$N>}2Av2kpH+BdbHq+b7%x%wJ>3vR=m3N`%L% zs=hpxt>gS@ztQgLlP5kq;^U2tKRCa1N|*~Ree7yi<7HD3F;>(!R-f*_!E8Xo8^&X{X_A1tf;a`jS+%6x-+x!0L-qRqR zd+gl0`WaH0{-ay*l>(*tfV*|V-4ZdfwW&VJzg}VWknCoc3tWl1Yrf~`Zr$l!9rIqM z8>yhH_?aySQT8(jyX&roCYUoe7oW6FDA`;qDRdXkBwp}Jy!mPC_E)=%#`o*8`}_O9 zS(86vH&5WZa<=B@=P#0Or)_0!*tjt;J}xfHevEi}GAAILcFxMmifB(5E=x9VT9r$F zh`N*P`X(kO`i>kqqF%LaGW1w^xfhK_D|2vgDDo1o$|M;hoZOG4XV(X-iOQa)#zt{v zMTL)8+w3MWdXX6qhONh6%+Ag_x|da-W07}nvz1Oc4`(;5?^k}kBR00p=3btH;XNG5 zdYCe@zjl5;9Z62UZfgaVRhvL zw!qq0^YHPjP2(pM3WjKI=Q9`b+84>a{d>N;R&uGP4VDreHXVPp7`WhhnK0v8l_4OW Q4YB-qgdq`dLvTXwUtlSkF@z&Jd19c1nzWDe)xXWB9$q;AVSeMwcWb2?`27R!JPW#N#{dML Lu6{1-oD!M+~Pz50rer#@oQa%)sv-aK~8s|2?2$22WQ%mvv4FO#t++ BC4B$@ diff --git a/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png b/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png index 92307f8b000f7130d02a0944a42a779dcc5e3091..24656a5e8536aa15246bf5c1cc130b7a2c7ddd38 100644 GIT binary patch delta 80 zcmV-W0I&a-0d9~aN;OGDK~xA^W17Ee6Vu&?PniDy{}06fnEw4kry*<*{U6N6f#GUF m>i&cIAR27Oe~5lVO;rH5tWVaomrg?f0000#K6FCVAr8sASGGi8c`CQpH@zmvv4FO#op- B4}|~# delta 89 zcmZ?Eogf*)#K6E%7B^!SkdiEMjVKAuPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_( qRK)M;;uyjqn|xz)`gw5)1_ozcu9G*GU3?3aV(@hJb6Mw<&;$U-92{x@ diff --git a/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png b/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png index 0d46be367b2e8bfe5ea260f3fe1a22713a912772..3334e6648bcb915af7b80fc8897bf5b1378d8894 100644 GIT binary patch delta 63 zcmc}_njm4t$jrdNpn5y(6p&&L@CkAK^5x6@?O(EhTrN)+#}E$L%X8O-xS>N=;0uEIgTN o160K0>Eal|A)EZ;(^GB+);&yjJ3miT1&T9xy85}Sb4q9e0F_T0=>Px# diff --git a/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png b/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png index c70019c3a603c2e7e942ee3012605c1d672492be..cf9849b9e326f5ffe661078e7e0e33e1125d7828 100644 GIT binary patch delta 50 zcmd0Gn;@yn00ei!0|bE-ucwP+2#0L)k55le%Q0|?bh B4TJyy delta 92 zcmZ=Om>?O>#K6FCVAr8sASGGi8c`CQpH@|Dp%_DMpdGdZiU*a$@`3n26z2^VhdBW8 zA0&tUhKdcS!{mYZDUzdL_$gFwKpe&n#K*BX3WkqE)zIBxGd1uy3WlfB+hGMnI0}Xf q=;bgbJVge>fE5>`Rnn-#NW=if(o0*(!D#sa00000o?(RB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001g zNklhlZCf%!++S0JU~>Eal|A)9>T@V4ct=O^3#m;AQn{-6Jk|JN%#zB>JX i{Qr7JqXrfZCWaFl(oG^q)?EbZVeoYIb6Mw<&;$U^!yn%O delta 129 zcmYeC!Z<;)nvH>hVdckpbwEn8#5JNMI6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZZ8 z4N#Gpr;B3FVdQ&MBb@0BcMyyZ`_I diff --git a/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png b/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png index 12342f636ff4631cb0e87c17855b8f78dcd1d076..4243fd990da531a1cd635b2017f9344887d038cc 100644 GIT binary patch delta 81 zcmbQjm@+}qn}vaaf%!++S0JVB>Eal|A1IxkSkbj)MxyltHzdQhVdckpbwEn8#5JNMI6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZZ8 z4N#Gpr;B3MDOx9+1Dw2zz08L=x=! a{%2%Mmd>9wvqu}Kn8DN4&t;ucLK6VFJR8*j delta 120 zcma#*W}F~d#KyqDu=3-)Iv^!k;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B=8a)5S4_BRcuU=JfOb_2c&)Fk}vRaP{~1_kk?8*2nDpB(KI1bdc@HUWY$2OJo_^ XBh0!#T{(ONsFA_b)z4*}Q$iB}UNbKg diff --git a/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png b/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png index e2935bb7a2947f8623ca91d1800347a164cf5136..93b44c35485f1bfc03484463126dbd785f8b24d4 100644 GIT binary patch delta 77 zcmeBUOqd|)&ceXJ!2BcZE09w6ba4#fh)(|VX+9%|pMgQ+iu*h~>t{M#31(|!)lrv_ fh%?YhUctz)zMS*#-yR8WpcV#CS3j3^P6-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^ru)5S4_BRcuVr>CduCGKrbKVQ!#@%-=a?+T6KJO<~cYKJ>8#qubmI{cC8sBWCW Z%djQRtna#aQ#(*EgQu&X%Q~loCIGjeEujDa diff --git a/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png b/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png index 17e951c446b4841a71aa0fdb7dee8d539b2912b4..e3787b91fe3fdd4a0b0bc76b342269d4ee4108fe 100644 GIT binary patch delta 241 zcmVEng($GN@bouZ4 z-}Jnu8;YR!|KR@~|1F+qC#bT(1-*_%{15r>_22rFZj%}xRM3el7$_X}-}k@WU;WwY zN-$G7gAYgi5C0$V-|4^cZcRs3L9nnZPw?}|{}KO#fR>tV)oQW<3tIL11BF1s{%7q& z^kslTdcBT7H6WqjZSHztReHS+K+_`rNBjz$?ji}b#ug|P{y+Sae}y9_+?}34p|E?t rQMSw|J_|FY!NC9knvYUn8bEI?00000NkvXXu0mjf57c-O delta 404 zcmV;F0c-w(0;2eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00BiwL_t(2kz>%%&{(0SrY80O|9=L2n8D11H8nl2sj2CPQ=zxF_y6GF;Qt;T9{(*YES_jjNoVb7{f)$5_h5h&S_5E*WXZKfMUw^i`y1EivA&3CF zlM|@;Fi3HDc=-Q-fPnu%1O6Ku8}A0X+Y#s#LAcRC5AgsMKaY%z{14I)6chyZBrsIA zYH4ZNz!h3qS%3BV`}>0x!4w1eXYK9nLx9eZ0V~qe)9ZC~bOf6MQv@`9o4dQa9^8!} zMGg)QV0VEO0P(NDz`*H1cT1x9+Sb+jO#Gkt z-}}6k8;W4o|FZw7|NWoXCYZ3m1v8J;{IB?*`9I{7Lz5{VR4|sS^jPixs{gtFBmO$i zHdlg~%2|52_J8&N!vC@VJ$73;ng~LKdCH#G{jd37@;~Xn&uvy48?azdZ^8fC{~+Ol zvymZAGC(1x-kATTK%v_IW!qBqz^a^jqkyK>{IB^{JUvkoYE3v;sQObuMGPn0o#{ZK u%6qv{;mjyLsyLTngXZ_-J*nuy!2ke8v0LOi>qsd80000a%8Gi-<007eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00B)&L_t(2&ttH(v|M3kW+wIj|9=L2n8DZA_rJTl`z{L$3mv=)6B85v zgRr-^_jxNTD>s}9v$C@Omz9ab{a;m8^*=W^_kTo0#9wD;=h^1w=1Opd zAOh${PN3q$AjQ?y)&C0%3;zQR`0wH2u^Z@aN1#&#;YI@$^8nrYysob9KgcO1B_;op zl9K-W`1owK0e=Fx!l0m_-hzUH{~%Lgih=yIk&%%hPEJlTU`0SiZ%j5MTfR delta 89 zcmWH_nII9u!NkD8Frhs79*~kOag8Vm&QB{TPb^Aha7@WhN>%X8O-xS>N=;0uEIgTN p160K4>EaktaVtqnPmhhmfPrZrW6Z>rkJNxN44$rjF6*2UngFCB8jSz| diff --git a/AppKit/Resources/_CPToolbarView/toolbar-background-center.png b/AppKit/Resources/_CPToolbarView/toolbar-background-center.png index 18e0335f48144f866be2f77e94443efe944382aa..7df3663bd9cb87dafeab9fdd571c7f18ff87b019 100644 GIT binary patch delta 115 zcmV-(0F3{^0gwTZBy3knL_t&t9RomffR&Ii@6usqARu5Q@dJFQ VRmPP3M<)OP002ovPDHLkV1iPQE;s-H delta 165 zcmV;W09yZ$0l@)~B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001E zNklT2~()sDSplPNUG08bHISpo`{ZoSw9%X8O-xS>N=;0uEIgTN r160KC>EaktaVx3n%L_q=21W+f2&R>)D{g)ON-=o4`njxgN@xNA_#GWH diff --git a/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png b/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png index bac884dbb4a0b725f40ed5f05897a47daaf776b0..2643e3db899d9eb29105b10f39c4a74088aef92f 100644 GIT binary patch delta 122 zcmV-=0EPd(0ha-gBy(O#L_t(|+Lg+&3V<*S1kjG5i*pG={voS$5f@#GoB#hI@d9@D z3diN>D-rQK?*331eNY%#D4d(ZsyZl)-YJZ%6wXayGrK9A{}e`A!Rt7-iACf@_law* c*SA~l7bvZNkPE`B^#A|>07*qoM6N<$f=zHYxc~qF delta 161 zcmbQvxR-H)O1)%>YeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4R1_p+BPZ!4! zjfu%W{{OdU-gx824U0)CM;&fW1rlfcCnX8YS2=p=(j`U}O}0ztfJ9Q{B$4DFjT4es zSz8q*i5!017;)4==OhD5nL`_|k0CpIyZD4{&6>|1J^Cco_DR*ThCyR({RELLdn2G- N44$rjF6*2UngB{EKUe?& diff --git a/AppKit/Resources/action_button.png b/AppKit/Resources/action_button.png index 2af0dfc48ffaae68415fea7a5d2e6653786424ec..78ef20a1849db414b226dcbb8340744f893fbf56 100644 GIT binary patch delta 336 zcmV-W0k8i01KeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00EpyL_t(|+G6GE?E-N;l>gt@*!caAA3qL2)x$0R_U&6>LPEkLAlm|4Iz9$WW`Ci{ z?H{g`0hGImC9;@+I16j4FflQ?2h$uJ9Q+K~Fj#8ghJIWyu7^p z4$y05Xb}|xGTg<*<=LlCpZZ8O7=+8;y?Yk}q?ut6iWE^H%a<>o1*BQYF_-}stFQ<~ hizp3Z%L;%10|4fMwLooudOH9B002ovPDHLkV1jD5;X(ia diff --git a/AppKit/Resources/brightness_bar.png b/AppKit/Resources/brightness_bar.png index 3848c2c17841228e58266b9681749f0d957a9d65..079a05cf1bd17f65bf8689dba52be56a43480803 100644 GIT binary patch delta 9 QcmaFCc$jg5%0$ok029~)+W-In delta 44 zcmX@i_=0hQijriBYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK5+iHeH=WMU9+ diff --git a/AppKit/Resources/browser-leaf-highlighted.png b/AppKit/Resources/browser-leaf-highlighted.png index c786c820b968e2cb41bff93c97a70a43c9880ce6..5b9e80e37e33181df97da53ea57f150f8f5f2741 100644 GIT binary patch delta 167 zcmV;Y09gO90=NN?8Gi%-002su&YJ)L0DnnDK~xAGRl%VO!cZ87;qL-W!yt&&;H4S0 z8f``|zzeah39=*1+^P?2#^AUoDUE zq~tH` delta 288 zcmV+*0pI?(0k8s)8Gi-<007{T1`q%M02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM007cSL_t(|+H{b?3W7iohG%s>h2uN-@7$Uqk1*+#Wc;xahwgxj|Rf=Fp_7+Sj0JBqBMtgb&sPdu;PU2y{_wvck}S` mJR!siU?1wX{Tb6!fB^uOw4(d3xu`Ax00003{|R diff --git a/AppKit/Resources/browser-leaf.png b/AppKit/Resources/browser-leaf.png index 196afdcb6a787696eb4661d732a7b638208ede44..d6a5e1d41f48793c0ee012c4d85e51a2ca755c8f 100644 GIT binary patch delta 165 zcmV;W09yaS0=5B=8Gi%-002su&YJ)L0DVbBK~xBtV^A(q;$c7qdjIv_skJBxAqm<3 zclvMfU;m5xWMyfnkjsC+|6c!{|6Bgo|D!QqSqm%_0EB-3z5l!XxB72(NJRoF6!72w zfBlQ|Xa0Bp7Xk|f{cV4G`{e(c|7u{fy#Dk(dV1)8@qbykjUKOe|Ihj_g6u2+Q|~=3 Ttr9t500000NkvXXu0mjf@N`lL delta 305 zcmV-10nYxm0l@;08Gi-<007{T1`q%M02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM0084jL_t(|+G0>vRxVOfQsVjl|33pR%&4cQ_n(1*;r)*vKc@Zp^QZ6b z-MjA?&;X;Yt?hqSR#t{@-@Y+?|Ni|eQ1N`A;*L9a?mUGna({7g`On40#Q>CG`1$iE zSTPX)1+o|a{{6cfsQ4NSNF@^!69XF?8v_dq3j+rS2Lm@ZH#1OS0#Ku}s;X)j3$ooH z#f*%M3??QfF9QMso){PyoCFI0VnI^y&(zfPMMy}<6BQMe%|M}5Kzs`%#{#tGubrLU zv+(fn2U1c}8!Dlak5Rn$`t|GGz_7>yVi8>71Q1{VrbmW`zn_P=00000NkvXXu0mjf D-PDCY diff --git a/AppKit/Resources/browser-resize-control.png b/AppKit/Resources/browser-resize-control.png index c335460deae102bba94f03d14d3be69da0aa1f8e..9b9e50587f94136e65a2fe3962978f7b1cb2eae3 100644 GIT binary patch delta 39 tcmZ3)SUo|7!^zXdF+^ix^29(ZQHD@{)p;vsa&|EQfv2mV%Q~loCIIGN3wZzl delta 78 zcmbOyzgk908&1lE{-7@6O+3>tFa`_v|AI?FTbYt{Fmu3`RhLPPwspu zu6W?Ukq?sve)zXYDV_c4$RUu-S9|x&$C(ZSb$`#RY%LJ0Gl=gwX);@&fPumM-s(4R SVt)64%=dKlb6Mw<&;$UU`Y@6J delta 202 zcmV;*05$)G0owtP8Gix*0080D;X?ob02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004bSL_t(IjqTI134gcX{6X9}HFlq!f#j>;M1&07*qoM6N<$ Ef?MlSZU6uP diff --git a/AppKit/Resources/empty.png b/AppKit/Resources/empty.png index f38e9f9100c290bd0e9a0419810c2d0149562c8e..4b5b3029265a4ef9b9c654442d56c7f198ffdeb8 100644 GIT binary patch delta 48 zcmd0EnINgn!oa|=RfdNNNO60*IEHY@CMP5SIm`@<{vKTGfh-13S3j3^P6rAKL-PYeyPHP!wyW77=Xaj)z4*}Q$iB}^S=w! delta 84 zcmeY$o}l6{S>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALDbX5F{I*F nQo;iEgg^iP+t-OQFtRZucrpFI)_dhAPyvIdtDnm{r-UW|_~#x- diff --git a/AppKit/Resources/plus_button.png b/AppKit/Resources/plus_button.png index 25a6e982f4ac66dc0d6af30ca4f2cff71bafe36f..ab8c66d241d50fb83349b0da916a6709a3251ab7 100644 GIT binary patch delta 70 zcmbQwm@+}dLEF>CF+}5h@{j-j?U{|(n*JN~D4KhSD0>SvW-k3!{eNC31`406-|fp-QAmY`!m3OZE9PPxNc4m d|M=q>Q^{-Nvz#B@{{rn|@O1TaS?83{1OO?GNYwxU delta 237 zcmV$DAI?f5kV44 z;Q-iyQVM&e1K5I3QIh1_T(r;^Y(?MxGrj?!0<6FU(8i;60A?ltsRyK8AkTr-1<`=m z*|x|d!m80CO*#Nvgi98{yUywWdi_`6$^zK= n1F#)LDISn^fjkF(|2Vw?+#674k2$0=00000NkvXXu0mjfG;3sk diff --git a/AppKit/Resources/slider_button_h.png b/AppKit/Resources/slider_button_h.png index 1f493e372155849947795ff83d91aa79aba133b8..b4a49980689b7d2f3bcda13c4c7619c6f9824e5e 100644 GIT binary patch delta 190 zcmeyvc#d&`L_G^L0|P^2NcwRgB^uxp;tHhy|NkEl5U^>}rqv7#vYUVco3{GN-3QW4 zB|(0{3=CzH&sqR^X`U{QAr*1G6A$t>81OJ}X3{<)y+gaCb=`%(?hXwh;(rvr?`ba% zdh{beKyc>9$(+yJ7Bu=ATsWx5b;#^bm(`KzXS_SiTVorzq{SapXmH%#pndIOsis5g p+Elh@Omj9XYw1l^3RcA1Y>co0hXz;Pnv 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 diff --git a/AppKit/Resources/wheel.png b/AppKit/Resources/wheel.png index 81d06b2447ad84c8af4863d644b354c3a697cbb4..edf379414574f30703c23283e9735853fe934a94 100644 GIT binary patch literal 77631 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%0Dhu-az&Zf*C_2cP@WV}~yIv%}|o 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 Ze*(HCHsRFHD2xCA002ovPDHLkV1jH_DYO6p literal 81812 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 nNk~ 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 diff --git a/AppKit/Resources/wheel_black.png b/AppKit/Resources/wheel_black.png index a5f42597f548489ab7d59ad55b5f9f2494191964..363a68a7073175aca0ee9b7ab0c3dfe9b3f0d52f 100644 GIT binary patch literal 8034 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 e+e5-RgBOQ|Ecu@VKv&a11M%SLtN#HT7M&0P diff --git a/AppKit/Resources/wheel_button.png b/AppKit/Resources/wheel_button.png index 8cca49ee39177ed6d003f56dc2e7d2677e71b78e..9a5ac6ba1695d097e6989e90eddac38d199e44a4 100644 GIT binary patch delta 1900 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 diff --git a/AppKit/Themes/Aristo/Resources/HUD/button-bezel-center.png b/AppKit/Themes/Aristo/Resources/HUD/button-bezel-center.png index cc9401c7359a8308dbfa20cc26c5e9b397215ad2..a32abade3ac862c29af9a96d601021dcfd0faffb 100644 GIT binary patch delta 70 zcmZ3*7&$@GfrWvAVdByFKp>^y>Eal|5uI%K`~0Ww#@5Ehr}jLGn+;hFL+|CM{Iut0 YIF~L`C75;I8K{=Q)78&qol`;+04c;5b^rhX delta 152 zcma!C#W+E-o{fQl!TQYfTR@7lz$3Dlfq`2Xgc%uT&5-~KDkOUZ`7$tMCowRTm@zPX zdBwocWDeweGcY_>WneHgVqg$n^G&W=AE?&A)5S5Q;#QJ@vGMQoUtV9=XH#PXf@S~z x|5p~iapZ&c!ECP2?fmi*lK=ky*JqVrIBF(jUZKHhl>*ev;OXk;vd$@?2>|W!EX)7^ diff --git a/AppKit/Themes/Aristo/Resources/HUD/button-bezel-disabled-center.png b/AppKit/Themes/Aristo/Resources/HUD/button-bezel-disabled-center.png index dd4ce2152560ba6a15b8f899d68b5aa9efd824bb..ccf10e7c453766275c0f5bf8f739fe605b5ac28b 100644 GIT binary patch delta 70 zcmZ3*7&$@GfrWvAVdByFKp>^y>Eal|5uI$9o$&MMfkOule3EaQaC1h}46XO_2|w$_ Z7}neo$*uo5Ljb6j!PC{xWt~$(699jQ8m9mN delta 152 zcma!C#W+E-o{fQl!TQYfTR@7lz$3Dlfq`2Xgc%uT&5-~KDkOUZ`7$tMCowRTm@zPX zdBwocWDeweGcY_>WneHgVqg$n^G&W=AE?&A)5S5Q;#QJ@v2k|7udlDgnT45w;PU_f w|0ikBBz_j(};dXu=9-zo`Rvw1#=|X0&eYfA(57f-y>FVdQ&MBb@01l%s^8f$< diff --git a/AppKit/Themes/Aristo/Resources/HUD/button-bezel-disabled-left.png b/AppKit/Themes/Aristo/Resources/HUD/button-bezel-disabled-left.png index a615b9382c4fce5ec81cef55700e6fce2f31f103..54d1e177ae0fb7d4122e89876611c19889909777 100644 GIT binary patch delta 129 zcmV-{0Dk}e0h0lc8F~Z&004LFlobE~09r{zK~xCWV_{HIu@aDFVrOBJDg+)~6a7$`BB< j4=aoAk6U*cSQ!`r9n~S{6(*Sa00000NkvXXu0mjfQ<^n5 delta 237 zcmbQt_>XadWIY=L1H;{?G4p^FXMsm#F#`j)FbFd;%$g$s6jVs|2=ZlM$WCHlC^2JT z`0|Q@p~)P`_hw*ttjfS(XvDxEyylx+wLVa7i>HfYNX4x+eY?4s3>otR#S_?B9PTkQ_?3HZl03A!4(K2TPgg&ebxsLQ06rz`**Cl?6zFm<(VB0}6uyLxdy-16fiiYX1Lb`2!UB_v_mu`8O>053u}Je82V~ h%m1@LC;w*n1pv0QEL$)lBGv!^002ovPDHLkV1gs?HT?hp delta 240 zcmbQp*vK?NvYw5Bf#L4cn0Y{ov%n*=n1O*?7=#%aX3dcR3MwRf1o<*BWG68&l$bFv ze0jyd&}0tedowURR%Ku?G-6;7Uh_?^S|6yk-P6S}q~g|^K3%>;4k9i4^WvNZt}G6_ zTF@ZHYwG56|OE zUmnFbybeMRZ{Ka*dzL5iz#4sl9~a)Akb2O6({!Gm>?Aki>RBpx_CA@j-td_9fs<$Y oa&OB8dENH9#3x|D^wg9=TQI@sf#s6VKsPaXy85}Sb4q9e0Gx7&AfAnT3IYVdByFKp>^;>Eal|5uF_H`}~*Ljhz!4I~je97HyiyYM6R3=b3m9 c&;O+iiz->-kJ(Ir2UO1B>FVdQ&MBb@0ICEUwg3PC delta 155 zcma!9%Q!)@o{fQl!TQYfTR@7lz$3Dlfq`2Xgc%uT&5-~KDkOUZ`7$tMCowRTm@zPX zdBwocWDeweGcY_>WneHgVqg$n^G&W=AE?&Y)5S5Q;#N{XaPaT*Uw(hjXH#=?b7NCu zV`J0cc3jYz7~B-k9@F#lXt#I|&;S4br!(=0GH6C{^&VZSw-~6O!PC{xWt~$(69766 BElvOc diff --git a/AppKit/Themes/Aristo/Resources/HUD/button-bezel-highlighted-left.png b/AppKit/Themes/Aristo/Resources/HUD/button-bezel-highlighted-left.png index a4b766ac2506b16912d8f23b824611debd0b683a..9a5b41e5d06176fa707574db7319ae464464cfc5 100644 GIT binary patch delta 128 zcmV-`0Du300+Ioc8F>T%004LFlobE~09i>yK~xCWV_|TSF6Opo;ALSl;;{R}^`C*| z9~T1`0|O%i3j@P{1`uEY@o+L2$dY2D#AKH5|GzN--N>SFb%%mkuI>NB i#iIM+)^3KQ3`_u^8x#M*&E>%W0000-t4Aeuj8Ax$5b2;uZp(#Ng@b=d#Wzp$PyGGgD&# diff --git a/AppKit/Themes/Aristo/Resources/HUD/button-bezel-highlighted-right.png b/AppKit/Themes/Aristo/Resources/HUD/button-bezel-highlighted-right.png index cd709f3192791fd223ad6a42fa54f17d4c9f63b8..83af4b04816264c68fc7b680d2fb031905e74bf5 100644 GIT binary patch delta 122 zcmV-=0EPdB0*nEW8FK^x004LFlobE~08>dsK~xBtV^RCh@cHY}r@bt{85nsv?3nhm zFfsrE*FP>65d9yBAtKlr3}i_W!yusj-#3=;KsEoqd^jS1ljTAq%QwZlYY(#gpT+Qx c;Tywe0KUx{nU;k9RR91007*qoM6N<$g5|_C7XSbN delta 244 zcmVkn;1b{|pQaEDQ|)7#JXo{}>Dg+)~6a7$`BB<@^6{j9fs5!i|rIxNMksSk@g1X1Txr k4;PE>hg-WDjxsO-0J_Q|_+@eh9RL6T07*qoM6N<$f)8Xf>;M1& delta 242 zcmbQj*vvFRvYw5Bf#L4cn0Y{ov%n*=n1O*?7=#%aX3dcR3MwRf1o<*BWG68&l$bFv ze0jyd&}0tedowURR%Ku?G-6;7Uh_?^S|6yk)6>ND`x>f++O(T%004LFlobE~09i>yK~xA^V=?>x@AHSFcY0ZVF);G-*)i>B zVPN>rz`*s7iv>u5m<(VB0}6uyLxdy-16fiiYW{y?`3@BM_vPCW`I{{F8(F?7-d%f; i<^L>(e+=IkJ_7*LPb-zCPS{BR0000Zp1E++UDmVA;ZWU{KlT-5f;GZ2+gwE!y+Ir7RGyQ&)^ZQzH zCyT20{7eigj0pyt9q*+zMjTwE|KQ`o`xA8!$Zw9eiM94v)v>2V<;0)y1#|g`LnUl5*%nKNnRWf{3N^(&=dT2M$Sqz@8elF{r5}E)!mRV{5 diff --git a/AppKit/Themes/Aristo/Resources/HUD/button-bezel-rounded-center.png b/AppKit/Themes/Aristo/Resources/HUD/button-bezel-rounded-center.png index ba9ba11ee9fe48070a47650c125fd29205e1686c..28bea0d5632126a2975072b4f638381ca5462af6 100644 GIT binary patch delta 73 zcmZqXh?yYi%)-FHF!5-7Adph_ba4#fh)zz-NHAQT{`2U8PxBjF8GV$LQv_o+eV2~> bcb~X zhNxt_G4=9FoGq6MHqQJsOlU}AP$+tRGNvZaJUt8{N?i9yIL>B?Vkr}IFA#{b+n5uJ5*6D+oIM#ibn>M>X@$t-uL8!CXz8{`{_-2pN?fusI}@WJ8jG##R-$o*%}=xhT(Jv^Gw| zJ2-Gs5`k%cjqn8fj;1-sOV diff --git a/AppKit/Themes/Aristo/Resources/HUD/button-bezel-rounded-disabled-center.png b/AppKit/Themes/Aristo/Resources/HUD/button-bezel-rounded-disabled-center.png index dc9c361974211cf4258998d929ab45e1ef33cf00..37e60f839ab0d06aadadf8053e8b1f3f5974ae31 100644 GIT binary patch delta 73 zcmZqXh?yYi%)-FHF!5-7Adph_ba4#fh)zx{NH8o;_<8ier}>Soj6O=rDS|PZzVmPR bW6#Ynd7(&d!KMI3pmGLJS3j3^P6$D literal 1027 zcmbVLJ#W)M7&a|Js8YoSEz`*rTVvnZi5;7oDv5J#BvPU@5)o4z`;u6xea5~Lw_-qS zj7(Hw;|K5u80d;%V?gR(=l~2zh^3s9xOAvGV9CA@KhN`iziRDlEic_&5(Htnv2C~c zdX2v;H*fIo{V#7$__E6CUA9XHY~sX3sCcwbKqGL5q)i;};OQr_Aqa~Dztd&i=0nq^ zf#hTuDGegd7KDw>G;-WAVW3ZjerSo`KYSE{?^)vGQWG|#8X5W9hcVeb-08T7W7qJ+ z%?Ds3HMu}Qm;=&aFHFqT5~sQ*-)Gmd2&ND=w#1oJ-DV5aXiPv!f&~|95NJq3YEjqq zb)Y~5WvIwVDIncc6%#@*e?)FA_6BC##&cWzWQiljB2$(plZiA@B^nQ9WEe)Kp(q88 zC?p3VbJ9YXtmO(eN!-|vm`_8HDLQ?+&n%I9Itw9)n$2_JFqtQcr%Xi=gbV}?+r}EMRIsYqO0IDkSFK`HtSJ!NMFSxlm&=NRi#oI`2C8c{ zm~$Ip!ko}0xm};zopBMql55st;xHO_DBa6Dpf#e5CLNv^I(T zXT-xX4Zt+Nrhkcjtn2t<+|^PYmU+NfQ*gBiHF3`M{wHTLcSg>d<3h9KSG)tW?Ro3- z!};)#kWWm^N8{eslXrZq)P`N@q$mAeuNUF6hnweroVKIaZZ5V`z z)E`vnV5@7>EHD)4)~^V0u(Q9`(TRfq5U3w~((A7lHLSw`2!BVreN)W-tz&>~cW)U3 z40hXzUB&>1*@jiIG=)zXsv>H^+d-nefDSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl3=Ay{ z3=Pdq49txT%q$EIEe#DUU0mGE+#DU?B-%(X=v!;W?^Au z5Px?R(JoBXH0dq_dFl#g)?GR#M zVC?gBaSW-r)f0T$?@)li+r4{hFLIlTh+R@pbLcQz7c({fA#=oM`x+MRvYa2xkG+yF z^>R;EGh-9s&-m}UW}cg%b9zd!BgaAyy#O|g1bzg6q zuNnHx?+#mi_2HcOZm;J_`UyRiAF3z2-zyHByKrG!?(I0aO8pC^ch`okmTS4T zQ}DlFf{^IxO{W%l&P-4!`f?z3Rrdmkxs7r@u0}`1HCC;@#1z7AFU%XD$@op>sD*H3 zw1|E7&YL;=Qgj2)f3_3rcGX#?!fYkMv*>2dx30|EQyd&}DjZF25^aoS`zL2}o@hJ# zQ2Nv78aw`CUCycRf1k`Ssft{GednV2H_Lb5eVSraY2^D^vG1{a$9?~Mzb^81R-0Ar zoo6lAZ@Xu=jtG}%&KBi7sSPJ)E){NH`u%rpy4Bn`m%t;FRT5WUJ*8k7y-M!LtB0?@ cL^m)ptdM0~A6CgWPvZ!%TbOfsM3U}3Ok(jhD++4EE%4JOs!Q^%+?sWw#(7KYNDX2WDs z;o@iudyK0*W_usYs4=c^d7=TRGHPSI+ZGZ4gCXwa6vLc;%qDsn;=8IeY0-v%*~vN~wD8vp_;*UjP6A literal 1403 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3HGH8OdY;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl3=Ay{ z3=Pdq49txT%q$EIEe#DUU0mGE+#DU5Px?R(JoBXH0dq_dFl(HD9GL^P@xjd!9PvMoc@aprh!R#MM)I zyl_VZ&wl+g20Bj3$<{3Os@zG|3z&1}J)e8SGRJK8R0WRb^6v!N5?5ph>xOx(=u3;d zw&reL{n4TerL|$}ud8p3I=lA;!{c%l>o;Gk=1;HEY}nZIY7ZY<^ToWD#m^Z<12ZIk z*3{j2|NZ#WqMKH;Ebb&-nCVue9pdaLeI|PCwJo>bW?h-TE%?WyFV{VmUp6~-N!ayb zhS}`vS c|8z!%<%+CTdrc?m1C=v)y85}Sb4q9e0C!v%rvLx| literal 1028 zcmbVLy>HV%95q6!P^%&~3e(AzIuZNMN$l9vR7sqp5p{`@NMwRI_9d}e`;2`hZY35Z z1_oe3Vr77pjfsH{EC?j_{sF8kNDM_P=QJ)Ist#DP@5ArC-}kfD=IzD#>+^yjEH>Az zHeWCBcj?j`|K9xe`hYLjSfj@}bjT)7OoXaO2Lv<&XGGe>@pd16A*+ILap-q@tY>c+ zE)66n!$@fmake0=uBDOVZV?6sWaNjY`19i@5%``d-YeVCj_PFWukXdAv$xrG_qJT! z6W4Bm)zshu0bveEgY7UeQd6Aj8hoE!%OaRU*p?|CJJqvWpiW}~$`UNNP=!E65-OH7 zO}haUh@cD=87T#%8AZi_5X>HtTZ_G+(YEl+7C)Kdn6b!^<;i3sO^OnYM>5iNJ=0K> z0!I{*-H_^O}A;=V+0o`Gy$UQv{A&6}IL^w=liQ*}fQzw#<1mz&e z;+mop)+YblI1`<8cOxRVNkVsGm)B#soRfL(&Nq|+xi`k$*ylxYwk_)J1SDil%M|$^ z$@4t}q6$PvD?v?xY6T%3LEW;jimO#zR4pafIE!1XHEOu7=-4Xh2wAvNQ50O#pjFjT zL#@M{+YA%tgf7YL`rPh}TRE3&)MMf>8h0t(&O4wrri>tDd^+x0xdAIYV5};*R)VTH<9h#-GnqRhXU%b{S@J91f!X$? z_4(mscu2@6Cg!8@`NP+2UQ11@+D#7z{eFMkZ*@9{-+vwcrgJM8!RAHRE%&1JK(X}z!YpZo zh9a>Q3g?ucseVxV4-@8LNRr;B@=Eo;%6}ywRQwMUE|NW<`d=9=2!RljQ)Pg{N+=L0 z&SE9KT@9!j6*4ezFjc6$Rr!w&8QAp1*Q)(j#efW)VG5Vj{(oaa2KGGFSL**UAp=vj z`cJG93=JCpu|Wo=I?X?t|1lv0dx`o7t^b&iK{!GA2383@Tgi>u|1lxMd;#`S^=CT& z(ILZsMhge2jk^EQAutfH@Q5bL?$rB_3c=BFRE$4UcBlS-WC)h{&v;5gHe7U(+I2Ju zkko&HC^Nonp*wj>N3|a7yfuKwIY^TIzet*qS|EQWXAyELfk?9b=ld`6U+ljW0E5!{ UAhCDK3;+NC07*qoM6N<$f*m!DAOHXW literal 1397 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3HGH8OdY;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl3=Ay{ z3=Pdq49txT%q$EIEe#DUU0mGE+#DUgHl%X=v!;W?^Au z5Px?R(JoBXH0dq_dFl$`r6lr2$ zU|j0y;uunKt0#E3A5);f-R-+~oX|d`X0s;7Q-hVKb0WXNLV@I@7fbK`f2h3eKwH-# zK5K1mX(?4h2aZUN{@C*hvl<@Un?2{uy}iZH=FPM|Ts`mj+bEm!-3Dp}ToMNq1tyhQ za2ZrSFp}#RXKrlJ>{_JA;lz+Wo8`}i#CMZUK3Tggv+_;9XXEQ#cZzmCc@cf9sLo^g zWzo>k(@$J(aQ*O&c)izuX^?h$*S7q%9FtUHRfIaFU&LAlFWJi?v&!QI*Q{=phxX4! z9Ro#-g*rtXy54DjWMfo4t@P`qf6zXb69y@fW)X8TIY0lj;jmQfE4;{Sv`G65i%YrV zffOje(P5%UQE7eue|5#!Ycs_qt>RG%|6TY?1_yG-~7ZCMkbeUxc{`(tz}?&{k3Y@ z-Msl2TQw`eG$CZQ>u8ido5rQXi7ofoQ< z*<*tk{c~lvl5g=Fqecm{CnRJkDO;`*&8c$=zrj+ME$7p$Q-AaYOG!C0>#PHiR4-e0 zn+hgitDmF!=5PscG{}=tBZjL%p5|_Yn|SiGU&r_V4PJZXl$89^oj`@O{8C?mGcxk? zS`$bAhJ}Zj9Tw#mxhmwzYLN3BI=K(Aq(RZ^tu-L0e(}cauEv18{^UCGM)=@q8v26! z7`e2zU!ocUU^`jakIcJu7rrnKORF+|ZlD@EHp*_XyrPJL-4l?hs3MxwXwM0J0~8qc ULKFRWn*aa+07*qoM6N<$f|E3sod5s; literal 1417 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3HGH8OdY;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl3=Ay{ z3=Pdq49txT%q$EIEe#DUU0mGE+#DUDv6HKlo3oKKUcFY%MX8A;`9&f5`8lu@ z5Rj2yl3$#WU!dR|Y^va!n4Fmh;)9|G;#-&0qRg_?6t|-MTm^9WT4iFf-_6|I4cXsL zrmhASKo7f_8M!%`7?>$R^`?*$X8J(K=z|gmQeuG#0aGA|2~YY!4m|Uu<^gj|5io0b zmaVzKz`(fE)5S5Q;#N<{d2c31k$bVOC8pCA40;4a_pms+b57fktnk-!-d}c`(v8I| zrG|^VcgmjOu#!k^H@MkzqSQRKeuw?9uv;6>l(FrbTWfsZ{PVNDmCnH;p-fc`Y$XlX zrrTbYIlk~kjNbDb+wL|mly18iD6&-b^rnWN#tw4?mt4+lUzT}_`LMy23Y&csRbFNp zNW5td|F3u=#pvAowXuRnK4qA!>Rz;?eWA0zz@O9MJ6>?@$S~P8*+)&Yg?DBx%Y1#L zDL`Wj)AlgQt__WQT8`)my=Rc?F4%m8spW=?xtdr)DW|2R(0s@1U-gu}KAO$WfB4}C zIq|K&Dh?%bg@Uu67X55|!Ly=Y?fmEIKWpN?iZ0O0^0-yFHf(q4+nr1;7ny#Ftdrqr zDqxytwp}hHH23T8ziBpd_E{!U;x}`)y+7+)X5jmow=k@5=Pr%Y)~7eE>puD@bZb;@ z^Wuiju~XOCFZEDSI_PgZ(PNJoSL<@GrJs5}@(X;O>CPa(ebSvRw;LYXnJY+ro;TB< ak&R*bu}g+bfhNVE!qL;!&t;ucLK6T3b@-3~ diff --git a/AppKit/Themes/Aristo/Resources/HUD/button-bezel-rounded-left.png b/AppKit/Themes/Aristo/Resources/HUD/button-bezel-rounded-left.png index 5612f2c91920c32f18a2253ae3866fa73eea7051..25aa49985981db57f99f6ad5b804125290a7dd24 100644 GIT binary patch delta 321 zcmV-H0lxm~3ef_P8Gi%-003k=)ZqXC0T@X{K~yMHV_-lA%nX_gehg_0g$xY{K_&(> zh9cP&I_C_Z8GkVQ4-@8LNK)Qr_{!wJ(SJiAH24n_E>b;U1mx<&A;jcVl>>%If=~$- zE5+>w|Mk!y0|N(Bh0a^u|LBl`O;38Q?tdK&$iNwa1h<7@*f=n1Mv!vXrkCo<^QM<934l+_%lU!D*Z=>V2S^XrzB*<`4>rFN0R_a z{TGNbim&>% TvBy%s00000NkvXXu0mjfZ&Qv+ literal 1386 zcmbVMZ%i9y81Dcb5SWH(KxB9xN-(qcujSfaT3OrcNrggJDnkql$K6|c!rj%oV=cHz zb!IYgqAr_eo7uzx7YogC7ltO5*9UTy)9 zS7cj30I+=Lvtz(+FrA zA%SbzL<dskUd7}1R~H_C?>W`Diw3U^SqS4PadN% zG_RtyIp77S8hn1pEh_*jM=&FYkr+hc2yQZ4ES5(h0>d#BBT$?$;ugw8P#6X+KCo_0 z;X_n_W)^Mfk^>HFT7*K;Xf%pMO^B?tqPWdwOL7o|QP(i4os!1JjFMWCVxWP_DMCaO zWC=<#vMq9l=74oi7eWvtKHn0tq%I~(PZ=6xBPfnws3<1mn%7pf0Qk?1Wwq5{X9S=D zpvoNzr`ID?k^<|wyS<^LqV5eUBH@{+hQrV0$5E}g0kG6>HvRO)?_s-M<91yIpkwGK}yQW@+?G414Y;bct(*$ zXgl6sOm3H2Ul*2! z2T1zFDEeru%WWDk7*_1@(#~M)$5(@n+T;Fv#HxzRQP=6Im*VLk6CY(2MR!j0{k-qS$-(KLz9L>ONk1A-pNeO{ zeXST?IT`=c_3pQrZ{psJkzcJfV?0qh?EWFXH*ioB3z*!DwXbod-n?y}y;s&UyJqH{ zi&kUP8HcOkP<{9AOWm_W#<#|ez6txASN!c6_EY;urk^aFt9t#!OnxFko*upbg|b%; zgQq%n1C>_~rUm=q@gr{1yV~AEUT>b@&lTl8@%}}B^)_NOJMBpCWE$W1V9%$mZy@XT zZ$7ZEuJP%jRadtRZ5;lt@xsj9X6xQ>HdgKme=+y@O?z?Q1M3fMC|uFI@@zXfgyn4c z>-n|c=QYAt{_d)sT~)es%$<0+KT-d|1eE!Eey=BS`8j&~C+8!vNol~*gRCDq_KP&lZoTUARu3uehVY0IJhma`oLel7Bz1r-nZ4YJTxwH%#ar diff --git a/AppKit/Themes/Aristo/Resources/HUD/button-bezel-rounded-right.png b/AppKit/Themes/Aristo/Resources/HUD/button-bezel-rounded-right.png index 1540e13d87a5c15f1e467a723ee87093ad073d4d..53879627083e67f58a2bf4ea559cb2293b50ead1 100644 GIT binary patch delta 322 zcmV-I0lof|3(^9R8Gi%-003k=)ZqXC0U1d|K~yMHZOJ`LLID7U;WvxS5G7L+%|f&5 zXX=%5l7@zwrKUg#YOo<{XlW6DhCxdZ^alj@qL#od8j7e%XbPtW;k0C^*Yj-Wg*sIZ z*doC2iZVO-kHnp~L51Kz$jekg1#KwZ_FYo?4>|RjGQXou%72!SQ(gr{nrs4))u5cR zU1|h@H4V$kXirvvj7DWO*C0SzqcV!z+qX%{%6OkW92=6|sdJLDO7(0t60(Z_*e;06 zD%NqHj1A$Z&>n`YJU68rs~WZZ>NtCJ5Ys5n?M@L`(J+5&abGh)R0DdxmgneY9)?2b z*>xS=ee-JqfIEnmzQUgi56&z1ab;cZzZL<$g+3^iu*wJ!AtI*=l?wa z-|zo^&Gv%)gmo$FAP7pZTJS^1ZCy;y(Cpbi*N;9#dwU!?9e9& z%s7q6GnqDE^XAen#!|=AMRf%Zs;-98JCU4hILmL42v}MqVL$8k2nN3qS>iQF`_Qox zftOUo8Y8moREfi%akQQdZX@TMy zugGv7IK)U+aJ8Zlkvv@vf%V#KtHd5*B~en!lz!5yL=`~EvZ1(^v<0z{{?CmywFO7O zODhX$fve>ysUDSSVX&0DyBi8AO5PZD@QhRx(v5ReElYbuD{e%j8-PF24)TWgjP%38Miqz59p+T2@OV=)j)%+V4eRbXG+N#WvDssXqNDi)PbSx zYU@kF>hRDWX<~S3G&Xm9eE@W+PM&U6HNbbEIH=KbFwcIa=i8@lNw79bI!)8z`jI8HXO9hKl@c+_HupwQ$NDUNxHNon zV!DawZX5mfn_~@e(R;CiUia^dFSO9#6~8wzG&+B)=fsH={|2ftz2HO(7G0$C3= zPY(X{^vUAUe-617wjc{o*2P1o!KHVAe0(tmn@)chOv=GyJgo>!^>YBg$ zssQ4e=4;iG4+ z%)HZ;elGpp?AiU<=dT|h+nIedC(ZdmaO}9H`9f@z?D5lOGl`1qUwt=SU#9r0EqyK3 zmnT(&wk@wUZQoK9eSLjzD|^t?ftGIFlaf5qiX(IF1-uj{idtN;Js*x)a_@c(~~JO4YZ`TyVXPW=oa r4kl;zIjm|D5)1AKAMZ13N=avANH%u$;Fk1X$N&VMu6{1-oD!Mf9M?zKEQykPXeU+S_r0~mcYp!?5s(n`~IYaC{L$a}}$H%Tu*MMd*c)I$ztaD0e F0stnTFzo;U diff --git a/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-disabled-center.png b/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-disabled-center.png index 8289aed507394b9b1e004d760f64ad9efffcc098..39f3bc97f0e0073eed7a397783d9fe06dc5eb5fa 100644 GIT binary patch delta 85 zcmdnSSUf?+-^$a)F@z&Jxue@ZBjMNA*W%2V_y7MdIpbe*XZ`;Lcj^_c{r|7<&fbTU prEwwiIVNEq9sxZL3j>DKN=D(=j*AKmR*EtJfv2mV%Q~loCICIjA*uiX delta 153 zcmXTk#yCNxp0mIsvY3H^TNs2H8D`CqU|?WSNcITwWnjooVqhpSV_^95ih-fY9LV=( zV0f&`z+h;^z#zQln_RU%P_2!pi(^Q|t(5MKoDB{PM-F{`_eABDhW&SOac;U#W6(U^3sX9O`;5ZCH_thUaMjmfWXt$&t;ucLK6T6dJJy> delta 106 zcmX@i*vd3P#gntZBeIx*fm;}a85w5Hkzin8P)PO&@?~JiPGVpvF=Jr(@`{0>$sEY{ zW?*=%%D`Y~#K0iD=9^r#K2UA9r;B4q#jPb1b(+L@82C#3o%FX~jsZ$Ac)I$ztaD0e F0ss=V8kGP5 diff --git a/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-disabled-right.png b/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-disabled-right.png index 25dac55c3eccb48e7fbf5c95ca0b44105374e67d..5abd8ffef98ac0aed11bc809bbb4370312fce6a5 100644 GIT binary patch delta 176 zcmV;h08jsq0?YxBB!81hL_t&-(_@Z{PiWB6*0vPj7f^Wg=+PIZU%!4a00FzSjEp=J z6O$y%zyJRk7=W0Ok&*S^zkjSO|3Lx_ATbEd^8epI24n!yf+B#f;{ShiE&tH8kYOlc z0kT~BpHxF(8vg$M`lXiBprY<)+ws0s#=#WUE*W}+QJJ8 eQXu{f#J>O^Q)4=^A|~003)Z004A0008vr z004qF003)C00849001#E000xL_8xmL0001$NklFTCCGxP7fY6(<;D4Oy|rC;sBAa&KE^oMlo9|ecTMB0 zwOdgVAYqKDRJ9V40D#Gbs`%6!`3lMgSt42>Ge&<0v!3$b(Fw>ok0SCERYlG@J??#U t&h-Fr5|N|#z6~L)49PVB0vG|L*8m?=V>zmvv4FO#pwxAg%xa delta 127 zcmV-_0D%8>7r1Cxy5ETXG9c%il^STK)p;UMT^y37oUKm?+a&Ll4>>4{QBB=HyL hh4~FExO>|I3;;wg2+T+L9p?Z5002ovPDHLkV1nwLFgE}I diff --git a/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-highlighted-left.png b/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-highlighted-left.png index 19b884419bf390dec6245b68a37f404cbc945f7d..d9b8fa1bbb608548fa4326d4bf54499071cfdee0 100644 GIT binary patch delta 175 zcmV;g08sz<0m}i9B!7}gL_t&-m8Fb33c_Fz2It!>7J*+#qF@~esHLr7rK~n+jUC2EGWxXv~627O>=Yi2k=xx d2uMH<*asIYAw1#UCmsL*002ovPDHLkV1jz|NlX9$ delta 220 zcmV<203-j)0r&xsB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001* zNkls1Ai2;dV?4`layg8Ia7 z=?pMK+9&WYDQT^rrId&KSXz1SS1G0S(%OwuY5_6EA%t+@~FfcMQ@(KzG z*)cIO?PmcJ3?Kj$ha(tXRIR5h(LbQ7TdK?)vrX53>CK|9=)x f$3Gzc2E?BMmtQf+@58qc00000NkvXXu0mjfT0&H1 delta 214 zcmV;{04e{?0rCNmB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001# zNklt<8 delta 254 zcmV003)Z004A0008vr z004qF003)C00849001#E000xL_8xmL0001>NklQpJvfU?TjH8 zNMmcX@&-AI_sRt;H%SSf_fUmLNAg{b8lnBfVq%y;woYLX0`t_7-In>P1ED$ ze5wY+QErUsNm-UvQ5166?>5dkD_NFZ>$+Y8TOfQ40KO|&t!vkR#sB~S07*qoM6N<$ Ef*`?UUH||9 diff --git a/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-right.png b/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-right.png index e32647f97513ae8807aacf99e586fef24905891c..f85ee8b205fbb1063087e3c306e8ccdbef1789f5 100644 GIT binary patch delta 178 zcmV;j08Rgv0?q-DB!87jL_t&-m1B;JPx!B;tz9g@FJSlR(W944zkdB<00LfV85uh! zCMF}6fB*k8FaR+lBO}+pfB(2x{(}Sk+O=!Io g0t$i*`Ub?G0qnD7_FOz$yZ`_I07*qoM6N<$f;6X3vH$=8 delta 250 zcmV003)Z004A0008vr z004qF003)C00849001#E000xL_8xmL0001-Nkl*7Yu*QD z)yJ*99?P;kIRJYRNmW&yLkI^)at^=%Bmno<0PM46_FexTng9R*07*qoM6N<$g1kgr AX8-^I diff --git a/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-center.png b/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-center.png index 62097e54bf49899878078f42f8325d7010036c35..ef1bcd5116093e9e5e292a06bce21e1c74b33367 100644 GIT binary patch delta 83 zcmeC-D4d|;YvJkQ7{U>qoRpA|kf=vas^ nV(INZ%!0}yz+`njxgN@xNA_BkP5 literal 1036 zcmbVLJ#W)M7R(`BVFHzKPU3=4)d5TPefWKz=l$H@Sid_ryD%#V!ko2+ z8+@JO@BF11{=NPA^)X+rvs#O7(k|=U5fLgb?GRx3_7-Un+ueKoi7X4kbk}RPSgU?t zcc?Gfsg0EQAx8_s@=6lg&NgA7L$GJu$=)ug>@BwJd^>3EMWru~V)32B^}AfT9F*4lF@XLK4as zR8?I93Pezbij0&TQuVx|LkK31$kigZt2eMY(c&jV>@gPVvfS_YrG8$b(Uy!fO-nfx zCC4pt@m|2}Bp1Ys83QJ<6L}%?XaG`1yF+)GA#zX0A^2gveo7p~lSJ{9$%!4xNP@EO zr*Vy}W7Z&l+&I%ZZtjIdZjhMnMh>q>cQFI=+?_9!8gg&+2a(5%V((z;?D`~N7B)ow zM{+$^ho}q@QVUR3V5y9dhMDGogtKHH5HPE-Q*zP$8~p zs8*`N3~L23vjc}@x*pdZV{7KQSiKq%o6)FA=}y)G8$HTs+@m3=ZWck^cDx`xr{x(( zi%H}?A+8xwAB^&=duQnX8+TdFudZSZYx%N@HH5?o*8QKH$=n$^ZH~X1CA;Dsm~Ky7 zpC3+#hXj0LB0d@?2TRY=v9fTbnH+c8?RKyIV*lmOqwin8$TM$;!{OqU;jfcw_hkCs t(?_9%FE3nsb@A4ln=6CEkAiDWU6>c_tN6y@hoc|qd|I`2{BE`V{5MhiL;C;# diff --git a/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-disabled-center.png b/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-disabled-center.png index 6eacdb9b35c732ab5468088597e2cc8895ad48d0..57a7744dd01194ad2008e2808947ca52427484ba 100644 GIT binary patch delta 40 ucmeC=D43waVeaYT7{U>qJozxQz9_>z1BVrnk~hN{fWXt$&t;ucLK6V;)(ivy literal 1033 zcmbVLJ8aWH7&f#*s8Yqi(89vuimkEloWw6`N}7vlBvPt05*g#zm&R)CGxn9ZT@c+0 z>cGU#1Pcoz16@IEY#k6Y42Xe+q2Zjyr9;&LOZGkdf8X~%_f}W#O;25)5(HtozKolE zy};ku%a{1~_UD&}e7VMIZMH^xY~aL1sCcwXKs|8QNs~C<_M?wvK@cW-eyh#ejr*oc z1Ifv3q%?>)S`Zc%)5vi*2m@WR?uVB6^Zf@A_?{&`EH_{ys*=9Hyc3hPot2imv*8+^ zxOfLFq$Vc_2y;LhY=()MTH=V;H!5tN}KBc*^ev#6L5g7G7Awb<*KO>B>~_{kFcj76p_4+aBiP?TuAE+fM*G7d#4 zaEn5+9Wo~^gvngafJx%Ue#Cqlf{fAW(k*6*+|%O_f~e6rAr6yqqIk;W)QMyyK{*Jr zxJK3qYm$F%oN1l3wj&}pNkX?`m)D~=mxFok&KJrIxi{v6*ylxYHZgU#0ur)1wnY9% z@_f&PNQVe%C8#M-)e$lfG%&VRyHc@>Dpqoiv#@1VQw*b~+qhIi2-~`@D0WGMxMHB1 zT7@~b9wy8QU6SkiT(_*MSS#A_T&!7*iNk2zqI5IwfYm-_H0jd_RM*O&;kbU7owM>B zM~g}9KPH|X(*TU}Yx-yC+nQ#dj(e$GgE|k`Ruy}x1XXd2_5LSkGIvJKn&VWnb3%BbT?D?RLXI-RKVY;Qm5{Q3Q3X5!0mIDE19WO#J* u-O*D0B@D<*DedGI;j6|r{R`A=U&hB3W_C(zP diff --git a/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-disabled-left.png b/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-disabled-left.png index 6c3b5f643c95df5355f4fef67127c019e2540479..462fd8ead85603d79f4806b88b93b36986f4f984 100644 GIT binary patch delta 458 zcmV;*0X6>p3gZKiBYy#^NklN3 zWgc3=keFahTxkeyH0Mot8aAwXA3SuS1`&FbZ_(UydjBTpmds|erEnRM1F&P^dO_rXcJ>a`AGCl zN~T~9ZI%oi#~mIWGm4l@twYzlPG{-#?EEos6?(nqxM3s~ z*BX|gkfq=6?=cK>I**D|{r%TiWdoUz1#O|7FVW4ae-^3{7ytkO07*qoM6N<$g3qDW ArvLx| literal 1405 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3HGH8OdY;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl3=Ay{ z3=Pdq49txT%q$EIEe#DUU0mGE+#DU5Px?R(JoBXH0dq_dFl&e_CKxd= zFs}7yU#;snO&aGZ?!$vt(B0-MY}0bWl$!}f}#chvA6mE<- z^6c}^#?VbqzrTCAb5XkK+KQeX$_({uV(NBWY|b!mdx?4t{NUpV&!S{FQ!{T*oS;Ixl@ z)m5ECtTyMHwXe5^3MzAIEWNycC4`>!*vnusZ-h#cdQM2ef5{bS39@G|9)lk zG3N5}l8EcbO(N8Y}a+RGY%s-6eOT66hiBAqdy8}wFcv0kv?^IR~(i&tAI1XFKAIWD(_g3k(U6n5I{sipEYPkwMl-C!D=-PANKNVi5tR$vnT?|KWj#U_RsT96K8 z7-v6o@cD=5TYkSk(d+eCYkT7j7!}`6+%E?LdL$Bw^;!GG9yul)7>`wp>UNrw5av|rW-^>?_ W{gahlE=EuQ0000d(z|*+)&dDb zqnjEqfr+GX5_E}MGJ_*HHm4I31-6BuAutTEt?k9q-oN3rDh!IB{4lnO;$mEfm%T4Zo?b{aB! zsA{^9rkr(qex$QRqR1-7Rw|TQcHs`rBcnn(vVg}6&>~S*cEC$H+_V7M>1u}6!w)X> z!w}=t!*8oBh{bE7T}*C0PZ!l&ZH{`kL+6CEw?kP091wVDfr0{_8rFvg^zaHV4)&pA zISj3+2yQ*R>Qt$v05Wkr4XI>^)PblGNR7%+g;Jx@WI`B%B60+iqnH%c;0g>!5NPdz zfi>P)g%=X!nk^vdVV59yak<>@_sjeW8OK-4QJqc~;=nK|(2)A-Sb+*iSzl_HfuMa3 zp79C{$3h`S%FfjadKh@R8iL1bv8)rbzO_Vwl*t2>SB}aMxyKWVYem~96w?2>v7xrl zR_CSVg|v^WZKE+X!m$!{i-gMyd?{^j#2Y;O#A6L1o{o2g= zijmC2cI37EdrkQunlI2HU zJw%*picIgOE{)+$l9Vg<>HU(ey{b4xQd&lKA5;?6usvBD5ufo@wc)+i(>=tV$a6`{ zuz0e+J;-f3s3>`5@b9JA`L5ZQ4j3b6TW@qE0=`=rZFE`682e4*>}>zp878i>!A)bq z4gtS+ruLfZUh7-s()PS3A70%uqNtqsGv)H*3R#D{H{;@W14_%-FJB)^jw#7#&r<|< z9l7)lG~6T23%-#U_s>U$gZkjbxrd7r_MS=c&-;@`{h#_{%Z?52-7!#HJpR)hKVv*O zaN*qJozxQnkHV%9Cc|`wMCs+3JWJ!LJY*da}ql-4V9bA(TKWKX(WQg5XZhGR%@TJuf*+$ z)PaqSoj(8}1{Q=En2><3s1gE+fsus~shrcKbf`LD$-WQ2_kQ0`Hr8*?&s~|5Bx%0B ziW_2`5bwgwwD{iq`0P+DmwBzlH(8etoR~_M$2t_$1E)tD)bVy7exOT|G}-l=E#9)% zOqT_UlVOxJhy+`bmX_1VaknT39oqB5iu~)%I~n+1MZQE_;g)7{&0 z%bvV^3oNCk5C|xDKpJd^iJ4a9p{^WT&7itJ$QYvX0DHsr2 zWmMCvaLlcT33o!5j_vxw?ucug%QdSpbvTQgjBSrQV584COZqGV)y*QX9oG-Db5@?? zXfcibN7N%R3&1eHrhkTgVi@Ff+$+TzEQx@Lu91}j)a4P^`=6Yt!WlJdj#JGtz7idn zZBJTX98QLZhGJr3F&dY??ptE4N_A{C)5A`?-R`$vCefdR-#-toPG2L0co$}#-d}6a t!i%5xuUkK!zxqBk`Q`P|(b1iWsRhaVG>hNAeef-t&3bJezgTHM{tLn~K{EgV diff --git a/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-highlighted-left.png b/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-highlighted-left.png index f577b0ad9e12bdd89db1226cf364f25b4488bfe0..07336996b6f8579ee129666ed323d750bb328382 100644 GIT binary patch delta 461 zcmV;;0W$uK3+4lmBYy#{NklWu515t;Bhq+?uXgvN0f^z!ha^Tx3K8B4Mo^DDG-Uq z0K+o8rwBK^wC`acs4%$i{y=ynxuDbOLW>^HT`ZmeHpY!baHh3d?HOLYONB{@UazO! z6m=6%rhrQ%Cn83pu@YpMr$mYeHHg7rIEr!cw-lcSH3;s1o=OX!ypRDk2u@ST=0GL+ z2^X1c?kk&H1Ai6dcQ{E4nUA&g4N!wvt=1hp-6DE)gq}S`2Y&P3&Ah2@3xmAX7u<)bP>DVn6%Yjtd zDpz2H-vZKfyWKg5!%=m+sVkmOKbI?2_z#1BOK7H6t40OQX7i!b>AZ}v(GH&fYf%*6 zE7ff&G?W3&*6VdYMNy)(Dt^@sDSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl3=Ay{ z3=Pdq49txT%q$EIEe#DUU0mGE+#DU5Px?R(JoBXH0dq_dFl$WsdnKEJ zfpL$gi(^Q|t)5_8|3d*HPq(gL&wBAzSkmNQjq)N}0@)dzlb*28u;?gEES@m)|Ka`@ z4cx-b(s_PPJ_5oMI;0mabopS%!o-%7UsUzG@Z9d@-|x1wH8-ZmDYQg*SShdsFnTix z{uO1I*eJp}=lz>^$5cJ9Rn7~Soc492j~?|Fvp&pH!a z_Ssw6?PMw{nq~1gVa2bn)$C8c%-Eyx;X~8MnR0ybr@M?)4l{MLeh5sEc;*zzedHzg zj_-fOX9z6HXKyxKp`@Snv4;Y@Cqw_IO;?K$_`N!lr! zZ$9_h`RB&lGU<}(a~<0GRfRfJj&IsjUHv<}Z`z9)&x>|0ciWq{?|K&NajlS43AfuO zXWPA&=Ijey-THCHnWI+@EDTz?WuDj4Nlg#-@*Hwl=M|Llj&WAqGIra!ey@Ml*e%mI zwQ}1=Nio;L?#CPY1>)Se-Da`tq#Mm#o3wGq-5j&f+uQa|OI@qbZtRfmBa!-R{}1;D ZMurU;)AHU;PtyUFkDji6F6*2UngAIJ{)hko diff --git a/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-highlighted-right.png b/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-highlighted-right.png index 9a5ace967471922ce9b18dc1b355149d44aad0af..7fbbc9651908e8d0049c8fe9524bdd872a4c4174 100644 GIT binary patch delta 490 zcmVNz^Im6rDN*PtPnRRHi%dTbP~yZ-(b# z7=q&fQIRzyj&S6k0RV)E(HP8x>GO0b^f)>;e(7|%4slIE+NYF#Hu zc@Fe|C%u_Wrhi=`r{+N?9|nVApQPr~pa*#_^^U?GNoN*74_L>u&1Tyond~CyVI~y5 z@pwE1l3iQ^J@gL@oKi~1$Wm?@T9J^XdyB=gQ>j!eB)6Q0R`>@8&tzGi(ym6nP=sa# zdH%xd^{!&LLlX+c5;OwCA1v%}I5w))YFGVw7fWUM4P&(mFTU{uX zS6CNb(&@|-6~yb_zP@9--M*WI<_;Dl7 guTUq_-t3wA1RmGH|4e>6tpET307*qoM6N<$g3UzT%m4rY literal 1450 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3HGH8OdY;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl3=Ay{ z3=Pdq49txT%q$EIEe#DUU0mGE+#DUE>eMYG~-5Px?R(JoBXH0dq_dFl#8r&6&%< zz%@=;%MvvVyzDq{~})k#_yjrS%8*t-1SR z*|8mgg^d!z;tP@*0s;?YY>m)ZTCykkfCB$pU%&Ka#eVPSzMQGZ*>rk7hC%3(;LOvgTRJuAD1mJe5yBcdW*RXl|xEY^f+2TpwYdb!g> zp(BA6rS~*9Z0W3MSoqq?(8NY&#+Tpa%a)~=C1&k5=DsTSWr><+Tj@@-k3Y<&*0eqo z`L6r6XxBwCtK-KlU#w%ibDxPLNnpc-MJp!$Y(1(Qar@YONh{-CBOeAM-NQFrAL{=V zk9bj5opxU}vv1Rv$ddgMi!%AAm^w~WGkUP$=377C%g21CUb!WE%Yf%riKoN0g_$$X zG1N`YnDx(OFPm$ioMc<2S!~eGm|dT%_GSjFhH8Cc-eE5I^ylw=&tCHdiU`Xbk7a2- zcx%68(atpip;Me41@hQ#?S6ViZ9@O%nP=*B#H^X-b=|!kuHYGDH2bW|ghZJmk3SmE zKmYyPYlfApeqFlq^;Wx%eOHnltJ-d^_QTU{&M$9NW@i5@A$VVkuibgm&79I{soo0% zG{ieyT=rNxtoc62rQ*Tlmipa{7e16SyX0Ol{j7R`q3Onz=Xd^X*8`QFp00i_>zopr E0L4oR$^ZZW diff --git a/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-left.png b/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-left.png index fb3f8fb17b5381a68f383cd11eb31cea8c8e4495..0f527d68f196ce6efea08ea4bed96adca20c9e0b 100644 GIT binary patch delta 466 zcmV;@0WJQA3+n@rBYy$1Nklg<( zOc=zN7qafE zD2C%WE5~)iYx&-nFZG%v%f@1{*jd;Tfc(z$`NEA1&bDp)_89><2(QN^skHCr6##{) zYC2t{X*#qm=M4ZHGm&s4btsh;0O?39$4QQd+n0c4Spf(WbfJx2BQTIV>w1kqQIuml zj*SqaJpl~E%zrFvKE;>`dICgI9DUEsFF~X|0hFRB@8ik%jdaP2s8*}>`Y{+ho3q&` zS-3+&&>f^{nlTzrT1p~OJ6HpB$L;s~FO^E=5jw`fPF)>ZK3_JQop!t3r)sszk$LQc zRu71z*6a0R^?Kcaxm-u1v7#V~nVrBNL>_vh(NNp%c1w}-`}5&&B<<(2Nrd=JUDVG|gkQuRyY6DSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl3=Ay{ z3=Pdq49txT%q$EIEe#DUU0mGE+#DUgHl%X=v!;W?^Au z5Px?R(JoBXH0dq_dFl&@A`p9q_fPeq3ClElITEsi~%iPLBPKf_qg zHnU*z(St1Ns*Gw*zTVO2O`Sv*eo>3xRkOcZ?)#icN8UL%hXhEeG%_s^*m=~Wv1@^s zU476r;Z0f`jGT%p8+4?dq|*dTikD?x@0z63^zcM!EEBip0n~Yx_Kj-x#YMkU%UU-sJC)f#}4|$zLB<5ntuB1@4x??_r^W{ zP+j5pTJ-2jUbg0n%{Q++jMYotSfQ!Vb#v|ku0!4TvbJ8y+aCR>VxK^#i}4)IShd1Z%v($1LFz85LS!2T{ RKMzzidb;|#taD0e0szbs@;m?l diff --git a/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-right.png b/AppKit/Themes/Aristo/Resources/HUD/default-button-bezel-rounded-right.png index 0e36bf0d5bde0d4d75649cf2d78e9a7a8ac4da17..a5fe760d9b651e2b7f13364d86a0997825488491 100644 GIT binary patch delta 493 zcmVWt$fYa*z{w1`@?X%l^nf;K_W7YN)Jxe3~ZizI3#w2D?Og41ybAv2u=KN#*k|9j_N zF2OoM652ux>L;ygL)-*G$W%F=e_D|}jj@I3RNR;xuhkm7h~Lk`+(wp01a6Uh{`lT2|i>-XPkwc03INhCoDW-;=t z*Xy^*^2#bG5r2!tKQtQ6A&D<7gF;^_mFk$V@g-0q!p1%^a76F}lnBi;RfEB>M;0Sd zP-5EczPDPf0>RUR5`%X8B~8;V5@r^lof)t1NvG2tlu9KX!GD8xaP=#eWj&-;flwG) zp+-iF_$&$l&?N`xUtv<7Naja!pP>4p=M~PNy?nsZ`7W z&`}Tg=>Q(e`!?mCc^w;{xa%{U&y7aot|*FbY&6Qv4RwMyu#Zg=MNyn2Nt4*ri?pO! j;e-X5f10{cCuvdNOlz9|_|2?O00000NkvXXu0mjf1VZ5Z literal 1474 zcmbVMZA=qq9Ir1Srq)StzRYO79r%*X_FnpO?MW?dueX+QQcIm(a2ZE?ZBMwndOb=( zoeZ-mIyBD2gvc0vP&YPTM^Lni!w+*=W;*7!Fb(K1PB6r%6C=jCD^TYLnRq`=BVFAZ@ae1FU zhCpCUMXIoX<4*Z058x0)1~6!0O#n8+fDzFmIz5JA%K;QdU5`9>RLgE)+sUM@wGnGvVa0cWso zJ|@w8fXUcpWxL~8JNZg1?hqMT5=5UMRAxHB6A>gK77?O=qr?DEbb#g4a=JX@(GrZv z#+e`~3LG$&Uz~l3eGEt(uyhFqO<@+A@ z@ek%$Kg@Hj(<{}poJh-0x74F8#d>aFY4@E?RC3+sD-8%43WeWI9jPCDF!g*k(E?2C zzB2Umes1C5)@S&-cwt`7+ih)qTURc=ccH3odee_VPc>Zi=15 z9?ioiPmhHT|5Dr0(P0?5*Vvt!S$fbr_`wN(`>`rmI(GvZIr(#B(@ji$yUwIjJ$<

P;fhI dVfUg*Sqjsi`RLJ6S7G|E>UORoj@rxW{{^!f9-IIG diff --git a/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-center.png b/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-center.png index b565d8e6aaac9d3df1fe9f2ffab4f912ae2ec746..c715b1a1666cc23851835e90f07139fc59fd99be 100644 GIT binary patch delta 60 zcmZo-^q(MU#=^kBpx5gs0;I$|T^vI=WRpc~4`*0THe5Mpqav>d6NCJDmOzmwy?=lz O7(8A5T-G@yGywp!JrFPe delta 111 zcmeZoVw@nE$;QCI(9+U2A4o}-xJHx&=ckpFCl;kLIHu$$r7C#lCZ?wbr6#6S7M@JC z0V-1Qba4!+xRoR%Dr$Rp$)ZI?(>#NNKg)H`nRBOlnR~w+CliYVgZDA^RnvA#^a9m0 Nc)I$ztaD0e0s!U#C0GCe diff --git a/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-disabled-center.png b/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-disabled-center.png index 31da63ab79488fb0493e081ff7804c7a08a9b2a2..540f11cdc9cfa8ca89b8fa9be0744ec833bbedca 100644 GIT binary patch delta 59 zcmZo<^qU}Q%EG|Fpx5gs0;EJeT^vI=WRpdFlec_H_1Tn|W570vL6nv0+YEP!GN1wm MPgg&ebxsLQ0Hg2^WB>pF delta 110 zcmeZkWSk(G!N$PA(9+U2A4o}-xJHx&=ckpFCl;kLIHu$$r7C#lCZ?wbr6#6S7M@JC z0V-1Vba4!+xRoR(D(ahj?fUiUNtdo%sX4EruKs;)q^GB+q{0CPlcy~6l;fs*1C=v) My85}Sb4q9e0PA@s8UO$Q diff --git a/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-disabled-left.png b/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-disabled-left.png index e395935dfc0a78f888c38d7cba07ad353c2417fe..6df0c0f8e2a1d82b385a8bf9eb8f429b24e8316b 100644 GIT binary patch delta 90 zcmdnSm^(o-goS~D;lz^G03c=J>Eal|A)B1={OM=WQzE|U0$)S>%y^8xCkOOy`N~)9 tu_19o>DN*{ll7*F5qiQ&!h9l(3>RFvDz;Acy#dtE;OXk;vd$@?2>_F$AASG; delta 164 zcmd1Z#yCN;o{fQlA!)7eZ6GCC;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B;{))5S5Q;+9H>Bi8{1o&yQGVoSvOyQ+KczZU;{Frhv6Rf5IL4Gw&qLV*!sE_WCc z7IlRDw477SoZK@fXjjp>XM5#$Jc=ov7L=D(=NLNwnp~8D@vFW0^BI^Kngt{T`1696 Q04-tgboFyt=akR{06`l)U;qFB diff --git a/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-disabled-right.png b/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-disabled-right.png index d752a54ec809e468c65882636680fb8b8a6d5dfd..7927436ad02b2aa8daf1b6aefaaf508645f9799d 100644 GIT binary patch delta 90 zcmdnXm^(o-goS~D;lz^G03c=J>Eal|A)74VD}L(9=hWw^2H%Z&g8Ib1rh07PEZ*=n ttT$zasiw*I(ru-zT`krvH*}^mGF;{7s!0A5*#Xqg;OXk;vd$@?2>`FsApZaW delta 171 zcmV;c095~Ny#bIJe+B>m0Aj68+W-In8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?0AEQ&K~#9!49YPIfFKkGV0->xP_{WlcmM~_6?n>y5*WBOiS|OF#t**1 z7_;}@skL@7^C7+Wo7TDln1v84oO5?61u3P8h!$9DpPaL-CAG?byofQ5KcJN25W@Kh ZFaQ?;B^{Y3$(jHF002ovPDHLkV1h=qLTCU0 diff --git a/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-left.png b/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-left.png index 05ff0804eeef7537da01fde7f8611f7209b8fe36..bfdcbd430cb755566bdabc546379009510459af0 100644 GIT binary patch delta 91 zcmdnVm^VQ(l!bwT;lz^G03c=R>Eal|A)A~q{mE?2lE5!I%`beO=C*a8O*dYVw`HzW v*!+Nl3Adl#4x14^``m^*HcOObG?*BCj`JU3+RPpdG=Ra=)z4*}Q$iB}L+~Rz delta 167 zcmV;Y09gNSxdD(Fe+B>m0Aj68+W-In8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?09#2!K~#9!Vq|A$mjvPl78Vu@W@hF;jH05VGx_-VWP$iC8ynjX76AbP z2_U#HDJl7ii;L?g3y^aYDELQOTKYW?56@5L&d$zHw{G2%A^Q6DE6=xY-&g?x3;?+Y V7{*7#>Er+a002ovPDHLkV1ni?K;QrX diff --git a/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-right.png b/AppKit/Themes/Aristo/Resources/HUD/horizontal-track-right.png index db44880230ba5faa376f2d8d82d0c2e08fa2a097..c9fcfea1ba114d9197a7fbafc8c24fe0313e31ba 100644 GIT binary patch delta 91 zcmX@em^VQ(l!bwT;lz^G03c=R>Eal|A)72-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B;|6)5S5Q;ub?F!>a!*qN1W_|Ni~U^5@T=6F-0cY+%;a)ivei<$cS-!Xg1wY{a6e zsd@L?w{PsvpFjV^#Ka`SA}cHV{>zsy?BBnCX9ud#{L1wB@ngYf&z=dgv$KE7%F0^H a#KYh{P4(rf&_l$Co@1|l=W@7k zA8uwZ_0R`Dew_0==XcNd`S~6Azy7(UU^vLo#&DS72yq+b6@PzfdI-(D9M>OMTCpz0 zS104iln)tW%%e_qidKx3X0urxh{bQ_OBHB**o7}&_u$9=KC%#F9(AmvohW|GczF2M zsmPnv$6Ne1?0x$VJD)zoyZ5_LsW*@@7V@ZL-DQhK)AR$h#pA)n6?>g;!1m5ZDAjmb zpkAx=?ySl832t&gN(66FKpHT`&hq9Zh9p{$BR(ZoynJAy|5_)4Rtyl7>!1OFPTgd z9qXS5m!Dui`A8RSsgnywA)PBpU@#cKVzGeLY869s#qmP_<*UWs- zlg#8`Z9OkyYBvOz_XGLVPd2l>%qA@ay z3lbgcu}^+-I`cu>keLg|AoeyRB9Y!;KUx*4bsiaGiH=8k?fTGw{F&2jVL0t@`KRX> z<2X@M;C~=@9Mco5Pb+_0=$_-&&h+&eoNn;UE<_+4Uy}vuSl6S~>R6vza?fR^KgQ5= zqPzRt=)I}Q87>H1Fbc0CuVEpYKo(-mqmFf~{-pR1ZT7a{@lZqWMbp*68+WH1c9+lV z^v(h@#+YaNS*laD^mx%EYC6kahJFSeGR0cb+c8DsR^M})s)Mds7c#{vx%a%)k0{BA efH9f=t@RVSWU(sDmxd$&000082}=^sbKdoHOrt&KdYW9(G9oAuj>4FA3-Z!hcuS*8{=(z|e_*c09*#tlQXl+f)JKv4Sy1iT8;H|6kyonrp4lc#29L+WA5v<0hgtPzbwFfEI{N)0z)i(%*# zw)4C69&+Tg2%!D#7uWC1Ken_i%W^CljRN4g9)CN<5~IQ}40a3Kd*9u-z6rQN_^1t) zb-mh5pPHXTl0u5296RT_u2Zj8ov*+8?3bpl*8z*(D2{}80qWJNyIshaQ_1PLqN-7Z z=$*fA7tix>S}hF2;OPvS3dCM~>E+XpE-uf<;_*pE z31O-2w&(8ax=}3LxqIv9pSA!4XaX&U*8kY6NN*t`z=U5+p*LLuX#21O-wJ0Kd>nk> yeV|BxLHa+7j&Fg>1K#sdMf&Q8;OO7z;m5zs53en5*uDb*00001BCqU9gzo+BYy)}NklIJUx? zuJw9Z%W|4|X=wEv^g$sC{BSyFoDJUA z%lguXABS`P=lQ?S`#jJ4yg>l)-v}~yPD>#}f{{=p99fJkp?}DEDC;sQ4=K|SHi$%) zBXVRNvVo(V>a2%zzbue>FtUgTtwI#YW+VYgLNpu`xUS&7NFEm~Wgg74h(^{UDmF7B zhY+h5&W)^Z;r?hI?|ZehQb6t*p`12zQ)7(lPrLu_1}Nbhhy z1ie96U~}?Ou(^2V+TEu4*7hE_)8q1C$v@~ZHX4ndXx?uT=`C&Dpxq<*&D?LzwR`iY z&R(d88=X!c_na;$Ew_=eC*FTBAkwLy#`&+g_@2IkVJRww=C=D@(4ZFvhR5L9 z_yk4DMY_4*2<$pq<9Ay8&Us$@o1$c$;Y-02=iv8ETFzNXgho{CFMo{vq~4iqV;Ixj`0#H|?cK2POMvi=1V>ne%+Jm8;5 z$-A%S^P9#|&2^>ppD6G@G>VT^4DW}6V+_}${_P(s{g5y|O%Yx=4-=dE^BaK^($E)n R{dE8U002ovPDHLkV1m(?z5@UN literal 3822 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 diff --git a/AppKit/Themes/Aristo/Resources/HUD/knob.png b/AppKit/Themes/Aristo/Resources/HUD/knob.png index bad25cf31fa7e7e4272f5afc7f5565aeaaac5ff2..7a857a16266479c2311282bbfc3c1adac394a965 100755 GIT binary patch delta 761 zcmVTWzOoIIln=#KL0`)tPGNq;Gf({I|wKv|j6j#pP!fqzf^m9B=5G*3BV;jxIuUfT#= z{+j~ydOaA8MlhSrU^1B?QKu95oxWiV_x!~9?UW-Hu0RsXt6j^j-F|5A9SD(gIFAp` z%*^EVPMr~a}k=O>z{9Lb#*7MIU@S~}rMSAU4^{sFKS7Ev&-J-$JKPyI9}y>oWv zY5NY;SAW%Agr<(3-(Wx=433V&-Kiic)dHW6a&N|dr}UY#+Y%WWnNo1F{AG20Gwol_&L&CU7Ix1OjXGXqIbL#hxx(pzT5r1~()ti-XT{>1= z_NAz_0!XQ*b@Ve>@MfuZi_`;@NIW}BGm?emlCnC9`N~jmnD281+m#y8APG#>Y+WII rpNIcX6wR(_EQOJ>I{IJ!iB^qYV>88oj}4}100000NkvXXu0mjff%Sgf literal 3694 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 M07*qoM6N<$f*lJkfB*mh diff --git a/AppKit/Themes/Aristo/Resources/HUD/scroller-down-arrow-disabled.png b/AppKit/Themes/Aristo/Resources/HUD/scroller-down-arrow-disabled.png index b7edfb041d381634b1ab6d2cc0bc228f0f33880d..ea1ca4a9411d9b7342c9a9b57f02ef2ccaa7d37e 100644 GIT binary patch delta 313 zcmV-90mlA}1jz!B8Gi%-0055+Z{h#|0T4+4h}bf^Q($`W~YA9KM8g3P~9d;Rur3PiHR?#GHM0SQzHV&I~Is=yau% zRvBfLQ=WnhfR~P(a#~=p)8pKbO-#%bqDX9YY$ZMvcF9z;h<`wkMmwE#ncK(GB&M1r za}b_f=Cb0H`RHVBs3Id1yYx0nuk04(yF=#T<=ezp+`;mSJ~2eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00FK^L_t(|+T2phYQj(uo#e*YJep`Cl&)-TL^nd|Klvqofh)JJ+_`t@ z2lxv@)*@6SqUL4Kgj|spT8pc8;Bb>Wb7s!W9fgQ`j^lW$s(+?HqG?(T@RZdul2LAGsMkD`dmN=!JFii&DwJ1kdAlB9|`n7~Wn zXt&z|esnl>&VMRT4wN_^k9Tn#8%Sc+YPB9{DmVVnYPH@PjfMkfwA<~JQocY{?ypiN ztQv;l_`ctRIv0MD10z(no6Y8HysZ@CX+(8=Xtc>?`b-nUO%wSW<#UVh_KHz91aWF zR}Ds!R~r{L2WE;d;>vz0BgHg`Xr*AVk6$&=91eF=QIYvv(F9-%lw!RRv>Aw z%R(BJE29cEp;9`)DXZF7%0*?{chx!b;PUz2r`#du6-(hD zoc6Kr=p?K%Z{FJ1w_)}!jVy$P4-_=@^kG=>_+k$a^YHOF%Hc$4#JW#ARqhvmhnwD? zmeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00G8HL_t(|+T2pTYQj(yK1pt3G$l}r6+1|W1i`g0P&$;Z?dH~J5Ff(H z)y35ZaB6Yt;7jOGa1$K_F*P=S{myM7LZP)dwFf@#z2~0q{C|A+Dn!(xd7Qi1Nj-n_MVHg^K3FHMklO$0Y*ecnc5y!ErC<+6|M8R1D1dF`4gq&e7!q_GK=T2}TGmmrA8a%d%cptJUjf zv+?+KSTJ4J3#jITe1pn7gXHYUnIZEv0vd{2oBZ}WAATRTS}mH*X5Y6x9*=1&aG& z#iAUc-|rtT*mAj~PNzfL?Uvf@HsQA&CRk>J!GQ2xX*eAI{;9a_Znyg%f7nsv4*>=M YPOmNs1`h|lbN~PV07*qoM6N<$g8y3a6951J diff --git a/AppKit/Themes/Aristo/Resources/HUD/scroller-down-arrow.png b/AppKit/Themes/Aristo/Resources/HUD/scroller-down-arrow.png index 1cbaf2e264768154f77be5e8606ccc4974f2314f..265cf39c6abfd96282311b2b138b47033ebe5649 100644 GIT binary patch delta 335 zcmV-V0kHn71m6OX8Gi%-0055+Z{h#|0VYXAK~yM_&Ct6_#6T1V;D6@CXtHb8#mm-< zm&(po7O`3^Ereh#_y(e_;A4m)_zKzxK7$Wnv7HNoWRo%3%*7L3K{WO|hiT5oIrB3D zakM6Lsl3cnUha*llm;-K_Vt_&1mgJ(nNvopVqzxa1oLbex_@@Xn?g}qF%=aH3)q=) zpd0=wb7M=U%o)8CPfIPVmB!ai-E8eKcY0|`BN|D?T=1-Oo(al`78g#Lw=bUV&4@Q- z9I+Gz!uU2sdnrbjdFQr#8Qi_TNhNckVI4U?Txsp2WAVur7RlrAImuvz3&YmBzgzWw z@K>41{jRCt0!Rtmq!|Lgxr-wZs*~d!!@tXq(TC*KSGcKrJHj=VF~9*-eY8GKaE6Ef hk^_ghoW5VH=MV3{IZFlL|Nj60002ovPDHLkV1llFo+AJN delta 541 zcmV+&0^d&8Gi-<001Qgr)dBH02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00GTOL_t(|+T2pRP69y`y}LUsk6o5ml*9%L2sBjw0I@K(+8G-gzJxEJ zqNSpvmU2IUU%(Jb0tq1?%RW7K-6cj7#Zc)aCo^;Bo_o)n8Gnh09t^{%%Cc+$uR@3| zz_SI|ilR7(d&nct^MvcVDv$!wf`dU2$P6r{c+K#AUzQ|^fo&jRuK)r?ROA{V8AHXP z3n(!-2_!!va$!O&fsRR#Q>v<7h$xtZGzUouKyVUB9+UZ;XI8--LDm3W)3mFQtn0eA z*=&NS6W@L?8>~_WOOow(TN{ zoaOWRN6?h8GhDrFHk)^|+3b0_T(We&h6NQaH;;T!GnveJE|d zg+jrc&*v}e^?J*%!-j#B0jUO)u9?ILo6@I&`?rwW;(r9lr;l??iib=mj6X{LVi?|( z;57e=gGmgS_%pfDXi&S|=BGQvEX$%!r$czc?`2OW6Piw^{OhP*uT!;JrSW)7i^bx& zI}ZkfP!|^m+}&STPM~}+#&F#n~}kM XDxX8@m770-Dj7Uo{an^LB{Ts5EM*yP delta 122 zcmWIVWt<>c!p6YBpen!gCy%X8O-xS>N=;0uEIgTN z15~8%>EaktaVseyA>l#7m+#;Ipa1gjZ#CPp`v3nNJNMWBSK54G2S;hbqwDMAc^DYk Z7|K&MYQJ4;N&sqQ@O1TaS?83{1ONikF=YS% diff --git a/AppKit/Themes/Aristo/Resources/HUD/scroller-horizontal-knob-left.png b/AppKit/Themes/Aristo/Resources/HUD/scroller-horizontal-knob-left.png index 83079a4f1c29a083f4f0c2ddd72a68a0e5410266..119abbcc04e2a4918752612b73f2382cc50f9d6c 100644 GIT binary patch delta 221 zcmV<303!eI0`38j8Gi%-005XY{ks4F0JTX(K~xyiV`M-8Mj&KnU;>gL1O-eC%w|%e z)yzJOk_cfY23F@#jtRene=+=LfC&Qyol=;m{ATzAHxGna^wq^qf9LpzWDQ6yr*$V| z_HPv185md?c&twTQTvZ3%*McP@$?rf1DY@ggMi6{-|U#e{8qXL8Ppjt4N+}k%lMCJ zC7-gyJ|;c}GzS7rmki{d#K^>m>Kz6y20<|&u2v>KMyL?f^9l8j;i XFjF1DoH@%U00000NkvXXu0mjf%br@_ delta 351 zcmV-l0igcw0q+8k8Gi-<001&QH821G02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM009w6L_t(|+JurlZi7G&h4(KO5VXj$K-f}>C-8WQOn+48w2>ZpX4LNmW(1*;*KB;rqVlIL;+a zQ%xx~$|rgknwh4#Ll9l3O7ycrmk$KHjQ_&W`gNG|9?St$bzMJ%v6?*3e_-|Q!K_{J z>MF~!Grj`4PgtpYI_zLdDc@YzJu$}QBj+NHWhr7|?+z@-fWL?_nMv;b>|#vL+Z_&XvIas{gaFb(Ks@K` z=IrrJRv_&LBm;xt`1tO|RG})0A{!fR_OA90^;L6S6rG9sd}L=^PpY!NbtdZ@NBUA- zEYhj>4Rm$(pR}c~TGdo5C$vwnR447dESBo>*<6?^3pzykKKXgo&2eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00AXQL_t(|+KiDuO2t4B#%EvFAQq_wJNsNA1TPRs?Ex$-1ux(Uyn&6C z1Ok>4EbMaw%NU3nk^DE=_|0?oS-fX(;Dgzn-+nv0BZz39et%?%#uH$I5EisSeP_B?L`3n9q1ZC2j4?Rk(Gpsm_besC{6XH)b$9VT_%ns;atZ zn&y>%Vhh#~JHBIzmqk%LV7rFKbsPMb8qA?=9LJ}!EN{_kj_psVGd+I`FaRS()-a7m Rl#>7e002ovPDHLkV1iY9qo@D? diff --git a/AppKit/Themes/Aristo/Resources/HUD/scroller-horizontal-track-disabled.png b/AppKit/Themes/Aristo/Resources/HUD/scroller-horizontal-track-disabled.png index d4d2e0fc1e505520a8502f6c8a8914c35108e9e2..e75be59d99d7c53958c11128438c6a0a601dbb0b 100644 GIT binary patch delta 83 zcmbQum^MMumxY0Wp%2!-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^r^)5S5Q;+9SKPC*6*p2I!Px9%8n{C@Ao;jdA!a55LO!}6J?_k6oL)Y(G6KK-*z pX!dtTHy6(d@8T}M5=>xV+$b`0=To7*K!X@OUHx3vF*_wR0RY1aGCTkP diff --git a/AppKit/Themes/Aristo/Resources/HUD/scroller-left-arrow-disabled.png b/AppKit/Themes/Aristo/Resources/HUD/scroller-left-arrow-disabled.png index 3b5d68032074f286e28e77a37ec9003abb16a6b1..1313443c8fb6e318f4dd6a0777e0326fd3dd12e2 100644 GIT binary patch delta 331 zcmV-R0kr;>1lt0T8Gi%-00302$4~$O0U}96K~yNum6Ab915pfy|Kv?;sTP#F5)UAV zF7yI=g-UncpesF)ClF8J!nKR8ib_$epd;2gb>4ePTnI8V6sBgEDQTj$a+wWBK68Nt%C-RTXckku8~M!T99W@11%D7^*u}U|$(}#vE_a?I zDJhj5zOjY@_HkaQrSBYF;NT)x0gq$!u?0nO$Ta83F^L>mS;-RlYxU8?COVix3V`LGlP+`x?i9;?HV^YMX%)0Zq243fQ;2umj*m8a8+_xUH^Pj zXKZ9-M2qf_mPE3~c5C8;1Qs&DP=9IK*m=G6VlYy1vczkk(>?qe&R+-?jFtg_R{LP( dA&g@h`3I)nm%E-g;<*3-002ovPDHLkV1lX0l<5Ef delta 520 zcmV+j0{8vf0+s}j8Gi-<0091^58D6$02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00Fp3L_t(|+O$+#YQj(uojf#Au!u@Oq&v|5bOmt>7I6`RYv>XLx8X8e zgI}#JsnC3-Dk0`|y*(2W3ngg{nVfUy%$+DibWi^nx_@O^kJlhN9*^N>vw3wK z$5mBTD2j4q=tx{lE`;z_tJQN9MZTtKF^C0gLP(w^fDfr!t(K+bdcDrcLy*P*lcvPK z3gBeq`#$x0J+f`Pum<^$-EMbaav%bElG_7Fl?95x#Fa{gCX)$Gr&B7cb6xk7N!c1c zJwJ6_|3*;Eka)7K{MEQCWgofDxa(f%jJ^B z<1x)u$f3|Q@`JT`s0{Bi*l2;2lg;3i3Ox(S(Wq_tYD zO9hz6sMTt>ym#m%KnJ;wa+QBk7A6M%fH}OyacrX-?nwO-U;r;Uw(N!BwMqa0002ov KPDHLkU;%;xlE)J9U+xd0d90u;o;1!xlltwlRQMa0G;QB30dyFX(m?}b3(?Pl)z?#E>&K?naj z$;R32kPQdDuNRi$#3ylPJbt`ihJmJ1!ZS<(Jd%3;D)e>4lz$EZHUUHwXydWcDekgQ z9qEXL185{THsF4hoHeI);8!92-X(9=sy!r#>%I#|IX zh6okFj~k99OD*XbST&sB4M$i8YX)6_AxfZEPtU3W=-~!k?9>d6mL~*|$e@#-1_~VG zyk=;uyQkPRHAeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00GBIL_t(|+O(9rP6AO7hUY8`RK##=;0a^1jTBarhkTmp>Ma_>m*5bl}g10IK*{~K*>n~;y5N%Ri%7g*KYtf0Ji{j zp$PX07p8CknHcOi4h;qasgLJ*kB|wd#Q`9PgK#BC%8^zOh9NbZO_?Xj1~Eg#q|(GMUhHI;CE(_nmFg@qPaTzyR`*v7djA^B}2;-u?K~ zY&IiJ)2P$wP@~bH!{IsXDXMGvm)-XhR@yqUE)^Nal8>$dwwEkLloEv@*-{iT{{ zU>&O%z~ulvEE#HQrD^DxH?;AMQ`EtNpZcHN{2r_@uTs!DpXcI!9pD44yX<(z? r8nwqyg212_0f1WdxN>JY_SLFi(EpXvH5YaA00000NkvXXu0mjf(S4l9 delta 542 zcmV+(0^$AX0;~j(8Gi-<0091^58D6$02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00GWPL_t(|+O$;7N&;aNy)%x#AgQ==?N0Y?^$kLB5%>mz&(J&g2yK0U zY7s4jTtzEaWgsqurb*2v=f86%F^HK8vI~b#=iWK@-gD=Eihqb4%RidZXf%R-5c$5p zn$2dH^ZEQ>`o(s|0vaQmIsI@sr8q z95Fh`UqEUC4)X%Rw+T?0n5HSUT1}?YX=DuiH_PSHAo(`IhSC5Y;Hyj!1rjHdN$GaG z((CmkF3vEF2Y-;hQ5sgyQ`59hM0G$(n$4!P+ij^-Dm$_$Tdh`05L>Jqgq!Ve>d!8G zjWT>S61Q3{DVNKV&*w=ZQE}U1*67sXmqVZfp8W3t(Gm>?1L^nsvREv_;UX|rBKXrB zCWlSkSvisr4xzo|2Jc}54jyH2TAtHC~RPsnuTIL^>@ g-8+e_mH+?% diff --git a/AppKit/Themes/Aristo/Resources/HUD/scroller-right-arrow-disabled.png b/AppKit/Themes/Aristo/Resources/HUD/scroller-right-arrow-disabled.png index d33dce7365d6db2889243b9469824856dee2f5c9..2fff07057baf0ca58c558b522da026fce268fd55 100644 GIT binary patch delta 322 zcmV-I0logB1kwVK8Gi%-00302$4~$O0U1d|K~yLemBBkMMNt%h;eV~YPR`}J2nx9# zg@Qyd8odFShAEhUUMZ%bQAs2cK?Fe|ID4-}a~+T3#P=DS{EJP_goe5e`wOemqmyZN z5f#6VyVH$z9ixM3ql9`Q8m`WUTYU3I&2MJ!A)#8_GdC|&mw#i6d|Bg!K8f$lnvhUe zB59=i`{5#Ab~)pKTY4xXX4y4d6e4MPew(K?&jOnqaZJOAS#fuTaB=Zm3atqynP8h& zjv2A!B0`84@rX*CmQZoQ9_O@79gUC>2|>o|LhFfr4*AItK81utiqxNTT01=Qn-z7* zT2fOL8%*1h(>r?LFUwj|wp`^}dxKS{i#3&}Y`Gqv?QcXc=wceSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00G2FL_t(|+O$+lZo)te^<)B}1V{+2+7h*kNFY(ACn(2Yk2nZBuD~%^ za}`zyF2F~0fq=~PIZYN7Nk4*GvOJT-?|Gg*5k&M#|7d2dR)6!f)&{#$%4{~9w(t9G zAw=mK1j2RQHvkK)nM7h;fLUP}z8Hpab18u=m&=a;icqn_Uh~5!iU?%yl}hCvk+OWh z-;z;MmrsdU^E zM1@m4WF-!VLx1XYIy9TjXuVz&^5euaf_lB~aRm&X5+qHRhr_|}JkQS}7z_p!1Oaus zT`CrfG@s8?X}>rWFeCM8Mgp!9$<*m|ia06Da57>EIre(JxF^%;^n6UAA%lrTM**U^ z;oJyJ6YsOf58vZGEtg9gjYjbaGVcNFpNyzZWMch!Y<~qN%*s2#cDtqVcubSY`>VtHKuVEho3;+$L Wac{pt^9>jP0000ASgLPhA!=zO{vjl0cV;Z_#)#3G^6+t(Ifu~4zs9%L%v+|# z?EGAhI@1AH?n6jO2c!49)+$QF@9XM&94J6w3Vp0~Q*i{I1b>=a6iGOe8U|JpFI8d} z4`5&%Xm4<2A%%j?Td3_+;u*GagO@SL`=L5>BrwbQbNHsofeTo~F0OHjVf7_HQdSQ$ zN0DL-k^l{~&_Ev_xT*jbh{=pJkeE429S9ljaf;hC2NuATl*kC|+o{7V&T;WQI1m6b zHfOoz`DW^Hj7;arq{S;oFGZ+JnXS-43OxN(jhIOmYjGyFtmAt+y-T6gJeILZ>&1z6 lY&sx?cv+@HI?_M2^$P~HrG@-tF@XR8002ovPDHLkV1gXtm(2hG delta 541 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 XMYR0B>$Bz400000NkvXXu0mjfbAsHG diff --git a/AppKit/Themes/Aristo/Resources/HUD/scroller-up-arrow-highlighted.png b/AppKit/Themes/Aristo/Resources/HUD/scroller-up-arrow-highlighted.png index 7cab7d66e88c3245ceafc1dc6ffc468c24da1720..0a6fadd75ffbac8e178a95475f991001d3d298a0 100644 GIT binary patch delta 322 zcmV-I0loh61JVMJ8Gi%-0055+Z{h#|0U1d|K~yNuwa~jt17Q#a;4?FSqNs%tMZsPy zjHv`0TP>}`3qC-4-^t!LuoEi_D@71dEZtzT+1>v#W1$HFO{zGDfq}0X4&k(QsTd^v z>>!MZGetJ|NnFDT(l}Ne;TRj^cok<@$Hm_q(Z&jvu#H35Z-3sw9u`o?BHCCRvKt(C z*dJ-_A8MI44?m9&`F)w$9J;RITG$+6D?8WOBNbdBk*4?JX=ckEU>0zIeY{eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00ERqL_t(|+U%6SPQp+W#?Ng_G0Ff0QWAFJpmZW}VRmF{K;i>*=bhYr z12^OBq%ko@;%FP8w6wjg-zmjENTO(B93=VpE~n>rdU|dzf`5pPOw&9`l7vA;w_`ZKrEEe}r&r>H)K&)_T{ zYwjdOUWg*BJFE{f7(Xhw=&_LOAvu80;jA!MgzIu~=v)#HzLT|$Dsxs|J%)2)!~lz* zdyyt29}swo_Rp6v|7B#)_f{wn=Sp7Zn(`nO-2HwD%RC|FyRf)Lj^$boO>!r26>^^i Z7yu5j5~i_nxhwzx002ovPDHLkV1nSd)`I{5 diff --git a/AppKit/Themes/Aristo/Resources/HUD/scroller-up-arrow.png b/AppKit/Themes/Aristo/Resources/HUD/scroller-up-arrow.png index fd4fae03dadf8749e03156accb68f780de6eaec4..1fcec124cd2e444cdd79ac40437c4e3955131ff6 100644 GIT binary patch delta 331 zcmV-R0kr;v1lt0T8Gi%-0055+Z{h#|0U}96K~yNuwU9ka1TheX-Q~!_Bi2 zHTGxLFoup1YKL@~ChWot(iS_|!{Q)4jeRWO^w;@DYaC-vN`F?cE&u(a*RX*}_?W^8 z<{RzRiyIvDrS=c8j9NFH7k8cOD0FQ^t)R8aOMTj9Zx=83lyVMBW%m015G=R1F#e_8 z$L)C*s)!TL$dCm&zk3xw&KzM@Ns6W$a#!`do=UvLOI6AR6}Bj!{B_YL;Fx1CR+*Qp zTor<5iB8936GU=3<&;akVa-|zRD#Glc|%`Tx`4d+4I80~+_@ZVpDS%;!%;~k%Sx!4 dvr0QeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00E{+L_t(|+U%4)Pr`5z#;-3aQW+=+3j?czjf{qgO%_5z!eHV+SovP= zegik-Y(kmKt+DQ~ew5l)+ z-^EqQ^n=eIgyT3S*LA-KOOiy*W|M*-*bL_FHX03TwOUjzmp6lRxg53IZ7P*Y)a&&= zz55#M`#yC#9V!$GizcRNQoUYZ{H|ZZl}d%G)hcB&8PYV3ve_(kyIm?4i|c#&ci1n& z>S{s=ab;Q7rGIVPWB6M~%1)=#2DC5B^6rN)3ccZQcs3XeuHkDJg>!Z)t|QO$9!8_l zjbRvjx~?B0zx4tGeC+r8rzjdLiedwtK_0*W3fT{+(I%70h2uE4`F#Euxg7;xCKTXc z3}6Cys;cS~afZlpam|wmG!ih3fI;ryzJmn};~O}1SZ*kGQ0yVj5m_RUk8_?Pg8!XV zDz&X9@9vzHbPo`@&}V?f&;48`h5RRh7^A`Y5*9o8y~eyq8ROqC;V>zP r`7SITk#mWbOAC1tL_DTGDD|SGk*Fjxi4nzwn2ZtQzpp?e6Q{V%xw+R6c2DPqLs1-x`=p{2xu6;e z<>*0BHxEjs=eZCx8P&2%na(d`!7q<_ugY)1a~o!R3$WX^*G^%_HxeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM0093cU{L_^O)!PF-eloD2g7CaAy`nWXosSw(V0{malld7%?#v=R8NkA&z6f z1#Vo|y$1jieMSw#@KO}TBU=1GZi^7`Ybvrq1!;T15={e%7!lVcO8CPTEO0F7sV(S9 f!S;0P`4M0MQ)8bBSsMkK00000NkvXXu0mjf_vn|r diff --git a/AppKit/Themes/Aristo/Resources/HUD/scroller-vertical-knob-center.png b/AppKit/Themes/Aristo/Resources/HUD/scroller-vertical-knob-center.png index 3076a5c7f60a6e26dc3eec28e2bf1f685f054d49..09f55b75701a6a3169c2b5fba7319ac29be876dc 100644 GIT binary patch delta 64 zcmeBR44xoq#lpbAu==XaMj$2S>Eal|5uKd!faBM{zK8M>|5%ebI3N8_V_>-UluzkI SuV5}v6@#a%pUXO@geCx=z7>lA delta 117 zcmWIUV4NVC&&I&Oz%X8O-xS>N=;0uEIgTN z15~8t>EaktaVse$A>jcB7uTWvlfE_SOf?UqZ cfJ>Si0Jq#9=#^2nmjD0&07*qoM6N<$g51(#ng9R* delta 350 zcmV-k0ipi$0qz2j8Gi-<003(n1o;2}02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM009t5L_t(|+LV#IO2j}EhUa8vCxk^L2tgrMDJ(71h$+NaTKNDzg4RBV zh0kDTWn<$j*joflVG%Ioei{E6Mp;&i-5)-fNzQl9WJ2t3$baHk$UawKw&=B@HBlFH zAb_+u_MMh`%Lpb~6Gaq7dtn&fDy7cmc|IP;k#$}7)-=s)mSqoBRehqa0xhkGizG?T zJc6=CCXuG;mFv2X5O@2&H^rE4SXu8#DKAl% zm1X&^Whai~eOKT2pX<7o!!Z0x|DnS`7+8yTH0^u$dA wnF%3IjEo%Vi`gbR07*qoM6N<$g7^EH%K!iX diff --git a/AppKit/Themes/Aristo/Resources/HUD/scroller-vertical-track-disabled.png b/AppKit/Themes/Aristo/Resources/HUD/scroller-vertical-track-disabled.png index 6c4aec1e9957ac78fab39aba5a6486fbb6dd503c..3bf5fb3adfa874738c29e13235577b7346bed72f 100644 GIT binary patch delta 75 zcmbQv7&k%Em4$(UVf9s;jX+A()5S4_LpC|>!qdwSraYVWKvYyfP((;jKvaM^Nzsup eG0sqqlR&NxA`j*WqVf$`24D-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^r=)5S5Q;+D>--MkD6JkAGeZhP)5S4_LpC{~3<4Y6|~-IMvIehw`QF21zo`j+tG gpt8xIr}D8fq`I@!&G@uuB~S~4r>mdKI;Vst00bEv0ssI2 delta 136 zcmYe8#W+E-o{fQlf$`24D-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^r!)5S5Q;ug=Tjl2vB9ISyXonbr=!`|69cR32x7gnAXRhpG%Hshvi%HpM~*sb<_ nSa`&JrsfJam*&6R1`Ml2MOI9G-@gWE4uhwwpUXNYri3N{JMJ)M diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-center.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-center.png index 455b25deceee2c6fce8de267cb18c212ab91dde1..a32abade3ac862c29af9a96d601021dcfd0faffb 100644 GIT binary patch delta 70 zcmeBSjGQ3pz{0@5F!5-7AdphAeg0E-V{2pMQ+po8&4#Roq4)Are%f<0 YoJ$v}63ja93{=bD>FVdQ&MBb@03nbUSO5S3 delta 121 zcma#-VVodY%*MdLV0~u#Eg&UX;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B=8S)5S5Q;#QJ@vGMQoUtV9=XH#QSNci>tzr9hTFVB9VJFVdQ&MBb@02^l(w*UYD delta 121 zcma#-VVodY%*MdLV0~u#Eg&UX;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B=8S)5S5Q;#QK8vGMKmUtV9=XH#QSNci>tzr9hTFVB9VJNpP-^G=IP=X!XcZSl8|uYyobM1bP0l+XkK D#Oe~P delta 93 zcmeaTnV=FOS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALC({~F{I*F xQbIz)jq@xj5-%JLm<^Rb|NsAAo|#30A$vE=#iOak+kq+>JYD@<);T3K0RSVHA&CG0 diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-disabled-left.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-disabled-left.png index cca119c66ccc89bd2c470e888ba4d1dd71bd8839..36ea26ecc18014ee4c84eefd3f7dd8c2fdea7d6c 100644 GIT binary patch delta 129 zcmV-{0Dk}E0h0lc8F~Z&004LFlobE~09r{zK~xCWV_}e1$rI3F;$mSkDg+)~6a7$`BB<>&vOjO;*$!rhM-xpbL0S=L<)=D2_U j4+o3h&;KVFxEPoLecB>ZIxP8L00000NkvXXu0mjf&Sy6| delta 211 zcmV;^04)EL0ptOY8Gi-<007eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004$bL_t(|+G1p2V31Z(QOOe!5YS;_V&Y-}5@vjSeENU?{$>C3=MMwZ zzkmPu|NsBb4#W%~zyczGf($SK7J$iO6<}gO1BA6uLx2oxsZ8NgCKeW!pFn}1Fac&I zB_*!UpFax$C4?9m8Ce-FUAn}ss;X)S6o>#SNMMBOX9Hp`kPd(V0{{?EN{cPZ69)hQ N002ovPDHLkV1jPT%004LFlobE~09i>yK~xA^V=>$R@7sqfcP6p?VqoOr(`Pbc zVPN>rz`*{Gp9M&Pm<(VB0}6uyLxdy-16fiiYX1LZ`3V&H_x;;tg}W^G7qa|Ne75!? i%m2*`e;K|p{sI6$#VbnO{)#jJ0000eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004zaL_t(|+F~>_Gu!{~-@k7kK76=x=gyr;EWdvJVqj!sjgD7^ON`4k72PVh>7k~i_0VW1CKv)Yk1jw+K8cQyPn*o&g$-=_&6RZLl zbl<;y`*vADLE$b)G65(Pp{lBCcj?k4c1EBIVW8k&ApQo#zW@RZ01rf6pdP7*o&W#< M07*qoM6N<$f|7+)GXMYp diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-divider.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-divider.png index 6811fc89a0c6c7031ee5e687eb631fa11809bf68..c56eb19d2a676777468c7efd6472de48955281bb 100644 GIT binary patch delta 48 zcmb>NpP-^G=IP=X!XcZSl92G@yodjy#*hF1{|{nlvX-2+TR33?0}yz+`njxgN@xNA D$uAOc delta 93 zcmeaTnV=FOS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALC({~F{I*F xQc^;~kMk@l5-%JLm<^Q=|NsAgDFYJ^L&s$n_e+m-IDje{JYD@<);T3K0RSacAuj*` diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-highlighted-center.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-highlighted-center.png index ac04df7bb26370814526466400f266e65216c10c..2110c4d39f3305999e534f98646b0de81726ee46 100644 GIT binary patch delta 56 zcmbQwSUN$4)5g=qF@z&JxocvOvMT!=Ry7HU1$Tsx_n9@Nq%$%k8@qaNOZqQl00K`} KKbLh*2~7ak91uGI delta 98 zcmXS&&p1IvPqM@{q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1B0Wdi(^Q| zt)z~Ly2@I|>r*=a^Y94heV%;0UsAGRQxF3q8$)8H%bdr_LDE3g44$rjF6*2UngFPL BA-Mnm diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png index 06105ca177dc41a5720ceaeb4f201bcb1ce3731f..03a871370d52f43e640f81e13652d43aae380149 100644 GIT binary patch delta 56 zcmbQwSUN$4)5g=qF@z&JxocvOvMT!=Ry7HU1$Tsx_vx{m%wuD4=W%ts_a)^W0}yz+ L`njxgN@xNA?hO&_ delta 98 zcmXS&&p1IvPqM@{q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1B0Wdi(^Q| zt)#w*y2@I|>r*=a^Y94heV%;0Uvg&SrhY~y9tO9auG+EtmrVq!X7F_Nb6Mw<&;$U% CC?eVb diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png index 513282884fe4d8ebf3ca62d78dc20dde38f4995d..17acca69e77be11c6befdea0043ef9984daca7c4 100644 GIT binary patch delta 48 zcmb>NpP-^G=IP=X!XcZSl8|uYyobM1bP0l+XkK D#Oe~P delta 93 zcmeaTnV=FOS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALC({~F{I*F xQc^;~jq@xj5-%JLm<^Rb|NsAAo|#30A!jwq?gY9)L6q18QakB55=OKmqJIUcjfo+$Z2o z@u_0|cl0y(>8XDa4XWDT$FX<7fmvPG>#ploDHR(LiL`CI%py6TRrLzo#N7p$0|g)t XtVf`jYnXNaTU+>bf9ViQvkhdPKFcp-UtF9`y` zaTrdQUElAmwF@%F#BJ9dbl`H%K+Nm`(G_N>K{fHSc@feQEKbr8Zx(4SEPpTkO#Jkz ze6iFJ(R43ms-}ur2w^>r1Bkx^1Q-CNA!&s;ChKbe0000NpP-^G=IP=X!XcZSl92G@yodjy#*hF1{|{nlvX-2+TR33?0}yz+`njxgN@xNA D$uAOc delta 93 zcmeaTnV=FOS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALC({~F{I*F xQc^;~kMk@l5-%JLm<^Q=|NsAgDFYJ^L&s$n_e+m-IDje{JYD@<);T3K0RSacAuj*` diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-highlighted-left.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-highlighted-left.png index 56ac58d65093432b740cd4e6cdd5a552836f5513..bce037b1df34641e6074c7a10e35f5bec43e52af 100644 GIT binary patch delta 173 zcmV;e08;<-0m%W7B!7@eL_t&-)1{6v3c^qj1!un-BOg*&1O#IsMJ`}#wDJZXMX>ga zIm{P=*|iaiScqD_ff=3v$FAF-H+8+svaHY$!ggI%2Oti^fSOrEB#vePD1bf33-}b6 z`vklxK2^;Bj(!F|J@qf5K~-<}aZC<4Fl(BoOevLlzF3LKoF=~Smu=ggRP_Q}#oYxc bfCz*KQ0P$E$R~|P00000NkvXXu0mjfVEjm> delta 216 zcmV;}04M*+0rUZoB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001% zNklBf(-fw#Ge7|vt{;NJX^c~0000kk9V zKau}j{}~tJL%lH4^7`cE9g^M2#aoI5Ou&g^6%zc0V kA1)TX@BgeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004wZL_t(|+G1p2U{C>q$pQib)=W%HyevS%gO88T?(g5fTz~%jVPN|A z@1My3|Npswm;nS>Km<^b0S3SVFj=euOblp%uoh|vkYOz~TuREs!ou<$DDVv?z^tUC z#QXX4XGx%h1S2CO8^fhbmpD~bRfB;7Wk3ZDj8Od?K+Fd+6Cl6w diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-pushed-center.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-pushed-center.png index aa78a13bc309671ecca6247a88c69901ae874dee..3c886fdfb577d81d46e1560c1e89dafd1768ba7a 100644 GIT binary patch delta 73 zcmbQl7&AfAnT3IYVdByFKp>^;>Eal|5uF_H`}~*Ljhz!4I~je97HyiyYM6R3=b3m9 c&;O+iiz->-kJ(Ir2UO1B>FVdQ&MBb@0HRSEn*aa+ delta 127 zcma!<#5h5+l8u3Z!TQYfTR=*(#5JNMI6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZZ8 z4N#GZr;B4q#jT{E;Naiqzx@85&!*<)=EkPRrqHlKfMu41nd*^;>Eal|5uF_H`}~*Ljhz!4I~je97HyiyYM6R3=b3m9 c&;O+iiz->-kJ(Ir2UO1B>FVdQ&MBb@0HO#Qng9R* delta 126 zcma!<$T&f=f{lTJ!TQYfTR=*(#5JNMI6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZZ8 z4N#G>r;B4q#jT`(;Naiq7pz$EV}9qvi4z+;895YmSQ^#Zd^zi63k;u$>&F=w{rmqv co=f2XLzy?nU$;$uRY2_wp00i_>zopr0Q9FVd;kCd diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png index c81b5aba0efb86c25a72838fca38e4ec8462fa34..3db0e7ebd3464a665ad020f1a46ec6e0dfd77437 100644 GIT binary patch delta 128 zcmV-`0Du4D0g?fb8F>T%004LFlobE~09i>yK~xCWV_|TSF6Opo;ALSl;;{R}^`C*| z9~T1`0|O%i3j@P{1`uEY@o+L2$dY2D#AKH5|GzN--N+(;^TQzl8zvr>^#_BQukHWC i#iIM+)^3KQ3`_u^4HNz`J2S!n0000eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004wZL_t(|+G1p2U~rL^mM-Sz=C%g1d0Cj4n2b0$IPCuX`NQ@9|9=Li zfB*h*0cAj#fsv7sfeFL_$-n>$Oon&?CI&P>6D`ybAjhRFEJ`fjfdTXlBnZOHii(P& z-@bhlWoKuX01B`%T)K2gP*qhm7^t!gsH1@qs2pSfFEpT;00ImEUuhnEujZgX00000 LNkvXXu0mjft#4Ca diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png index 6eb94808d759de6096e563a9b0f3d19c506854b2..83af4b04816264c68fc7b680d2fb031905e74bf5 100644 GIT binary patch delta 122 zcmV-=0EPeJ0gM5V8FK^x004LFlobE~08>dsK~xBtV^RCh@cHY}r@bt{85nsv?3nhm zFfsrE*FP>65d9yBAtKlr3}i_W!yusj-#3=;KsEoqd^jS1ljTAq%QwZlYY(#gpT+Qx c;Tywe0KUx{nU;k9RR91007*qoM6N<$f)T7Va{vGU delta 209 zcmV;?051QG0pbCW8Gi-<007eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004wZL_t(|+G12wQ~S@r!0`F&*RMyPK7HED^!xX3hChG)@N#f)*fB9N z88I<3GBQ8`*S~-NxR_wP|NsAkX%-|EL<%r5paGg_p@slCE=mOnfG{wCzOk^ddT%004LFlobE~09i>yK~xCWV_{H{p3H5{z{|qq!D07@>pug_ zKM@8l1_nk376yj@3?RS);^Aa4kR`=PiODSA|9@iwx{*cU;)g>5HcUJ$>kbBUU)%qO ii$(AI|E&ys3@iY*niG(9I5>d-0000eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004zaL_t(|+G1p2U{H~kmY&Sb&20^2^Rh58F?n!saM=C%^M~vI|Njh3 z|Ni|G0m^UzF#{tbBLfqN0g{0M7MKk20!$2OfF@d~AwZ5xSxZ=0z5@g38%Pj@nU$23 zc)x!AD#^~yE&&u^W4Ltb5~r%FYA{e`8Bj+9BQ!iYfS3z>% diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-pushed-right.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-pushed-right.png index 94986442203d3c810658cebe0eda750c88c5d043..f1ce1d872e6366aea6a8e8f85cb00dbc483c727f 100644 GIT binary patch delta 122 zcmV-=0EPeK0gM5V8FK^x004LFlobE~08>dsK~xBtV^RCh@cHY}r@1V@85nsv?3g@Q z7#Vz@beSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004zaL_t(|+G12wQ~S@r!0`F&*RMyPK7E?Y^85F121Z6kUJecpJ0>P3 z4<;ao0SdVO{re}v1mpex{~t`VAgLfyfQbPO&_oM01junINJ{{OfdTZ5g@xri*bHFM zefjX=!yyF)g^M8d4M3T1ii(PN*REZ=jS;9+3Mlvoh(7`G4}bsz0KB*?do@Y~g8%>k M07*qoM6N<$g3_r}z5oCK diff --git a/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-right.png b/AppKit/Themes/Aristo/Resources/HUD/segmented-control-bezel-right.png index 12e90829c3069bbf7b3ba9184977d0e60188cb62..ea5d72c80a48d601e173b5c9a4b6642fba7b732b 100644 GIT binary patch delta 127 zcmV-_0D%AF0g(Za8F&N$004LFlobE~09Z*xK~xA^V=?>x@AHSFcXC;NF);G-*)e&r zFfjaQVBq>E!UCi~Oa?H60foVUAwm*^fh;K$HUGb{deSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004zaL_t(|+F~&?GyDJV-@nfvK72TO=gys6mS4YqF)%VR^78TV*)cIO zd9W}5!TYV#V_{+W4pspS zx-Z|peLJF{pl}f+*#ML&Q&m+BzI5plCnHdW6j1OF5Pt&V9{>Rc0BA^F3i>`KmjD0& M07*qoM6N<$f1LBu=4~o3qmDY}Wd}#wL9xs(npu`z&2h74D~hg0b|<>9Y*{?LKR6!_ zGvbap2X=)YzMS`Y{=aw5dpw>q-9+R+!T)a|>ZiM+hoYCFkAEUm(O(e;j5)>}HPq4* zXnvpz=&1>QSZ&@q)oRO0wdcD$nFX$!xkc`;z?fsqQ9~^~^peq~g=n9uH=j5rHgQE( zVe!MV$|`C2^M*WWeJ-spUdcb7J_|7B7<1H68xv<;NiP{>b>#ZDvk*Fe(c&=~xxY78 zovD|HEl=g``+pDe;7O}oyLC^R{<IcG_Kpw#WU} zZ?-J77r5RvHhbmSt2fec{g#})+8hwnw!VBV^pZgqnPlS#WFb9iSh;aaq`jb|&3pT< zG1r=EbqO-aB9m+!zSoTJ zmT*xG+?(NOuD|S&Qx`o_bD=RPkVPihIB@B=$ahP^qBd?bS5()^>B~)0UEdH?$RryF zF8vni&qg1`;C&g6ma4NCgdD1_GZY-SaN^c4q_1K`e5(DO zyYi%z9j`SM9Jp}e)-R;LVq`*UR@)z{$bGcNP;lVFiCe#rFvaM&<6ufovSO zaN_p6#j|I#=FYRlrDRFA(`^W3es(f57kblvdAPGM}MbYClo`pQ@LQm)ENb1BTp@jGPV4+cJs3h z+hYY7bBsA^sHKNqGW0K4U3%qI4AMd;E9NK`DwZgg0b`CaM-8>~=wCU5`Vy`fpfVV$ z7_QxvMge1vF-MK>OSlnVON0dQwM0l~zn1t0ZaJ`PkWLq>00000NkvXXu0mjfwOty& delta 1479 zcmV;&1vvW62-pjdBYyx1a7bBm000XU000XU0RWnu7ytkTib+I4R9FekS8YsNWfVT8 zEp4HN3XJht1qOp;2#k;|Ta;~CoF-ys%#!Vg#vd+56CE*rWziodW-)4XI%8t=m;P`@ zjbvlaB5q?DWVo?`82J!}t9*9ltKaSIhv#{BZ!H4{GMelpPk-)v-`;zkr{_KAyzf;- zqfxpWEa`3#0S%g!3Q@7~vjD{7J+%zw&qVk>EF;8M+;hNJ7IM{c&&dKnre)}!f9ciD z7E4is(P(@ysv<+OR$I>V6qKZXRg`>gxBI-!HgfXQ58l1P(*cIWh%6`QwnA8hBEay* zTSxZg7FrHxXMbhhXDP_1yqs)OtJRcYPG=sXnYnoihr={JX(!w07}*`ue@%>yzVr5* zuYbco`xp|7L6nxXC56OALI1@5CoAfA?)sv%w4|zhLkXG9X*4_UqIs8>B9RDr{rJ;F zDS90xB_&b1DTVGyH_<#lGcYtv1A{|7ZD-Fs^ZoI!`hWN_KV!-0ED|D%!1^0reEIMr zWfc{lZ>gOY8v#Z-V*w=UPa^PH}eGCk|G3GU9w(pLEA=RCDOnF zE`M+`ga$>3*i%%bO2O#_xsgZ%2e|lxb|LaKUWi(h97lsQIgvVWHV|!rNw6#nga~3O z6!b|_$b`@((nL>Tu6Pb5B3O&C+vyqe2mIxFJ*p~k#vBALWS13y(gz)6tA3ax&XJlj^O4cUx?b@5m z=^}8j=Q+kAAt-Ge58bFIfNU%X&t0TT>FJ{Aog(|>|9tC&!!&{nYztYcUT?=9ZE=drzqvUBn*sVS+H ztiwLFyafXR@_0RDpB%SYPc(h>_w{S|;Ic7pFm8W%hI{$61~E9wWiav>1>1J+e)#_C z+P!IM<_x_-F9cyv(#p+Gk|eQ*K!D%pC#Q36=C|&yrjE0%Kk@scjB&;cLw{6?k{f(4 zY*9ooD~mxQqu1l0o5fhqSXWV5Q&mz{UYnJjvyt~CEiYLP&l4}fB<~@T!#+7MJlNmW z*L$^xr}6KRn8*n%2dZRcA6Wcg%vcb_px+}psAaPZh)ZQasFG*s&LF~x3#2Gdz{Nlm z{{JT@zZA2$=s*w>1fl?p(LnV?3*aj%0H1+q+aLxozVnZ8b`mpL5DqHHpLoOzL5Ge9 hQbF{In4|v~`~%C<&v6TvTp9oX002ovPDHLkV1oE<%FF-& diff --git a/AppKit/Themes/Aristo/Resources/HUD/slider-circular-disabled-bezel.png b/AppKit/Themes/Aristo/Resources/HUD/slider-circular-disabled-bezel.png index 9c54fa23eadff6521654cbd1f3270ad61a08b873..20ddecc583d197c6a5ebb50aa9c90060f0ccb0e2 100644 GIT binary patch delta 1013 zcmV@;h_zPL9*Y#TR544n~ z*u)nx`e{-OjDLm@ZTc7s$9$9DL777?9(XM_JBt;OP@t3@cD(;+85s|W>DeD*czi=p%#2W@I?Gou{W7EqwP9@MkC<1*$h6ryMuwcU07m}ELCnwG0 z>k|InK|=)t7EFC1ajaXhMcnjubc?Q@enSNV7EIXMLYSg0PikJ}dpiT7GuUUSV8DV2 zTU!W^(|@*VyTj7%4+>v*uc3kg3npxBAqi4R&tJc_wfTcGu*XorfCUq_wh(Tb9aXO! zHm0qu%UHpH1rv5uA+{R3#qIM8Pe-?*f&nYK5Orx3YlX?_@eydKV8DV2JL+b=msgl= zce+JOd#9m-0ShMVsK@tg=Ec*M_9o%-b{Hxc=YO*V+niTx_iN4?@%v#d+kEp0F@p{Nl8~M73DPzE>Yj?jfwEW6K@!>U@p2blG=Uz#OcfuYn6?wu)92~5*~Qr ziGR0tW3=d2QEIc)-ec*fE)<$=R=KSbbx!wRiCjGJ!V_;8u$HxX=FuW?S8{Sjj!99< zE9=6KU2Rj#vP3L7}K8=|A1Yo zVNr)0VTrh~!CW>sSh}(agYsh(N;#B6dpP)fU(V@T3$(bMWPeZc^!$3y^ZoRBpZCYH zY;0_>=fQ;M0RjwSp&%AAy)BOT18|%h_mNt-raMnHWxSx2Tk^Hj0Ss~Rqm!qr0s()} zS>miCU8_~HSCTMGDQok@l#*BE@o;!7^uxJtr|Gt8K;;A45k!Y5qG00ZUw++OQ(b%X zh01dGzM2~5^MCGTq9Cw6ZZ|zM(^J3`R?pDVR|n`o&&QL2#V19@yS!c)>qr#J9_A#pr{&? z6N!A983}g_Q$m$?ePUBo~v#6)aT7j>;%5d8rP(|+Vg=Q}UAv`7nag(aygb}Rnh_K1O4 zh>6(HATP><$;=3bsQAfer(1$SzZaFDY3fr$Jb_XfVj?y)pha%XL7NkrP6jBu|3!a? zjYdFHDXb{zoq{c?CK+NwgI*dTS4o=}Ze~Wr?tc$HtoKxT%TyZmm=jEKiVY2D5lDJw zH%605gQtPy}wLAQ`b(98h=osc$Cqb!*|NvzR8=|wH^6uUE{PJa*s zu@Donp+TOm4?0iR2;a@p-e8^XAuG#6g9BlrwH!Xy`TCyn3Tw&#?4}j!j)lc&>S}-A z_2FxOh7nuW$ojn4cJoY)9pq)zb#+y5AAi5YiD{@>`)s6M&Y$Q4s4n;=)zBxFv diff --git a/AppKit/Themes/Aristo/Resources/HUD/slider-circular-disabled-knob.png b/AppKit/Themes/Aristo/Resources/HUD/slider-circular-disabled-knob.png index 5c0d8bd11bb9c3a7e7ef5b83575ace072bd18e0d..375fa290545d46ec6aaf16b502172f82040653a8 100644 GIT binary patch delta 100 zcmX@kSUy2Aj)j4NK|SqV9+0y0ba4#fkWHTOWO9GVx~ctBo+Jl!Z_Oyk*pLz6pRi%Y zr(BM#54juGq!x7W=5ge5K6J<0r04hjFZ08L`>boFyt=akR{ E0Hqlx(f|Me delta 181 zcmV;m080ON#{rNTe+B>m0F7@ZmDk5)xA8;NW2R z@#Ba3`}gnJS%3nvqN1Vr4AjoRFU-u$0HQ&BCZLv0Ky&W= j`}dClL<9Nj0RjvFfJP?8Tdja@00000NkvXXu0mjf-MmrR diff --git a/AppKit/Themes/Aristo/Resources/HUD/slider-circular-knob.png b/AppKit/Themes/Aristo/Resources/HUD/slider-circular-knob.png index 050ffefe6e0a36cac2cc477199a63298a8a8226d..3f3ce52e176db75cc05234a3a081aef8c04c84a8 100644 GIT binary patch delta 101 zcmX@kSTR8|o`r#dK|SqV9+0y4ba4#fkWHR6W!n7}e}d~4FEJ5*U*l;XY36CaZ>f*d zv_(8lJPtW0j}*@7ZJgQI+xXbxa{rWg>wkuSZhchdWANkP7h<2jbUn~022WQ%mvv4F FO#qZYCi4IQ delta 181 zcmV;m080OO#{rNTe+B>m0F7@ZItpB=w`{mNqD<>j3(BqZd@!NI}s zz{tpG$pln!9H^avFPWK{0YroNOh7FuKy!Bd j`}dClL<9M8009O7wSXp!kHm-=00000NkvXXu0mjfhXqek diff --git a/AppKit/Themes/Aristo/Resources/HUD/vertical-track-bottom.png b/AppKit/Themes/Aristo/Resources/HUD/vertical-track-bottom.png index bdec637443d0bd4476d12e518f1eab328cabd9c6..5211ff749e3e1297b7621521f0e5af45b279acaa 100644 GIT binary patch delta 90 zcmdnNm^(o-goS~D;fEal|A)6fVLo_;ewp{qq57Qn0w|sne$ma1~t8|HF uw_eLn{lC7xWES(``fdML{qJp@!OO5jM0nMTCeBKreg;ohKbLh*2~7ZCA0=V{ delta 166 zcmV;X09pTSxB-wEe+B>m07f(QKmY&$8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?09r{zK~#9!VpdR4_~q;C`_JFsUkk`~|M>Ca0VaNa{&Ux^U32*IPnILJ*!oa|==lhxpASLYS;uyjqn>^wF{E&MSriJMJmuHaN$a3|T?4(0LX$DVM KKbLh*2~7YHToXkA delta 106 zcmeaNn;@CW#=yWJ_Ali#kdiEMjVKAuPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_( zRHWeP;uunKD{0#F>HpEal|A)6eqqIc_R)6UJIE7C9c8}@0NnD<@wOrEi7 t!F-+j3+CJSHa@ifT>tQYki!`s23a1yrd8rkDuCJ{x7 delta 166 zcmV;X09pTRxB-wEe+B>m07f(QKmY&$8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?09r{zK~#9!Vo^{~sI|4VJqV<~J$(3(^U$F~PE7p#{LimlyQc8v%NORW zSFbAa@bElmN=r-I^XJbW)^+RFd4lMytgKy(|NsAIW?*0tAOK=^ApQx&9{>Uj09f@T UR7)(m5C8xG07*qoM6N<$f@l**$N&HU diff --git a/AppKit/Themes/Aristo/Resources/HUD/vertical-track-disabled-center.png b/AppKit/Themes/Aristo/Resources/HUD/vertical-track-disabled-center.png index 25675211c5931f71b1e4415d97a9c8ed0ecdd646..de9fc8dfac40a038875073f9d8dc90a987e3dde3 100644 GIT binary patch delta 56 zcmb>PnILJ*!oa|==lhxpASLYS;uyjqn>-=kV^gMq-=>NA3=D#K%zF13yS0GQ44$rj JF6*2UngGec5C{MO delta 106 zcmeaNn;@CW#=yWJ_Ali#kdiEMjVKAuPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_( zRHWeP;uunKD{0E~>G=g^W%rcT)xZC}xY&J8_4jwBj2s3G-hv$WMfcr)3slSC>FVdQ I&MBb@0JG{Q+yDRo diff --git a/AppKit/Themes/Aristo/Resources/HUD/vertical-track-disabled-top.png b/AppKit/Themes/Aristo/Resources/HUD/vertical-track-disabled-top.png index 12abe0927bdf9ce57dc180f06f7dc1262bff5ed4..dc6abbbbefc8067c1d87a3341af0b75225d2b463 100644 GIT binary patch delta 104 zcmcc2SUo{9iG_iIVd1Aa2Y{55r;B3=?XPZI0)8_*ApKJ=o2bWz_ImmX#XH%wuACnQ|&-nreF74bJ12m1n)78&q Iol`;+0Mh>_CIA2c delta 193 zcmV;y06zbF(*ckfe+B>m01Nw6O8@`>8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?0Ch=3K~#9!Vw9Jc=VM@C@CITPAie{{TNxD;6ykskeoju#SKq&X7Xz}t zumA~p85x=Lf`WqI-@kwVm01Nw6O8@`>8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?0B%V{K~#9!Vw9Jcmu6sKm^Nkl{;eL0(azZamYX zH9gnCK(%D9+$ST=KzxO5zS7FXe(;4qa*&7IqCox88P=NibB7vh$XI3|U15hF*D>rf z&Osh>k*^f$*F9ma`PuepOJlWXAR}+n*h-3im|1m4e1G=}hFs*M4kb`S9U(2$)fNr! zs;1oX8s$88XgFz7zUMe~ojdQ2e+k&il1k1wd7+ncp;q%GRgAO{3BpEyki zPo1XrL$A4G=;TM9m*PV()PZ_XmlV|Xwq~s*@^m!ZP(@kZwAplqEXyK`H?kLXy!kd& zRaI@O^MA-Yo;{F@eAIz@P#5a+48Q)s5lSq%LS<&+TcKv- zzWh)R>arXnsZOc551ES#?qd)>7<2cgmE6Z9JAcLPw*4#5ohgK}{+?ChD-VS$;#1Dt z%oZpI%TIx?^qx}j$U}4Ywm_B4&noei+f#0vZQnBgnJ3H0xt@luld-g@#258REC)ujG4GHPwD%Vl2ZyN z;D7iCrACL{QI)6kk*?}T-}>c2n(TRt5(?|6j4J9)) z!Xv&v(I*Pq@~^4VYTEzFSvqpz5_R_t(5+y#5?}epq>>UMmY-#EK#S4~$KR(tFTG3$ zkG)4P_7C{-bL)X*pc1wdo8gy>fwBtr34cg$=*Z#2?l0cT%1U?K_xc;sUZ?~0pf1$s z8S3K=qjzjQ5nC|xzQA&SO;9ixbbt9`%-p%<3kda~F4QOU;w5z^WA=`(CmGD7lJat? zrFiqyNm{yk*?pqGIC4qtX75-+XE2Kb<=#8CF*irQzkl09 z7wfCtF+Dx)y+h^bkVU8i_52smcA#9a{v3BKk&4Yrg8AA*oQGWGqmKUr+Afp}Help? zCz5(>p5L(U1lT4J=OGvQ+X33hZ%?`0Ya**c*NPh;(1^dFZ8H|^rt+r#E9kKzW$B^R{$SYKd_d{Z;H^=$*isO8E-Ep*E9H(!{ar(C_{5|GjK77QI^Y!rp zm1p5yR~pZ|tYy{=Yl?M)b&Yj}HOTtjg9gRCYr07*qoM6N<$f`fzX4gdfE delta 1723 zcmV;s21NPa3(5_UBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU& zY)M2xRCwCdSzT-tRTMruJG7Seh%Kd5pg+*kA4-2_wtu@jzn(KQ+isiE&fGhY zc$1U6+wPw8efNCl%)NJGj^n^aBNmInR%57Zd-bJ^rU3sap!Ej*aOaK54gW6kAn?~i zZhn4`lI`9BqJRrw+unr^5wkJw?DgQp0+IT4cTUdk&nxY%^)4YJ z1R-kGH|L8mv#dj|J_(&I8L#yRB<3Ko_G~ja7=L`fMR(@g!G&&s*Z zol1MNN609Jmt6MPY1sSP8xW7j;pxLK!oT@E*k7FsB}H!`=b^m~GlqEX4{e^Y*rT>d zKjkI)sjg>~4wQ>Nw*Y#Ht%g#UeuPFza!Fa11%Jhb1t=Xo9KOtO+m=kHAc@4LP|lM> zv2f)( z*PZ4#|0n#HkGKPW5k-0R-ScjpU-Al=jiOUK_~zsaS; zCSlry)FTgxi?-7@rjz`ucCbV1JaPom=`_^U)w%P&mtSG_MK}l#;UavYN%b!4 zh5m)bzDdL6B32o^?yfGKd}%KIdw-LQ5aA(QgpcJmNj+OK3IhvENX&p(GU-Xt?}$Nd z=;U#j{{D))nWg#0v3EoJptuyDa1b8CbvB()Ltnhq{65uqI+akmw>6yThznqr%Um_a zQbQt2cM5y>;F8w&X~ih?)_H`^lyv6HOqCp+T2#SmY&fw!nF9L>5p!jW@qZ=^3vQ@d z-#OhZ6jGvUZE!WyujnHIPFh)BZ!4p|%nUpT61jfXOs zx4Ie|K`>4B{hTPmkgmh;#p2iB*vvwtbHI^VXTwIYDa zlUh+~g5s;Xk08upMerRby|jG$o8w%@ms$T`OLVF0TgeXST8yB!O9EWnY}dT6wJk}B48dzj!Y1#T?r64n&nLhC^Y~AI0RXLR0F3XY RNf!VB002ovPDHLkV1ghDS0?}f diff --git a/AppKit/Themes/Aristo/Resources/alert-help-pressed.png b/AppKit/Themes/Aristo/Resources/alert-help-pressed.png index 81dfa09a211fa263112c8649fe9cbbb7f138a6cc..b6e85cb76214121af33306b335a75d1baeb77573 100644 GIT binary patch delta 1239 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 diff --git a/AppKit/Themes/Aristo/Resources/alert-warning.png b/AppKit/Themes/Aristo/Resources/alert-warning.png index c5e480421adb09430d0bcf4bcc5db971728aee59..03dcc2f836a44cdd587a31b866b6542d14733900 100644 GIT binary patch delta 1899 zcmV-x2bB2E5cv*}BYy`#NklQKa09AfQEC)7qkot3pLr@s41*%0)DYax>foVz`Ez5P<}eH*b>v zK4%%3W&}0?m4un!9G=5D&v|~lCod20ysa-;@sSURcj;Tp|9|Q&IxHX*gOAUGMvic^ zbfNc%k%|6l01Bvvn_i09TC7x8VM5B7Bo9Cb(L_AMcvlI!3lnlIQiuv)PH3TT0CcyZ z=Pv--n*hXkUYpLuTrEzjvmjoi=qUg|Lfj9;F|ZN(YnXgq3i`Q(o}`uKT)TpJ&*Az@ z07?PPDd^Qn(||6HI|lH%7;4A>?GH37q4qm5R&Cia66Ih%pgarR$U!37 z2x0)mzrc-`fc6hi9&59aYRQU@8fwe{)VHCNCqVl=!dOV`5TLq>p{6Tn&Hg&cEQFqB zMccI8j(=8a6h*)bA+&=LMA$T%{!m;=^~TY74>q!x&HsvU=;gHg-w}} zDZ{PT0Yw_L1Ch}7hZvA{(i8R$PSa4#<_#H$p#5htBDsO)%&5if3!5_|mlIm3^PnG! zhgNog2sXfXhr59k#jmVk`*eeGfGQi^6{kTt7k{rWY`hsEl0Ul%yf^{A_W<~wpjYto z*=!(1@l5Mze=soe9Tc)VpuCc%TM<@^AQbM|!(QQv%h2|QgYVouBjKSt45TQYZ7t;q z1;*0QFTRNS8)0v^FRZ^FW?gqJOs4G51O^hocTiE%fEh{tey@QP#j~zudGvj;(8x1E z`G1vk&fDt?>#l_+^@%S4Bgx=9_dz4sIV-m=1sh0F%;slDx(65*VzBWNo?QLv?evA> zt6$j?oOUz=+U`(j+Wnwu^O=?M-2DbpkMe`r{2cf~+jRgKPe*(4anMU zG~ppzm=qgL+Q)7J`r^=2olIi;UT$9VQp`+j%y?>#u+C*$LiLMGi+`b-+p2s^)-pkI@)O!JghtYC3 z5me8@`@-^{cZ&wdv$?PXr`^P*?mNs{3o_#c1(b1a6)Bz0uIrY@~#1pep-#UR)P`Y|tiMOk(r% zWeqe{Za{A+#93jW8jbG@?|+@~&*`a(gTC2&N~qLj-sGQmGmy$WLpEU?F9zQBB;`nd8n;5+t!YUhYo`oiB7oZRt~v^*U826uYIB$Q`o{!pFz zI@X4TgX&Lb9@9cgmw$RJ$^OB+c&IiATC$(WTZxHW3xMk6AAE!t;@!A&!n=xj{7=lo z!(+*c70%YDA~y=FuWbboN*D(*~Gc6@>T)lGH`(z)wFa6W9ZGT+)=k1mP zt9RM^fBEdM4y){5N=;usdwVAvfxy|;(b4G-4i2j=239Yto7MmF`c1zm?Ck7*D-f)E lmrQ?WX|TFk{V!h>{{=`xuJyR03L*di002ovPDHLkV1fYOxbOe~ delta 2114 zcmV-I2)+0D4$cseBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU( z@JU2LRCwCdSzBx)R~i1s*Tf#*;yAwB*|oRXY_glBQK=x6KolgDJOPSC7YQLm5r`MG zm8g(Gm5}@ywjzpK-EX z$97^n&SrC@PvbM5bN=(6|NP(i&J2epW%cH(IDs-r_>dsrgo~xwO-<8!Y2$N*zgb;D zUM{Xz>Gv$*PbcY=>4Yb3fbgbo?5q6HXTJ&m)vwv8{yHK3*qzcN)eESMz3LjC9B_pE z)awfR{C#j=_H||4ISLn}=;EX5q|L5sBo7N+HkD_@_>5)1fuJPgY6d$7$ zl2@rN5?Jl3e1iT#8Scb*ik9I^J+Re)lgKHa20O>cB7fvSmZDUoD6xmolrlM*g=;vd z8_Ll0(O&1&NjR19oVy&cdrCC;JUJrQIR&OblQ&_pK7jAS(@r9jxhLJJG~v1@6#}X` zFttMWSR)uM!|ED5DIfZM;TNdQbC1EP?m&T&G3`k@i4U@XDjI`t4GEfbAN-I8cXD)s+JFB^TYj{mYV+YWAKVOF2CvSe5o8RwbxyK&Iy( zz-G_pobO9Q%%R3`A$ z<%rXkgCcIwkwR`s+tFY>7wPqu6i@vq;wG%@e+XT=+O;n1#wkPJ4Gmjq*?nxx?qSLy z=&NVah<*q@Olc@0^_#;`LIFS6oi6OyDLsiJ<5z5E@gA5+$*n4fs)qOw4mib*P=6Yv z3&jFZya#_xX^<||%so&PtQBV5;plWAT!B)gy+>|N4v!+}6kxT~%;?u3FCN)OCk>^% z4xe`u1Lsl`WcNFVjHv;gM9R>2g9$HKfubZ8n^O2e(C842x@-BQU#Z@Xgkse)*`W=Y zR0!GqMJKwjZKrgK4PHp6JdXQND}Ng_qw*0dd>;y8p?;%Z<7ym7+Gt1ptHL%MrWJ%n z(h;q8N(45ehI@mJqv~wyCuI+ka8%?JU2m zywCGOG$s%^tP?p@JDP1BlOtCAx3h*w+>6ya$k6bAtABOsG*X$^#c0IMWucUIYnx)H`9P2)hU>3Mc>ZMpKUxq` zuCT89(d{dx0&HRy$;+`rbzv)~41E_%3Xpg28`Mfv)D_--SH*ivwSVLNovenx+*Z5p z%TOA->!kE|;0btI>cSRB56qvN2;0nsEQ!lf*HO~p^4A|dc)zpjzV!T3E0mwxS%ioC zTfQ$eA9U!}uU?$-N4>A4&lOP3>l>|ftT&6vqyuHEiIxYk6*MFU^AFcfTm*1l!G(NoY++fO6y#slByEa3|DP+Nth{5FM!Ac~A zm$Szw9O87V*Nd{_BL4Nx)*4ku=x(X$+a&$dN_=!E<+rUt+T1%<9JkQ;mF1P*QX%!J z77K7YvPg_3BP;*SXXx%v8zOb{weLo00`E?J#pyKXKY~&yo_{KZw-YTh?|>;Xf_MHZ z=o|6a{` zBa7OXJP|t_4u2=kN>NO9EG_P0HDCF+!?E2@{s@+QK5w>InCr&P+?%-#@5n8e^@}F1 z|IBzr3rgHBJ^071|LneDvGlpfpXx*Qv)LWxw{Gv;P-OWJv@4s=ic=iNF^kn)?sqtM zxV@CI1Ofq-mS54zX{(Mte#`8vy}3C@~07*qoM6N<$f-k-)D*ylh diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-center.png b/AppKit/Themes/Aristo/Resources/button-bezel-center.png index 9d33b4a521b7df3cf121275bf65726825a4e2f89..b501eef86030b3e433f093c8e932ecd3dbb1a9a1 100644 GIT binary patch delta 67 zcmeBX44WWn%K!v&%TKTYDOpb!#}JO_bP0l+XkK&R-U0 delta 120 zcmWIRW}F~d#KgeBuw@-XFOZTfag8Vm&QB{TPb^Aha7@WhN>%X8O-xS>N=;0uEIgTN z15~8z>Eal|5uJQ%ce(!LsZ&KSZ_mF!bP0l+XkKc&IRK diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-disabled-center.png b/AppKit/Themes/Aristo/Resources/button-bezel-disabled-center.png index 310e7382bb5cfae33823f0e4327bd439baf641b2..a8552cebb07c9fa6f25804194680da16c849cc2c 100644 GIT binary patch delta 72 zcmbQj7(GGKiG_iIVdByFKp>^$>Eal|5uJR)dh*Gx#+TB}m+je>{ZA0;`h!TQYfTR=*(#5JNMI6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZZ8 z4N#Gpr;B4q#jT_pyUXAEw7tK-|9r}?Z*QfUFYmAaFEQia|Ns1{3kB={|2um4sAgN* hi&k!N2?iz}2G&gXpsCzZuYo2oc)I$ztaD0e0sz74G!Fm( diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-disabled-left.png b/AppKit/Themes/Aristo/Resources/button-bezel-disabled-left.png index 2ed1dc26ac8cfc924e9ea9bc1e20636cad07cecc..739ee9013ed45505197c8da4e7f024019c3671ec 100644 GIT binary patch delta 122 zcmV-=0EPeE0gM5V8FK^x004LFlobE~08>dsK~xA^W7^BI*MD#4-kD7QeI>n21gsdC z{#%PP{AKvY!1RyzACU16D8c}NO#c`l5I^HD7?LVQk{T%E|L5OOhaG*+@Cz)m`SqSF cpDr)}026Is{>qnXF8}}l07*qoM6N<$f`(Z%JOBUy delta 204 zcmV;-05kuL0o?(R8Gi-<007eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004hUL_t(|+G5eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004VQL_t(|+G5y diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-highlighted-center.png b/AppKit/Themes/Aristo/Resources/button-bezel-highlighted-center.png index 0d03b41de762897185f1e0d86faac98b89364b71..1633c0e93c6e7b7915b2d12044ad937f0f114e61 100644 GIT binary patch delta 66 zcmeBR44oip!vF+w%TKTYDH%@}#}E$LWX;r#DTypjY6fXei)J?FgamR%X8O-xS>N=;0uEIgTN z15~8t>Eal|5uL21tDCxM%a)X+loXa^frg6)4d>F+(vE4eKlb+UFnD`!uQbE`6Rfg- TeGa4nbuoCl`njxgN@xNAu=FTQ diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-highlighted-left.png b/AppKit/Themes/Aristo/Resources/button-bezel-highlighted-left.png index 1f0dfad7fc06dee61cef295e22d897e6852a0173..c4761a768c1785ddaeb6e0ec77a6a8f4e656b632 100644 GIT binary patch delta 132 zcmV-~0DJ%80hR%f8GQr*004LFlobE~09{E$K~xA^V<}~0sAEWAkY-_Ql&FwmU}Iom zN|s?@Wnf@nVH9O!009;z1|}GT5kmyZV8*QmNea$j#w`Waj!g<(4by9O(Z3A;fKHwJ mxCg9HFutP9#gaG{+5000005AWR0pS6V8Gi-<007eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004tYL_t&-SCx&i4Z=VW1n2h8=g<+-$+$8iOVnVA2t*-N_u)4|MDPLu z-f*VcX4Xmp^IvUlU7 z@&-yNdzJ3?KjrI&B(-rIad#vkGkdhwn5K!$#3kKotx;<|0r><`%@JPnxwmfs0000< KMNUMnLSTZ1DOq;_ diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-highlighted-right.png b/AppKit/Themes/Aristo/Resources/button-bezel-highlighted-right.png index ee90e9450259e2159908d5fc81bd939b1e71f71b..d77cba38ea536649148c013a6ce19077ee01c4e6 100644 GIT binary patch delta 131 zcmV-}0DS-E0hIxe8GHl)004LFlobE~09;8#K~xBtb&8=4fIt+*`rrM4M3Eraju~($ z6l0u1vHeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004+dL_t&-SCx&i4TDe=1J8b6P*O!g3X3pLW}qTfCZWm_%oFsbzX45B zg(e6Em)4!FVHn=P3z&dM>ieE`U9Zcsj5+79BpE=Tl1?N5s;WZLCE4a1+ib*E z{1AslM4a7-h#ev#&MJqu`^tYCwuuOA7q@Lo(=?P)kTj)vo&hrOw0-{oH02pg{(#b{ P00000NkvXXu0mjf+Ra%u diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-left.png b/AppKit/Themes/Aristo/Resources/button-bezel-left.png index 43b127cbbcdc92b203f04bf7ff2fa7efb255f30e..55e8a87f91787d7f5f5430a4f380f0a3f5254384 100644 GIT binary patch delta 121 zcmV-<0EYk60gC~U8FB;w004LFlobE~08&XrK~xA^W7^BMw`K2>z5kj1H%eBUNLw*5 z{ZAHW_{;E(f$5*{&nA# b7Z(@+R&-(dBLQzE00000NkvXXu0mjf9IG;p delta 195 zcmV;!06hPT0n`DI8Gi-<007eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004GLL_t&-SGABa3V<*SMgI_TgHma4<|KFtC&hz!l%A(U_b#Qa$)KR4 zVBjr3FA0P~2n=8qCc#theRs|+-g_`JG?=ZmsI?;J3~H?z0X$c!0p$*~`!GHRdh-8~ xUv|77lu9Xvh;HMEF)sR74b|9EN-T^b3@76-lzaG8?Zp59002ovPDHLkV1fp!O*8-i diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-right.png b/AppKit/Themes/Aristo/Resources/button-bezel-right.png index b7d5b55dd5e2b08262020420bc5c4d01cfee254b..95497a98132f0344ad7268010b5e3485c09172c5 100644 GIT binary patch delta 122 zcmV-=0EPe80gM5V8FK^x004LFlobE~08>dsK~xA^W8C|n;VHuch9<`E|9=5l&pH_2 z{%2(P&v5QF%RdGX_$SKpAI$jA029H>_)C@)NowE>ki-5k{0BMp55r4_e+yVHFfhDe cSjJET0K_pp4=rd}8vpeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004POL_t&-S7X_`ckh1&28O3Vya0%sSgfq97=HcwCH?g2)9Po>o-wn0 z`}U22k&%%>TwI(1D45Lh@83TL7yzba4#fh)z!2ko>c5!c%GH)AnrB{wE0a{Yx^qaHBxi b>?cF^H1YEb?^T5YRWo?H`njxgN@xNAdLkM% literal 1028 zcmbVLzi-n(6n0e!p-L z0}>02EX;@rF|Z-Q#DK(K(1n?)Vk%Nw$~jF6LRAMW+4tW0ec${2ths#a!p!W9AP5&4 zOSr|)DgItQe~y1|e0{mYk1MR+VJo!HhHgRx)2BTG8lk&NTEz7?AABKIL746b?GEcW zw+)YmlAGH|Sr~J)AXMkG*!9*313j`DL^W~u!zU30eoeeva-b7iWDqQEC1ho5x$SMO zc@#D6Ggl&@xW?9!z zv0__gO`BjFQOexNBNM*?_dCWG&%_#5LR?0ZHl^#631|)|qv?Rgz*;E*$Mu3J*Yoxq zXNyS^JS4uI&=8F3YXqnGhsA&Lh8D6kwWO#jF5z-r9Ao|eshP}!k@MmBYgi^%d;)Xv zWc0amvOFZ>8^)>Eal|5uKbkA>rreIZw@*xtW literal 1023 zcmbVLy>HV%6n9mG5TX(=0n^Eajo5eojNO_l^~E$&Q>ru)85rW&m&R)BGxn9Z9VlW! zY;61ojO>V^Gg77Q9bjZ+U|}ogG%g5L9k68Id*}E2z3;c18;=*R-@7gd!a{2eclbHS z-#gc?^6%2o`xAcLWz8PjqC+%ah4Ony3=Zwq;~lR>`3#HEvPM z_Y&q8wIpAx7%<6$EJ|5K6Hqex1G>u`kw&v?p{jd4$0|m7Vv%y7b`HY-Q|u-LmrL&B#U@c{4u7%ZcGx^!j8!QNMRJ( z5Y-_$u(&XV~z6Y9{kwI?eIW_bDwUkpPrt+xjlL|zVh-x?`VFm a_DYx+jt%Yp;@73)awS{M4g7Jn|N1vT20M}f diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-rounded-disabled-left.png b/AppKit/Themes/Aristo/Resources/button-bezel-rounded-disabled-left.png index 839fa35d7fda0faee1161a194bc6426a08f706cb..d5e9afddfe7711ba6dd74094f21f46bc0db00dc2 100644 GIT binary patch delta 315 zcmV-B0mS}*3(EqK8Gi%-003k=)ZqXC0TM|>K~yNuV`M-DY(U7)z{J4Jh$6^)#7^0s z-;P;;SrH-3cQEMP#$W$`{{I1l-~Ype1@Be;{03U(0>2` N002ovPDHLkV1m=)niT*5 literal 1408 zcmbVMeM}o=7(XZhMK-c9rX{%D4iyNr_tExBZNSL!HkP#u((7`WPS{iWhQ`t5vFdqk0=o(W0^(`{|KfdxY<#!K+zboKfL7bectzd ze!u7YIxEUcw!Ee0s;w2Ei5D19qeK)mf+HY~Dp8eMtJUU%7=j`&g25=JK(&MlBM=1Kcp%A| z;Hn{PqPT6;OD5SuqBZ@zDb7 z6ZN$l}$BuYvd9H6`~szhLpi^jF4?GtUxKW=QP?Xx#} z8Q8}7_y&QN>QR#w153Gku%W1;c(yBk>afmp&MFqFs(cAj^~I-sJC7kOVD?*&bj8qiA7tS7pUmS;U$k`dUK z8JAh$IdCn%1iOWOMD?Gz5ff^{)f!B#CN*S13ABNA{hyq{k~46$IsVlwu_LJiqvB@k zOPkH%VLZ~r2-0YLaJb740C9sB(r6F-=yXk_&YlfE-qG6{?A_5_JfBs1Vm3D~Z!Q!H z&7msQBft=ZPci;MfMn4TK`yCycKyjZ`Y`Q@kn~b4Sz6R zoId_uaOLWmeb3r#HpQ{X>eNDRF!AD)J<0M+e8oS~7cb4}#xK z;DgJ{%krhArG#)K@=n{?#H6I8BAHCK$GNjz6aH(ZJFRXw?ncILebeOh<;&;D3$H#3 zA3+cdOHTVZu0!5=IA!}Ya=H8|$Lx64bM2>2rH8&hfAoB-dvBtux34eq%Dp=adz~62 z{@d>0$&)(_Jw;b0Cnul&$}*jnT^@eeo}eyOK)UmWMp*mx5jRsP`%|K z+D?xRkBk`Nf2FsVmVWu>+^77CEIm9m5O;3jvw?wy7aSc!?)lNivHt%4`I!%^`ihRN zHm3wRzHP?g%f9|Z4fy2!+g~KzRy=<(EW4Mwvnq0}Ul&RRCjgs1XXf<_*WZu+6D=j> K<3{2WAmO}Zid)`dh;sn$QlVD)@4}||1{xa}HI?uh6!yo{a_|E`? z{}}#D%e3FgVBkfQ0KvZu68Q{#AiJ0t&;X;v^BzSZ3>_fI8-LMez`%+{;y;7Ap94Qu z32uXboLD7Tl^!u;m0%Qpfz5IdWMIT_E(rYlAdTIq?|1Z=uu8l?ul*mZ#I`Ly-?2!% zSaS2B`5O$0pLdK~iheTwKy%gqA9t3{V%K?!7KlIYUhO)xHtq%E4-|>#OI7?HudRL0 z_zD`eKW=*Xh(&XWSm=={d&=NmFp1IAOHZA3fVabo(KE@ O0000`!t literal 1407 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3HGH8OdY;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl3=Ay{ z3=Pdq49txT%q$EIEe#DUU0mGE+#DU-0n3=)!dgc|EB<3Zj!tBii+6&cdiC3?cb5UwyNq$jCetr%t1q5W|m*f{` z^Cq*^S6Psp|hEZsga3^ zi>Zr+s}fXi3OQk>4|I$^C~+Vq7MKt)1%jCHqz~l4Gf!$BFvk=Dvj$g{@*V~T#`T^q zjv*DddM5ABKI9;BTwmPvh=+H#f70Rp>1R!rdg%I-GtR#5#B`6s`6Lnb7>vi+g9^YrgM)!*OE^WgaC#CL+TQ=pkA zDfRTzNxo{6r(ewYa^r1T{;8)$T$kA=)M^{d^_#iwwf5OGW3&0^ZzdS*2p4%OvVZB? z1MxEr?&XGto`1M$|4V%Z*|e#8OQ&qP{kA*7prZTXcP@$k3tIdiJBc)o)t6FV@Db zj}KjaHA!vq#WOFaF{~?Q^i|#-wKmCYw(Oyu`{S;r*$KQY-562xrE2f;pp{=5e9Hvx zGOpPCa*tKk3yX;!0sY67mjr2Qo!<1~`|te*_am2Y%(Q3XVQ7`vX!ff4^L|i~=;`X` Jvd$@?2>?B||0)0g diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-rounded-highlighted-center.png b/AppKit/Themes/Aristo/Resources/button-bezel-rounded-highlighted-center.png index 1b8d4ac2d37a891039e3f8bced2741e7b44bb90f..33051c355f9e9a59a765d66d1367287e81a1fb8c 100644 GIT binary patch delta 71 zcmZqVh?*ej$il$DF!5-7Adph@ba4#fh)xd7PlyaZ|7l)ht6 Z7|uRnv2a>H%L=HN!PC{xWt~$(69E6;7B2t* literal 1025 zcmbVLzi-n(6gH}api*~WI=L&c@0`SrP2J+yF%7~YN+LC5FZQLeTKkNBC2j_&nBXs9 zU}r&MMq*$_>W6lG%N(3vQBLdnH-XT4LgM&vO$(kT6jl;o^4ZR13Pa_Ez zHc}oX94!cI8+n5LUBbYK?1Zr?p1%Jef-o?}t-1%j#3qw)bC#0+tTXUuyS^TX8|z># zH#k8=7zTN?7iUIpigR9r%f+=Ug1HIXHO2FwhF%xgG$o)e!HN%62vj7YYE9F$+dzQ` z%21J!QbC$gRSXEh;t{#GG#DE_$6fg1nkh~gOAJ|_PN&keD$#UDM!K#S9Ewum7M1KE zW;n0J*=ot)kjziRgoQK)1tT8OeP)V0((@Fe#PcqQ<7`nVUNSkyiHsyDM^Ta2+&W`D z@+*u>t+T;FLgXIF=zi++evDU3Ft6Re9TkQ=8slLa@}}TDhx+>wiCNn*MgB($!oYy2 z0TI$_P*b4VKuAYWcN|xBEz7N{j#6@5hSi$&2833#RdZE@9M|H4)zDN_)m^)xswK7^ zXAH+aDgB1r?*dyu{*E>5lwd~F0i}E81av2q(QHB!VE605!+sbSdeNTqY#ow@k4fOB zGy?Pb8sR1WVfBx^p^a>{R#$2@r|vXb;sP7|Pt9Z=j9d)IZ^Kev@d+%%i_z!G#qyAt zZ%oQp1D)YFe63L1u?G3^sJpdAx8KdapFDkicKW#rk)kxOgS%t=Wwe@{9KJgG@$GBh aJrtIN4qJXQ`gH$!v6Ssr$9db_e)bbf=RZ~e diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-rounded-highlighted-left.png b/AppKit/Themes/Aristo/Resources/button-bezel-rounded-highlighted-left.png index a07ea1ec33dfdbc97decc1de756fe371c4258a0c..b28b2273e260d3d1db95579def77ea1b721ab0ae 100644 GIT binary patch delta 323 zcmV-J0lfa73)2FS8Gi%-003k=)ZqXC0UAj}K~yM_V`M-9>Iw`>49X0g3_^?uK}`h) zHy2AoWo0FHPF|RV788T3ON5K5y!Ic4-wgj5{xX0ibeI@IQ{(Mif3p0A>jz8dIi{4_ zc>X}K4JctC=g<%q&cwxlE@6>Yo+G8pfCd;%q|E9Q)6j*15`WH~aaB4tSR`E2iYvqv zu}C#C=xKoC5S4bNdTp|7dUP)Dh!j;Mw0+a z32ri7VI1ac>^#KCh#~=$;(ew*Rp*X;u&Jsh2M?bZQY!h+%pmZq%5=$+Ec3^+Z20|6f`QgFcMWd%H7kgn_EU>@E^r0_aK ztT0G7oU&Q+U=zpFuv(7F9H<6`HJBVzsRg z!V3uVrY*2CNIjzH#}TBarbb?)lykfr!Ss54SVN(Z0fbDbWko6=V}-pD1%ehFJmVJ` zj)lXDl%1;*4N~CgMhHH?#j+*L3Y&=nDMJF3AHn1(;`4>$T1N|F0sW5~+oA<)t)E5; zXo0KZ9iSery%93V-NOxqfxsL52+x3`P+o#_RQYIDBng8QoXDMw6Gt%}ieXw6s#TyG z9fs*KR8J6QjoD~4D>Z~7qOl!Uo2AyFs8O4(GHWo5FdM{?Bs|c*(IX_;dVYBLHvoU}SQHLbKwlM3 zO-!WCj*pM8ULPuhCv`E=p9GtmuUwg%n>*3f)paTem1Ao4I|`*z*?H#73=Kzr_8=6x z-`(9^aZ8Y#l=No3Tv=Jkc%L6XcWZHeEc(DvqGdE{AlTf|(Q)djRO~XEzq|3nwH@Xa zEj)RsO_GwIKlA8;2XQx2E+!_fp5Bul@W0`SZ*Oleo*gP{h< h`g2ca!`+xz6q^f$NC1atrZ diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-rounded-highlighted-right.png b/AppKit/Themes/Aristo/Resources/button-bezel-rounded-highlighted-right.png index c4d248bd21417038fdd3646a0288e532a5d283b4..a2b7ad2968081d32252f9efec5dbb6b68174c8f1 100644 GIT binary patch delta 319 zcmV-F0l@yI3(o?O8Gi%-003k=)ZqXC0TxL_K~yMHV^VKW&rnZLcT$&NKmkna>gUu? zYbbB9Y|xC=ltPkt&%h$VEw67|oZeh$Rj*|OmtbW0$MBco2g4@@Im5K@v0W-8*&imU)E-@((jUfktg{DSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl3=Ay{ z3=Pdq49txT%q$EIEe#DUU0mGE+#DUxx&em2**QVo82cNPd0}ECmE)l7#Od4 zx;TbZ-0BJT^=1kbshupJG2yXNtO)12m@O9=T|+K7+>&sz{+Pa_RP~28OZ3+4%d3{S zN=sk7=(^(Uif)c}owGuJ&KRcd@)x<{^ZY<++P&K6`;5Qeb)Mm~jKgUKpJB@b#T_@z zwWgoW5M?>NDQWf9RsC+t3!~P4I+-#lSwf9d;bJ7W{IU5Nh)zLX^Ln@K8}w~Qv;neU?(b&_Rk)Lw3usVRrv z@J&czI&;f>&L`!WKxMO{)@}nbGECx1tzw;vq7wzW%XaTodC4O2{Y`>_221n7=WEUH zzW+XZW5k(8X^wVEiW=lr=iYSWNeRo}RB%96o{V7J0c@{F876z<%Q()oMJ$v~)J{BgyUboAP v%^Yma4==y|y03Y6)`Zn(Q*|DNH!w0h);KC$_3r+4P|4}(>gTe~DWM4fs*(<1 diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-rounded-left.png b/AppKit/Themes/Aristo/Resources/button-bezel-rounded-left.png index 6b2617414db55c19247d9fbbf5f41dd10947d0ce..d1a0412c4cc6ce909cde5bd05a53723f83a85b2e 100644 GIT binary patch delta 319 zcmV-F0l@yF3(o?O8Gi%-003k=)ZqXC0TxL_K~yM_V`M-D{0xFX$il$Mh$JY$pww$) zVe@Q>j?5HdoAb+)Bir~P672iFdfP}*E*lk*$JGLVEo zLsD8D6F&pG1h4ghW=Tgh*8wH?^Ww`Uq6-5hWOQfN>4spDkbibs-!H0%MS|Do_(D!0 zEE3GY*H$pGV3P>FybP-Zf9U=h9N3J~^X+VqHNqkhX=9k;5syV;vviQt(V48A7!vBC7dzqppjxKL1b-0@9Tsk*W@B*A4CV+sS7AQFE_XT(&tVcF=2{4bp zMiF=uBGl=Tt)MEcHrT{+G^~2X z1h{c-4`Cn24Zv|ls+z4A^azM_D+PbhYTXeI@Y{s~B}2nh5XEH}>i5U<+C=k$o&GC~UD3Rw zF-W6!nrG`d7uXL^PJ#?-_uocwAc%%2;~20hl#gUx^?o`aSV%nrzR28+o4{}_hT|F~ zrjcW6EspDOOh=Mtwb@`WE7YVsp|KlRV^m?J!H5+q&1xJc%?2OPDyC5?Ic`vc5zI*u1R3@?JIwo61$Nm2xqG_&UBl zTiKE{$28DxGspVj&H56|F8-L}A9-UY+@w~jFJ5_@n^3+9?Lap}sL=y3CcJF%Z9-j2;* zIv$JtFc6B(4_F6k0Xh3~~GMF3ZuQ(G41gkC+^euQ!&Lmxm7397}m{GTrk^#CQFk zqULImLZP@jIW@&Rog4CHb`O5pQ-HE8yNdBkGienS6^{vEV9RT@>u0*Vo6q+4F16Tf*Iu8y$o7n%Yt8DCI3pVkg3v4}xscc2-+!<5^9{+b zxhij@@Rv{?J`-L0$@IO)5TASeIuz$qErmhpFCocW?VlJ|7}_dOUaLn&J%wEs<{>j diff --git a/AppKit/Themes/Aristo/Resources/button-bezel-rounded-right.png b/AppKit/Themes/Aristo/Resources/button-bezel-rounded-right.png index 04c7af05f5a4aea430419a34b1aa1356764047b0..bfcc5df792bff8632d63673a8e29cc5cda2b1d73 100644 GIT binary patch delta 323 zcmV-J0lfa53)2FS8Gi%-003k=)ZqXC0UAj}K~yMHV`8vlFk;YWP+;I;KmknO558Ra zWZ}uCif{%!23{nIZwzcI-1-`^HFK`CS4A<%!zKPP`~kvW4Br`~yb78&7cyu;CH^zO z;2#DCG28r2=?scc9mwzpgK-pt3IiX8#6Jc`krTyynph z&-9l86N;++7saZBOXd?7RtZ+VZ|qo&`U`XvRvkaS@GxSPc=t@=Csv6EcjUfcwPW>3 z|HoK#T-f*OX7(ctiTBS_mKWS+{DCI%`}g4kNl)W$p#|dm=iAqwTs`Y7;}4XGx^U2| z<@w_6rx{;CBRuNulP5R!Zz^n>HfzJB*=HD^K%>?sKfR%*{nEUa-Iq@Ko`I+a0RSpl V_GSeyzKj3>002ovPDHLkV1mjqmyiGe literal 1437 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3HGH8OdY;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl3=Ay{ z3=Pdq49txT%q$EIEe#DUU0mGE+#DUM5Ivvk%ANZLfKuG zpMO5_@`6WNl#bXDvz4p7D)!#vgJ0wXwQxfW&qa?1w zpeeyKkNL&6GtY~emfw8)E%}FH8TX<>Dc3+A8G}~dh_zu=Ml;_e>Ss>9(ejodebJ2^ zGa+dS9=7>>?T^`|UzAwoPCvag;eBK3%`6LZO@x?oq1#U+wZ030` zzpT6Edp%>sx-hM&^O85t5a@NAospy6U^M;oQ>EjDIST_S9B*zH3s@Vb&BoMd9VjBN zFrztIOR{qsU%+|!4-y({!&Y;OhBa$nIPtV7R^$A$st=#8GQ?WXJ!d#)(X)>gDK`@C nzyIECpy#k**Uzj!Tm}p)ZnsQTP|cVHDlk1={an^LB{Ts5tL^^M diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-bezel.png b/AppKit/Themes/Aristo/Resources/buttonbar-bezel.png index 0786263d59b513111ff759425e8a1d13e5aa957e..c73a0ae5c19b3035f540bb4c5c726abdc6072d41 100644 GIT binary patch delta 60 zcmb;qm>_A+00hDLnY=(s+|$J|gd;lH;_!$0FYSeyh1w>*Fp1%1IQv!L?OdOSn?XuF MUHx3vIVCg!02DkEivR!s delta 107 zcmWHjpCFmW#K6GtGi_lTkdiEMjVKAuPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_( zRHW$X;uunKE6Jkx8PDPW|NqZ)n9=c)I$z JtaD0e0s!w%CrbbT diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-center.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-center.png index c7e5c8cffc17f0111c7a82ac0535da800d6d0537..fa3e37e0af813dbeb359171218d16fc33322e8a9 100644 GIT binary patch delta 58 zcmb>On;>b*00dWmOD_geqMj~}Aso@kKhA%d-^s{%*rP;h9UH?^e*s0yy{i_16neV) KxvXKy?hBu6{1-oD!M< D^v)x$ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-center.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-center.png index 2d033863994e9cfed5098e8493618be366abd8d4..a0754c617fad3db4146c89dc20c468179af0ded5 100644 GIT binary patch delta 59 zcmb>SpCD<*00dWmOD_geVxBIJAso@kKhA%d-^s|MXkyiQhW#?buh*O!<^~7bK`K36 L{an^LB{Ts5J1rBN delta 103 zcmeaTo*qJTXvI(uq^glHmoT?DIL{JeL`Oz|+;wWt~$(69D~Y3>E+Y delta 100 zcma!QVw|87Ct2beQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfkDO7#WAGf zR#MgXhmZgN|36bgLSli4KtfQ&(-Wd9aq?|44h@V9FBoN?Z=dY!0aVZ6>FVdQ&MBb@ E09Gy}+yDRo diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-right.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-right.png index e8c8f2192221a038b75a57f3c7b9c6a97ea69095..569bb417775acde9fc568929a3929112d5d2a3b1 100644 GIT binary patch delta 39 tcmbQpm^nd(!@$$UF@$4g^29(5QHGv-QqOf=JDC}Pz|+;wWt~$(69DDg3y1&! delta 79 zcmd0t$T&eoSF*%4q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1B0=ri(^Q| it)z)M8WIi-j0`>Zq@Leu3c3!IV(@hJb6Mw<&;$TCpc@?k diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-center.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-center.png index ee02c199cc838477c8c9f61730d0f650b3ee7f72..6d34f85666c6cc818d563c80df1391eaebe1a36f 100644 GIT binary patch delta 58 zcmb>Rn;>b*00dWmOD_geqMj~}Aso@k73YtfIMUFPsA9z%&dgvU#He4eUAqaS(9_k= JWt~$(69E4w5i$S( delta 105 zcmeaPogkUQ#K6E%|LL*@kdiEMjVKAuPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_( zR3z`|;uunKE2-lDKU-mCWo2PzX67)dxxO9!M`aoqm>E<)Gi$#tiN6O_%HZkh=d#Wz Gp$P!?Vj;x< diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-left.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-left.png index 05d29954899e97236e0ddefc5bc15bd72fe274a2..043882d911e78f95e120308f563f74f081089cea 100644 GIT binary patch delta 39 tcmeBTOq!s=q3P-37{W0#d19cVD8o^G){FiRj&?Etfv2mV%Q~loCIIXa3`zh1 delta 79 zcmYf5Vw|9&D_Pq3h}57{U>qJTXvJl;LnH>*r#Jij{sNR?@O1TaS?83{1OOLH8nXZZ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-left.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-left.png index 7400551e42c1570bbc75554b83e3ce332da51310..d77c8f53f11dd0c764b921a3a206d8f39dd2b194 100644 GIT binary patch delta 39 tcmeBROq`&?q2cM`7{W0#d19b~D8soJ(vdtKPz|+;wWt~$(69D4v3yJ^$ delta 78 zcmYf7V4R?$D_PqJTXvBltG!vXyM76o&Oksz|+;wWt~$(69C=}3%mdT delta 78 zcmYfAW1OI(D_P*BhMtAn$hQh@g@| bp`04Sb!V~oGka?fgY%X8O-xS>N=;0uEIgTN z15{+@>EaktaVzP@uF}`r^Y7RF{k1jw`nrC3dn3aIOalMyc@}(7zeb4JX+CUQ+JYD@<);T3K0RSXyG$;T7 diff --git a/AppKit/Themes/Aristo/Resources/check-box-image-disabled.png b/AppKit/Themes/Aristo/Resources/check-box-image-disabled.png index 9d595806b13139f6ce28c2c45d8b7028d65dd271..4a9f05d865377297575bc8a443a6cd65847a7259 100644 GIT binary patch delta 204 zcmV;-05kua0_XvdB!90-L_t(2k;RfR3c@fHhQp();1uXRGSwRh;<*NcjqT04WXFeDn$*n1zM!Q_3#lVqABi?dvoeSa^DIA?6}{y6s1*M3!16*BXreZ>p# zQ!YhO5E{^Dif>4r)Wf?;@~JFK25U53jR<~%J2<`t7yy#txexsr)JXsU002ovPDHLk FV1fv*acTen diff --git a/AppKit/Themes/Aristo/Resources/check-box-image-highlighted.png b/AppKit/Themes/Aristo/Resources/check-box-image-highlighted.png index 51e26047ed49054e9342608b94dbb105acfbef03..a9b30f91f5de4185aa01553cd5cf25439c4f9655 100644 GIT binary patch delta 211 zcmV;^04)EZ0`CEkB!9L^L_t(2k;RfR3WG2dh94Q+Gt{Mb$dnuP7%h}SXKzsGMLdX* z(V?K?D2bZ%{YA$TQ-=;8gz$YYghYf8=vPEpmKk$rY9?%;Ui?h(gj=5HXQk9pYfUlW z!AB?Nc|J)gX&46T`#uUh_~?Z9{$Q=8aU8J`1s;5KVoUIiKTOBdG$r$i*F`Gm_MN;t z<~K`bjT`4&(tQ`d!4G@1ZA)7Rz=O}-6DME0t}Bc&ud1pj20ZxOUEV0DrdtKzeA55` N002ovPDHLkV1gWkVH^Me delta 261 zcmV+g0s8*$0ignrB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0002P zNkl7A!xp zaaDJ8+SyO@Cp1U%@N!B%H%+6!7MJQ7!3NyH@g=|j?m@g!*4HD100000 LNkvXXu0mjf$mVs- diff --git a/AppKit/Themes/Aristo/Resources/check-box-image-mixed-disabled.png b/AppKit/Themes/Aristo/Resources/check-box-image-mixed-disabled.png index 2caf2010e94384053bb1ac0059ca88a23a650a73..c770f9cc9d484375b2f9709a40e4b90bad04741b 100644 GIT binary patch delta 349 zcmV-j0iyn>1NQ=uBYy!tNkl=kz#*u}sp0K?M5i0hYxr&dKQPAr4OHz) z;GCSwVIS0PFTh6bQq1ZGHd}3c{QR{<9rg4y-+}cJT%&YsjS-!E2KA2OI(QrXWwN&pL_4L8adO~z3@)*q3 vP$^tnqKA`}oq_dwOl_0ud{Vxg4|{0QKdL|5RNA&Obbx6_$+;m*-X! z&4~n8uqPBMVB#)z1S$nm#h2L=N+C#z!GrqcMc!(e8BL3Z`AQ2b#qQ>I`7LNBkL3U6 z`})mB*Xpe534al7k^|`3_TBnc=~oV#CCM@fq%#XJV-Rzxi0pp%AelD)vg{3;<*<3@ z@Tf{#b=0h3R)sS&u}_<4Mx64rF=$q{>-LR=5V5X_J)QoPtG3yIzSDD%PDHLkV1l^rywv~z diff --git a/AppKit/Themes/Aristo/Resources/check-box-image-mixed-highlighted.png b/AppKit/Themes/Aristo/Resources/check-box-image-mixed-highlighted.png index 661b066278e434430cb53ae353fd460a58897dcf..94b256f136528952ed3e3faf0876506bdb0bb32f 100644 GIT binary patch delta 338 zcmV-Y0j>U{1MC8jBYy!iNklxMS@6x!V zppirDu`G={@@MX`dsmXi9eGnX(5=@7MNh-E9KnQNYr*^Cp3(erN1ntrB3Ffmo=F9r z&LMR5jkM_K9>A~?XnwgPC3+6^?73l338L4%f_{(M!a3{1n0KT3<&NAt#|RlYY249_ zeuO~wK^k{7rAr;cm%f$89l6#I>I?fOmXelj{O69w*W%&ntt{qZmza;6ZSjx)qT8g= kP}Cu83pD{Y)cDWcA3%qmOn1kToB#j-07*qoM6N<$f+(M=WB>pF delta 394 zcmV;50d@ZD0;2f zs-{6&Ym_$oC(dl6J>-z210PwI@0V|9c8xSmVbWsfSJw`HkAG2nsCo&ejcTFJm{RI= zZE^0Pxik;1%?il@7xkyGd-&YxSxic~?@c*y|JDUAWFc%b3u>MN#1ZU=y|{Fr=!d~D zp|8(`6ndj-5yzwudQr8AV*>l+T2EqC)*shm@hd(hm?)1NxxKVO;MO)iD#e>Sc z;;&~h$+W3wDaXl`rY&`{h`306(=X4)^Z)<= diff --git a/AppKit/Themes/Aristo/Resources/check-box-image-mixed.png b/AppKit/Themes/Aristo/Resources/check-box-image-mixed.png index d1c739a8b90620c70b95ed53e4348a8b58ac1bc8..d7f3811719151400a3794b86e9901911207ce2f6 100644 GIT binary patch delta 343 zcmV-d0jU0@1MvcoBYy!nNkl)euGCP((;v;1Fd6 zU7TGPCq#%wSx6<(kqQ?H21Y-~!N4J*=qDACC6L_b6BEc=-Hv#6SLXM~ZP$JA3)Y(SLIt*{2^z{Nq1&B=6>N zaQEdJcQm_`L+0kgHSQ>wID}EIy2c$%#7!hi?-qGG3rXL=cq6gLv1lCIU+yTdnnt4d zYUvpZqSf1rw$8o=E$!X#&FJ=*JCY)MST8(U2BtK0_@~hoP#SngCo!x4r2yQwE z7CTflZAx(v)Fi$4B%YHP9V#a2z5E0Y|Cj&%H_^f{glU&JyMMek>3KxjBULjnHmOZI z6+sZ3tk$gkwdD#FXU$a7^~crDQ~%)c*)aqnwie4}7`OoH!%sh|t^xZWdUlK9(won{ zRi>Uu;t1x1LIte6iy47RfmHcn=7drRQergd-rvIOZ~)pL=8$$}sSdS9GfpOs;NRrC zn=9ybJD?k4GJi>qVSQs0td+($93@MFWi%+vFMw5V!c3t!0sEitG@twNG8ZSyIC*P( zC$($hRY_-7?%U?hh*RD+M#*aA`(DWqBG+ePPNzTR+_7K4b3I5Z{3rIYpSZTb0FOt* pzDe4pms%Nu9nuBq@JoOJ0K2u-terObJ^%m!07*qoLqVCyORc@yAi8%+7Mf(mpLhH?<~HX_>T%rA1aVgf%G2vLA-vMNpwvUCi@* zF9yS0cJbnz^PJ~>IPhiBX!O5qPEjN$Z&RL;ubY@{?ym1qPkABc%Mj2ygPvhAATj|dK`iBfEMW`0`{9kcwT)5b*#QGfRT4U*5wT^ zBIkGoc5AATRexbY$Nd+4P93Z5d5FQt5_iyW9=$K;=|1Mzxq2uMmm{nEGO8Q{u{m|D z=C&XGvx{&B!$`@_!@lCP@Vx%cXTsH9C<=;^dD4tSW(n?@1)6izv5Pl{(G&UxabO&~ zju^0`PzSZp$d5&lr$L6U8o9;>TnmP2FNQiMIK6O9e}CeHE*~;VFYphfs!I8hWE*N> z@dW679O{_K(T}dF_c5pKef&2w%gj8~TU|6?gF0rE+_*mRHjb{vg&boe3aZ=D8H~_u z4eD5>?GEgLH*us#VW=$*G~An{=f9$kowDAN+WaBd#%4E+_Nim~=5DpnJq&SZ8dm?z vKhYlT%O;(Ml{7h%WLnu388(3SwA8Hv1UF0&lZG4(00000NkvXXu0mjfL^~8$ delta 615 zcmV-t0+{{91pfq(BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU! zAxT6*RCwByQ(J2jK^Q$vC+5=KwZf>%f>`iHB(b0`7OG-Xs$y$vtF%eTWwSH8&g`1jLK^gg^MA14d}q#ghO;fEY2ts% z7w-49w372CqqoVWN3RL*O>vBJv^OI%Mxh>0(9NwaQY#gm#4wE0hkH6F`@F}; zrqgLuLCF5@2>eQ$L>ObqKro2a3P4NRp2WAAmw5ha7D|_jzTR%c2I2t+C(C)wgjSUW9KvEQo<6x9R z|AQNsFQAamZ+{EipT3TQZo(zEV=xwl8i`na!E;c)maa3budd5Ijz{6@L9(huj&)M!txLcYkl<>rxIg&z?Z)=z`1b!NmAD z44#SlMuJBu^%6W{DeLxw9X%FB zxl+ZuxjBFb&*609$e}*;^s3u4J7i1Q-oIW0@dV1{3YNYtL-D#XI5e{Be22_HMC62r zzbi2`j9^N+glH^o`7|hP7*(-$QPZk&Dx`k#C zb7G$JW(hOc(~TeB3CA$MRQZR$vcU0%U4j`} z=+x;p%gkbH*{QkKQafwSt+h~dsWoS6nwu-P3Zv1MKLVi$ysDdS1Y`d}SD(Jm_hK;2 zWfw2bInR0Chr>C{_4@OF*{e`0_8rWb<;OkD8D7oeWNwo~CV%&W3FKEd{ytEu!v4JD zub3mW?3h{Jz}k;ZeEs<=qfUz*hpStVcdiQ+?b0ffU&fQ+_3xNSY+x+*ZAV7;I1W{u zMWN<8Y9%M`&V5X>z85k0-hatRejY`3c|G#g2AsHPgDVsVb?o-k5{BQc@5sBjg2I|+ z9I5X_v91T^(SHRor;b@B-r!MmO*q-0hjTtg=P6Y>BXVlADAt;x>3^J>Q^#(MFTx#O zfz2O*qNE&0Yg_qieG;>_TW%;T8&K3Lq0(T-KrlgbfjV~0w}AV>I1CR1$UUt?wyFtL zdK0<_r=cvXLqXG3l%BW3>W|P~3U$mdGzWS1gP@gtD1T@+i3jAW)Z&+v=q%XFowb@6L-A_W0#=^Ts`_!?P{t?FoR{+N0d6-5*|3rJV r&$|Jp?jjw^;vR5Y9Cl%g_Nn^=_DXJQASHo800000NkvXXu0mjfC1n*C delta 601 zcmV-f0;c`J1n~rrBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU! z6G=otRCwBylTB+AQ51&XPVY>TX%iFdBok9>Vqz>Ye%DmcU*bl^wR;z$bkl|Y0Z|GS zM8SeVP=cUa10oizAc|N5wMmF=(j>L*%)JxOooYj=je6mQxqs)J=X`L_^xb}1#Q&Vh zs~1Q5`q{0H;Fp=>I2ze*kS>v8y+9#2;@MMHz0uID)s|Pn69>Y%}n1x zyWQHlOBM1nSc3|WKZw!9enj_~u3d5pr#Wrg!BTArU*}7B^58zK4er|B6<=fiTLpT^ zKq%nH(aaIoE+sjFH!Cz6%kY~cSRwG`^E}E6B@_uB9Dj;J(>%zXJO&4yZdb%H&TaQ2 z9F5^jZXEAFenM%niiO2z@a;8eP94WHX?T4;H}3b59CIuGdZKtdfpyEqmwtNh4xp$i zh9g6WgdB1v?ii7kpu z#hlZ0#*%?2ix$mLJL(*hom??Anuu;{PNvo>X$wmWt!4;wVDv}rj~EVuio6gnex2vN z7z}gS#fNjwbDr#qm+cCrV#jXPfPCG?tRs^NvS!(m41e*ocqfpoKC`y#P%d^R zW!__!p%)f!@B_jttN8e1Juab9!d|r&NreVvR~jc-^Wb>o`R88VFM>K&*Xzf~+wYt5gqD$U zx&jCCtB_VQr?dR42-jR(=&#_WtOcI(DVg zhrXF*I07Lk(z9^5=setSmiSD#(F0{p5mL*HIBvATHT{+59Chr{?O}8Wzd-DNf_*1- zNX*qBPiWxBqRh%iilzpc`g+_9glI2{Iwm+ga8Av0LVvp#DJ2*A2llH=_>rXRYGHEw z>3t09n8DtM_K9~<=cHc#o2jKn9%{`_nr}cI)7xCQH8vMR)8s^kz5zKk7PJMzG~0kW zR%z{meyNHok)u>2h($ delta 593 zcmV-X0`CqHDc<*9MK`C}toki(|PPFcL*O<|9`-zxS zk2Un%!%%EV*rz{*-ly~OKRI-=5$Xfg$gVz*I@f?arye_ZJ&69fMYzLJD0A|$yZi)v z&lki@y3`9*VL7snny}yGfOqzbm=o%;Ggn8@6Zs6wz<&d5Kd8snA}xxgX7Mbl{1Rkp z>yc+@!exFqmZBrcyjfj=lkAUr5f#S>9ttS3kNYU(1d= z`@}V~s!XD&vwD*D3Djc-hZk4IUnbGEdXQ^qMq#}To#EJuJ)s_}wcmg<^dgDleiX%K z7n%kqR!Zy=sK<_3uf^Mg5!lD(){OGhW4e}Zo76o5%kT`W!P$SJ9OZehgH>E~D>x_j fmBSiPj`E7X*#Vd`crP^)Ae^=$meNx=q>eN$e$v< Uv!g2V7*HL9r>mdKI;Vst0J-WGQvd(} delta 114 zcmWG-Wt-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B=8g)5S5Q;#N{ZLP9~(4}KP(_i_=!c3;FNz{n)Xz{tiRbk8~Npx>lj PKrIZOu6{1-oD!MKoTui@+|10U>kXQW6=GtVPP|gx Z!g#7vsQb((w`)Mf44$rjF6*2UngBGn7{CAk delta 122 zcma#*Wt<>c!p6YBV0~u#Eg&UX;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B=8i)5S5Q;#N{ZLc)ZEAD^F}uU~e5f4#8*<4zu*|NsBD3uVOQu+*tWoMC3vZD3$# YIB#a6qI}Q#JWwlxr>mdKI;Vst0BS@mCjbBd diff --git a/AppKit/Themes/Aristo/Resources/colorwell-bezel-disabled-left.png b/AppKit/Themes/Aristo/Resources/colorwell-bezel-disabled-left.png index 6f1614ab9c1f7099e8113827f64b71bb83c36541..fb6c92e7f67a4715870e32cfbc3f4650db0c4954 100644 GIT binary patch delta 116 zcmX@k*v2?PGM9ycfnlmae-4oH^>lFz;h346n2_=y^+7`7gT3?hV~-pki}yn9-mSX=-0zopr0BxTxod5s; delta 182 zcmV;n07?Ib0mlK58Gi-<002KZN9OeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM003!8L_t(|+G1p2U||Ns9PFgQ$5)8H};Se22(!7!R)(-^Rt29o*r=P%Enk01dM=i}|$x2OI6 k`}Y$g)CJ-|%nuM?04eTCFfG&!JOBUy07*qoM6N<$f`DaD5C8xG diff --git a/AppKit/Themes/Aristo/Resources/colorwell-bezel-disabled-right.png b/AppKit/Themes/Aristo/Resources/colorwell-bezel-disabled-right.png index bf56b963735bae32f0b3282cf50d711cab65d706..0ae8971cb055f37b0e14b8d79ff8ca1b14a4efb8 100644 GIT binary patch delta 117 zcmX@c*v>dXGLMCUfnlmae-4oH^K@|x;fPL76G%=-`*HNc>%)Je*y7sW|KGnqT_8Ov zAweJ^A?YXo5=n`LA|3+gk{zZV_F9;s;G{ZfX1%@9pX6V^Uw$)beSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM003x7L_t(|+G1v4U=RahW+48>@axyF5BKliuLW{=8NPr2{vU|n13BVM z3=kjy#7r#z|Nn>b85mJGFl87r47l|W$-!wf#in6#+uy%`KQ00}|CoS`Pq%O1o(AN6 j07?pNK!5=NV#`WP$lVRW00000NkvXXu0mjfnzu+d diff --git a/AppKit/Themes/Aristo/Resources/colorwell-bezel-highlighted-center.png b/AppKit/Themes/Aristo/Resources/colorwell-bezel-highlighted-center.png index 3dd335f5bf933eedb7840d409af36db582d1bde3..33051c355f9e9a59a765d66d1367287e81a1fb8c 100644 GIT binary patch delta 71 zcmeBYjG7?n$il$DF!5-7Adph@ba4#fh)xd7PlyaZ|7l)ht6 Z7|uRnv2a>H%L=HN!PC{xWt~$(6956`7B&C? delta 124 zcma#*XPh8e#>T+FV0~u#Eg&UX;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^r;)5S5Q;#N{XczAxoj;gP(>X&_gf8W@^(8$P%Q^6rE@o|!J!K;SZXa0P78SK`; az|7!R!c~`a-KztrnZeW5&t;ucLK6VXCoVkz diff --git a/AppKit/Themes/Aristo/Resources/colorwell-bezel-highlighted-left.png b/AppKit/Themes/Aristo/Resources/colorwell-bezel-highlighted-left.png index 8c15793353669ded78ddfa3a44478d1bd4aaacd7..84148f538813c03173d54bc93fed43ca538615df 100644 GIT binary patch delta 116 zcmcb>*v2?PGM9ycfnlmae-4oH^>lFz;fPKSNlzR|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1 zY6DbMS3j3^P6xWurFWkti`1Ji%AeB&^& zXFR~d!0?}wiIatqfq{XEfrSY|q4F>VnNj3$@vv$@x9InGrtd6&ew;hVc#fr_f#DL< ZJ^+Fk6c`Pp!Lk4V002ovPDHLkV1m5cGpqmr delta 199 zcmV;&0671N0oVbM8Gi-<002KZN9OeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004SPL_t(|+G12!S1)H^V7LUtyO{R?fjAJHJ$v>!)3=_vu zjhTSb4FCWC=VW4H;$#7efcOkR4g(8_fOBxm5LU*_%#1@1DL^tr8jaJTOdy#*fBt+2 za=tSG89&aQJ9iK$c#iqSix+>cUAwjk$k_uBU;sKwCAk6$lT82s002ovPDHLkV1gg_ BOkMy0 diff --git a/AppKit/Themes/Aristo/Resources/colorwell-bezel-left.png b/AppKit/Themes/Aristo/Resources/colorwell-bezel-left.png index d188ea17bb76b69d4a026d6c8e272c8e09248146..4369e4b583599a8a68b9230412b5e5d3cef6db1e 100644 GIT binary patch delta 111 zcmV-#0FeK}0f7OK8E6Cm005ORk8A({07ywhK~xA^V`5-pP-C!VVo=$a|7$A~gQRKf zFJ2}Fw*S2UfHDmKfsl!TkyMK5AHzT5RAQxm|M~)=9voQv>njt(#k5K4aR6MyGq*q1 RU)lfw002ovPDHLkV1jKUE-nB7 delta 177 zcmV;i08amb0m1>08Gi-<002KZN9OeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM003l3L_t(|+G1p2U|<4b6(AM|Vg|K+`}R%!_3PIs5Xb)W=g*(MeEIU9 z1;}Ch|NlQP5Ho-{3?K#wfH;h_<1qdE_m3X-z&W76_zm>`7b=hdi1XmUfdgxS0$&-S fvIan`01#jRTgO-mpL~OG00000NkvXXu0mjf>sCmB diff --git a/AppKit/Themes/Aristo/Resources/colorwell-bezel-right.png b/AppKit/Themes/Aristo/Resources/colorwell-bezel-right.png index 7c6bbf90d56dd4311ad6fde0ff757d8c51f57f37..7ccd0552fb42b7f0a0dd0ce00ba317fac238cbe1 100644 GIT binary patch delta 112 zcmX@c*u*$NGLwaYfnlmae-4oH^mK6y;fPL7+mM`)UUB}z@5}pE@@VnI|EvFZB;ow0 z{>H}XjlECpnK>LZ+=N!tD|B)0mI=J_UY}=wWL>T8j%g3&n4JZh1(}5zzH2D&?M(Dy Q0vgKT>FVdQ&MBb@0B*@C=l}o! delta 181 zcmV;m080OY0mcE48Gi-<002KZN9OeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM003x7L_t(|+G1v4V6X#Xb|8Mw@cZ}gPy6=mn+oKpFnsy)<^Si;pFaUP z_ALMY{R7erygln jJ&<$|5F3G<0}x;UsvTB8#@!*`00000NkvXXu0mjfTQ^M+ diff --git a/AppKit/Themes/Aristo/Resources/colorwell-content-border-center.png b/AppKit/Themes/Aristo/Resources/colorwell-content-border-center.png index 96e46d5ca4074941106bc00cafa2db65e1663a07..30fe029858607ba5a64eb826655f9b510c6e0bcc 100644 GIT binary patch delta 48 zcmXT(pP-^G=IP=X!XcZSkdR=Iwm?9_xc2|QyAli%eawxmyKI&+0D-5gpUXO@geCxa C>kq*I delta 87 zcmeY-o1hXTS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALBi9;F{I*F qQbIz4LD~WV3FF%T|L#gC9AJ>>V{Rzopr0Cimt A?*IS* delta 88 zcmeY*pP&*fS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALDJL3F{I*F rQbIz4K^l_~kBH#?{q^Q-90m;1Im{Wdp?78i6)||a`njxgN@xNA65t!E diff --git a/AppKit/Themes/Aristo/Resources/colorwell-content-border-right.png b/AppKit/Themes/Aristo/Resources/colorwell-content-border-right.png index ca13ac1c804ea8488de10bd1edfd6095ba1ed26b..aff6c572303cf0e1e0bd62b5f564e244706f3100 100644 GIT binary patch delta 46 zcmXT-ouHyA;_2cT!XcZSl8|7Kwq(YSe}Ai`7|JEtRR0Jan8pAEp00i_>zopr0Cimt A?*IS* delta 88 zcmeY*pP&*fS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALDJL3F{I*F rQbIz4K^l_~kBH#?{q^Q-90m;1Im{Wdp?78i6)||a`njxgN@xNA65t!E diff --git a/AppKit/Themes/Aristo/Resources/combobox-bezel-center.png b/AppKit/Themes/Aristo/Resources/combobox-bezel-center.png index 8f5171d3c673d102f7e1b56ff2ad2283c856db7a..ae51ca10993db6e3c34e0cecb9aff1b34028a0b6 100644 GIT binary patch delta 67 zcmbQpm^eYjR>RZ9F{I+w)^iI5859_pH@@3{Zv7R@UlDx$oqkth7?!QQnRaD9gIzOo X#<}eBH=FH>7=Xaj)z4*}Q$iB}!Yv!w delta 115 zcmYeC$T&eISF*%4q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1B0=ri(^Q| zt)w6S|JySQGYdF$=tgh*lV0)Z$;tY*`v3p_rYEJOxJ+AW#<-=ok?|@k10x%Q`YvH^ TztTBLKq{Nw+BduHaQ9R&{$)wk)#@B72vd2tTI?Y37;44dxdL^QqF R@Ph#eJYD@<);T3K0RSgY8dLxP delta 109 zcma#_$aC)NM} diff --git a/AppKit/Themes/Aristo/Resources/combobox-bezel-disabled-left.png b/AppKit/Themes/Aristo/Resources/combobox-bezel-disabled-left.png index 5cd37245fc3f3f5fd0bddfc262528d1145e322d3..d2be9689bd919493c6020cab2a1d183a540e6d99 100644 GIT binary patch delta 114 zcmV-&0FD2|0gnNYBx_blL_t(|+U?RI4uCKWg<%vYCz;}Il{)|l>5|II_N^edIuHn& z{HC9M3xKqTKtyY_MaKxG)(R292u)St?i1Y4xEbPp_zpBPOQA3`F3eW4N9T)6?Ds@C Us0$;z`Tzg`07*qoM6N<$f&;2C00000 delta 168 zcmV;Z09XHy0mK22B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001H zNklD6bpi3mn%E~fu za<WAqo;?WMss&93)7db4Mj;Ao2R&zkgUI=DvCJh5;mrEg_Y(19221^->~0fB^v0 WLLYm(X8;=j0000^5h$ey&ghRp7cGh+iW6IW~*j>8$U3R-WneW?~HcAKqkwii8 zBR)XA^+p<m3(Lla=L(MT}-CdwSOmoYsAQ~Lt~IAWU^~u zBc3xE@VG5D5->>w5J}dX0S&+t0*pkwhY*Q=0iO(nO2jz>oDBd1`j3x9ER)F>JT;o| z@K|SX=iT*S9{eGZl#D}FQ+@kORV&l=z!^Bj!C+blvE&M<8|$78<)Y%uOLX0DAI@X4 zVcL+FbC6w4(SMiaOd4{sOy@&;@Pj_JKvPTf@GZ3nx?#;{a*$gzHW4c2QlP{CRR>Oo zgyDEfHJ-Z;gje!ndJ)gz?*Sjs@hTF5p_nh4ZG*1skcchcF%tFrAE6lyKL<;Iw>4F{ z@&q{Es~nyk?1tuaf9K?=wtbnB60KQ@?m1C+cy$$D=og>eHx?BAFUvL;Qvd(}07*qo IM6N<$g7!tfk^lez delta 462 zcmV;<0Wto!1Lp&fBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz ziAh93RCwClR?SYsFbsCmZtI4`Pigl98!hTCL)>^SB#xYT9iD&_F9CPP1q}(bmI-M; zZI*;I(tx#{HntQAQn?4a_Gf>tlOWDHR1AhT}(J;C;iu$EnGsBr) zk6%ZP>c#*OA+^`Oe=&|^%=1s+yKax0w!JYxOakT%{NOD(b?WTdy%T(3`Y=xK`sWyAJ^d0MD>XMO~ZPC;$Ke07*qoM6N<$ Ef(P);=Kufz diff --git a/AppKit/Themes/Aristo/Resources/combobox-bezel-focused-center.png b/AppKit/Themes/Aristo/Resources/combobox-bezel-focused-center.png index 17a75070752ccef9b2b099c0d071a86e5c7e01db..3bf8be6a209914f145f4c4a563b9efbeabeffda5 100644 GIT binary patch delta 84 zcmV-a0IUC^0dkNePB}?LK~xAGW2jnt+nfPNENAH0`QkrA%hE&t84g`}`k&!H5YUh~ q`{2`mhW3@m|3mBrx?ly!85RJaA85l8@}hYF0000 z@jM2oN|0bxaXJNJ0vT;~O_WdeOA;-lw`HM?WSmP+n_YFu{WWBbbEe_`p$2#9Nek}unKJcp+%P)ZbnN+tkt2M{k{ jKuWtjP-8)Mnic>6IjZ>!+m6r#00000NkvXXu0mjfBgTXL delta 356 zcmV-q0h|7~0{;S#B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0003Y zNklAe^SaQwcg0PV|(N9i6_JIPl~C(VpN$Ky*2-P)DbS2hiVd z11A)*K>#9(u<3y(g%x(Td?QQyxe{y7FM(A8ss&aEtpBUJVs*KH*@3l}uM6{6A}8k7 z8Yr{809_bchFvdWSe7N^M$GP>-nmLvd=d}2)*}o$!DKv2Z$2iGaN>UPy|^@@F<0%K z1Y66NWW+OZMe>ENkl_6vcltoh1E}mL#<`+Lek}gl<|au0#+) zsFW7L`Uh8nI~Q*K5^nqmA|kjG^gFmLXlWN(Ft!y<+O&yz?`7_|$Sacf8ZBhJa5rz> z+%t2}J;PB?-)vmQPeeci*aPZ73$O-w;-R<$egRv+8n6m{0e|XdEI)eN(+v<2qIR?u zgyD1G9k6Z=zJ2soAC+lli&ObrHv2dT!>_=OAv?hAg|mHEZ-tTG*xbptYL$Bav}W0H=UqBO-`%{WnM{tTy1#@s}YWW1I*g;)Mj~ z97_Fx1nAtr`hNpRhOr`8vEIhip}GM?1ncPrBCaF3E&yw>o;c_Xi%Yi1Vy&MRIT4gf zw#dqn06(i$Uc7uo5Co~UTrS6h`*$f7izyD0p{=#Ft)y~te4K|XOQ{oSt$B3s789jX zYL9g;Ndfw>MagUiAt%aHEL^+NwPEr4RSFYjnn9S_BYz?(lC_OVJ}Rq?7W4C$n3+Bg zz}(D5X6NRpHCjjhFXBi{X>Se=W4pS~%F+Vn?R%DQ-k?&g|3zpjS^s!bRH-$&v%JXX z@3qb;d+I=^l`Pi&Q)t!->y;nJ5Sr?tWN$)KJ>DYg>n&1gC5zAJx|<&dV4SxWsZJ^- zfR0^8WNU`T%0xEPcX_QeHf-ZmrXeDuv4v@x$wCoZ-|ZWq?VPBATr*cVP1KIIV}G=3 zM#|H^Y>O6=eAJG%V_&oi)J^?h|Mh=zcAG%U0M9&n(`M{V_YS@3Z~A1D5EvYD%pAheX0g7pJWf;SId{U^Nm zCx}SFo1p)L$AXsa!4_QmLCv;lH{B#VGrmbuVUt~5$oSwF$bXy6`^~(0Z}MZWK5X9x zJr*EZh!cc^Xd^ho$4d>tCE^^hhuA`FB6buJ8#l)uXxae?At2}kd!FyV!PifSIy?LM zRa<-@dACrSHjP5z1(N(g-vNU{4(4uN%N)J!2XuS)z-%`gjyZMRLV_x~zp&9E0wa}j zW`Yq+&(+)z)PKKinUqrHx~$wxwhb$6{#kA{&)>0%H`A?jwzBU zf;dG%)G&Npt91YNDq)#VnYc$g5F5`x!Sw+z;P@+Ivr-hzMG1$X2pP=Zj0c Y00LkxOsRVK-v9sr07*qoM6N<$g1(h9ivR!s delta 181 zcmV;m080Op0nq`FB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001U zNkl44$Qn>W9D_UzgJ z-@kwVXF}5<3Iq%+EG!J@5@10PU}C@lMkVMe@%q=VUsxsP-Y&d(li}yjpA6`Uq5k2+ jhipI`#YnxB2oPWZ6Ouio3yTRv00000NkvXXu0mjf1z%5* diff --git a/AppKit/Themes/Aristo/Resources/combobox-bezel-no-border-center.png b/AppKit/Themes/Aristo/Resources/combobox-bezel-no-border-center.png index 0d654e92e89fd4d96dad68dc34fb408cbe865124..d2db3744420692692dc428cef17aef4f4a93ffa2 100644 GIT binary patch delta 64 zcmeBWjGLfhrRwS87{U>q{Nw+BduHaQ8+$50*S9VApZ|}&Fw^hN{r&Q1oQfD3@-(v- UK3TtdDFYCAy85}Sb4q9e0DL+d4gdfE delta 111 zcma#+Wt^arDOutgQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfkEHX#WAGf zR??6E|LvKDnFSm=bfdTZNw4_zgTe~DWM4fq{Nw+BduHaQ9R&{$)wk)#@B71EnCW+CS1I=yry@p%Ex&Tg TnvN^VFaUw4tDnm{r-UW|SBe>n delta 111 zcma#+Wt^arDOutgQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfkEHX#WAGf zR??6E|LvKDnFSm=y2bVXrT_T!^mIMjf+O`RoU;VB=ig6Da42PTXkcV0nk>TZTC?Xo PP%DF{tDnm{r-UW|7uP9! diff --git a/AppKit/Themes/Aristo/Resources/combobox-bezel-no-border-disabled-left.png b/AppKit/Themes/Aristo/Resources/combobox-bezel-no-border-disabled-left.png index dc9d6ac337bbf0746540790750376dfa6172f9ec..2e4b4cffb71828728e525c5de702206d9ed4a8de 100644 GIT binary patch delta 142 zcmV;90CE4*0jdFzB!6*9L_t(|+O5*78h{`SfKijr4{yf(_70OqgE?&?WuJz>?1Y7F zL&RktK`FIUl7a_ltwkvXYppl~wAOHp@q&AZ^Fm|HHDiFamI=0SVvI~k wDKR1E%mg|s^xl^s0N{OEf}N7o@#80+_uD$47Tq9700000Ne4wvM6N<$f)Nlu#Q*>R delta 183 zcmV;o07(C;0n-7HB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001W zNkliUcDgV;3hUXP&62D5?%1h?S9% zVc_84z_3FIBnZ@rDghDzVd9+&Q%y@9^st;B{vb=oyMO=wVKCLP_``<}44|}z9_M9m l-@au8;#fxNr9^-L0{}Ap9KJi4s2>0T002ovPDHLkV1kzMOLhPN diff --git a/AppKit/Themes/Aristo/Resources/combobox-bezel-no-border-disabled-right.png b/AppKit/Themes/Aristo/Resources/combobox-bezel-no-border-disabled-right.png index 811bbcd91911a3aecd3a463ddaa5201b50f8d347..b45c2e146d434cd61a636e67f4f9edadc85142c8 100644 GIT binary patch delta 284 zcmV+%0ptFN1GfT@B!B)%L_t(|+U?d$3W7i!$MI?*K}V={bb%J#q)iuT(b|?>N%OJv z{W?I=VzPy}(|^AKp%y}lPGB_fMaIQ^z!}jI5ee-F0L!wd>W)rG>J`YcjCg69Qj#QO z+qT>*K-DPAlJY#~022Vb5C9|$;KOm8fdj7V4jk}2@B4tFD1S}r2AHO~LJveWJl}A1i`00*cpa#0&l2iVg02rY|% z$qwX$cQmm8RK0!p@Bze}L)F6W_U+pYXswD`YFfZJ+Oi`A00ImEK=#7Zco`Z*00000 LNkvXXu0mjfqqL~( diff --git a/AppKit/Themes/Aristo/Resources/combobox-bezel-no-border-focused-center.png b/AppKit/Themes/Aristo/Resources/combobox-bezel-no-border-focused-center.png index 17a75070752ccef9b2b099c0d071a86e5c7e01db..3bf8be6a209914f145f4c4a563b9efbeabeffda5 100644 GIT binary patch delta 84 zcmV-a0IUC^0dkNePB}?LK~xAGW2jnt+nfPNENAH0`QkrA%hE&t84g`}`k&!H5YUh~ q`{2`mhW3@m|3mBrx?ly!85RJaA85l8@}hYF0000X$B!BWrL_t(2Q)B4Z`GTQp?QLct<_2O(Al3k4W0;^I5E}w z@jM2oN|0bxaXJNJ0vT;~O_WdeOe+{{Pk$C;qoAJp`7}1mbp(N|0dp zx-u!IE=uYgIMx&QG$2!FsNR)Qs#9sYmz!6yu0N)&=hCIE2<5HDarO1nHzV?lPB001(v W`Me&R$<_b>00{s|MNUMnLSTYR4S%Nq delta 346 zcmV-g0j2({0`&rrB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0003O zNklBdcQAw@xI zcd56gNv8gjCV^732zZz;g!9dr!!So&-;FW-{MZ0cAx*MHYJVzCy2JrFAw9CM(w#1O z;TdzOm2OKZq0-X6XS^#T;yvrXAd2U?=xL>xe1kCxr`>iUs-)%0-OjV)L!2M&Kr*Sx zCeo-?42+VAa3Pjo!L|I FKfQ6x|-M1c_Hk18v&%l%6aQM&oMSo~EHlAo-{ER6Y* zi{xp)$=F&8DN{8D&y&2uC&Ms`-cjAf*VM=TV3>=?U>@8AR!(fA1F_vrj+&7Xxutw1 sZW3FnS#QJ~Q&;umdXWb=EWZK_0FyUQiZ}SW}au z7zBa3LdX7qPSuJPNJSVPWK!#3bO}T}XhB+Z=*Kb3*LP$VHiJ-h_D~N#haK4WnfGRw zd7k7!D$RcfCl5yPTlAfrlb#uKk(*e-D< zVL1X3_4cb>V1kHL!ByvtQoHAtAon)~>3<-oxGdQFDPW9^gEIjl0A2u%BGwn2Rxlrr z$194Wd`qsX>VF`SNHD~lj210LqtT{a5R1hcSYI5wMH#dD>lu_vr4>!n9(i(I*SqC% zd6}3So0T!yjn1Y);Fmd@ ZegX44h)GFy`sM%t002ovPDHLkV1l4A#y9`~ delta 591 zcmV-V0Qtup9Ap? zAifO551ta<>EVEq|!5$hY9nn_F-WBQqNV z8;`go0~=c|(2^%Wp_dd}V5hGPX8id5m*L|5R}4SDykubImy-ZmpaB#<4aCnVvcOhb z3KGMA{xNWHa55Y^cb$QWi3ubm3B+6s6app~gO!Defs2C;S&kDVOf?I@alpt3BH&yG zDgY)18UqXq7=LMP0R!zVpspWSh%w(o^f{b;`0#U_hS}QM5@7)jU}t9s%6KP$m>-KY zsDL#4|Ns9jvg6>;p+jGaii)l?TC}ybUx7G=hKA39{6=V*MSq=S%ErdFw4tG4zJYcOGSjiKXGyK=1G$#fhwauXk|r;1w`coP=vOTmk+Rj9j_(Hu9LAuGX2V;|5UZ$ z&)@&xY7;3AzC)Wbl$Ay29)5<`$>;6?lQ%OfxOD+-!hECHf?X%CB6vW<897B5e*O9V z0@^M78Vv%37}D6LE@bY(m~K4#Oa`-QA5mfd^+C! z{{0)Pj>Y%y-)H#q=MMvVVkmp|>=`2v$1+kcB?1745*(CHP!1Zz00000NkvXXu0mjf Dguy-@ delta 192 zcmV;x06+h+0o(zQB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001f zNklwmfv7kHjGae?pqd<8)e z90$<)c1Yu`$Q4~K6!zeMX&lM1Ns;X9B1)8S4 zVE%S+iJ~a_u?I<#JV=t%(&mbyycR`qe^L+PI6l^7(KOAaEX!|}Wj*0q7+XMGA& delta 387 zcmV-}0et@10-XbpBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zKS@MERCwBA{Qv(y11$j)1C0UAEnwNQWeY5f-UIPsATIUs@%cqH3yh46z>II-z6m~l z{5TIte+P0asOE+LQ1JWr@Bc4fzWfjL(OXc&Qwzi6fQ5yHL4Qa{2*ebkStNrjVPs?+ z;>mQ>2N?N)7z+*`K1`Hhwzjr}Ex-lr?Cdmv)CnNw$0Gd^h|PfM{ubFmbm-8bFGWQ~ zSJ35|n3(>TmzQ4x%73LalAidkKy+FUlik4znB^1?=RIbb_@Pe4`Z;Ecgo%q!z~T0XXciD17zm6+_>|$qemXJs21y4wA=Z35E~;V8LP{A`Hpl z0a(kI)W{&PJT`qq`{3KpUkoA=(hNS%b|@PB-5ePN#U#PW(c0u&(*DnS(7N+l*H5wK0FJQ)d_3SBww5Z@7j7B>7`neMn3Z_zg

vnC`1J=fkQWi~|^W{_ZnFcz_QB>((6%K|US~Pv3pQ zpNjsGk&2#w{KgOw=*MvX)q4g|*@ZV1VI)(q5B?EI+i(9EZasZNWZgEwt$O+ s{kycN&;co7p$KGg#?h7?Apj6y0A;0S-Xs2KN&o-=07*qoM6N<$f|KdwH~;_u diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-center.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-center.png index 73f7c1e34d2f0c50efa8719b9b95947d9c35987d..405b711f749bbf80bc3dd8f25907eb3342b944e7 100644 GIT binary patch delta 8 PcmbQtm^VRXqNf)C4JrcL delta 43 ycmd0s%s4?sNwUN>q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU9?XMPC3$ba8)0ISDDGa8}P=l}o!07*qoM6N<$f)q?6MF0Q* delta 128 zcmV-`0Du2S-4DNKGTr&`i-GCizyBcO9|O~05CLKR1#|zxSV&xi*k7m)G{tB} ifsMa;PdZazZhUDK>|l#K6}dW t>nBL?KRA##zkT(b1&GanI`{wr3;^3Voj1L3v*!Q+002ovPDHLkV1oA3I2ix{ diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-disabled-right.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-disabled-right.png index d3366babc3a92b5ccd8b9b41a1e834999c7e0e76..119a99c2f809d7fdbcded9d53017c3f1b0f55bdc 100644 GIT binary patch delta 189 zcmV;u07CzT0@(qOB!8euL_t&-)0K}q3c^qjMbDGhTF1S(LwAr}Xd$?Qh!%DhqBdH@ zfJM+k@|pWA{19V6obqty-WfLxx@XtmFrt#D5%-|92X`6Fzs7z{;q)GaKb}v{3Ao(9&{>OfRSKBv j^=ctP6S54M+yoc^EHR_##N}Z}00000NkvXXu0mjfolazW diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-highlighted-center.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-highlighted-center.png index 1c064ca45bfd811bfbb7cf85b2bc786e0a1cf94c..d9fd2f72a0ea4c5fb8dae627d8311054cc498608 100644 GIT binary patch delta 8 PcmbQlm^(pbqNgVS4I2X3 delta 43 ycmd0u#5h4kNwUN>q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU9?XMIQi0j}L4B diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-highlighted-left.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-highlighted-left.png index 0b0ab90cdc416cba534ab847e604cd1596c0711f..1136e68029c900f58fb8aed91bda5a0dc2367032 100644 GIT binary patch delta 9 Qcmeyyc#&~}%0$n#02Iaq1poj5 delta 44 zcmcb}_>FObijriBYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK5+iHaKlX(SMt diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-highlighted-right.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-highlighted-right.png index eaa4a61c7fac5cd90f65fd6cf3dcb3041a1d3870..78ad51701975d8698e12af2798c509cd85202aa9 100644 GIT binary patch delta 9 Qcmey%c!P0*%0$mC02Mt18UO$Q delta 44 zcmcb?_?K~lijriBYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK5+iHh3+YlRT5 diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-left.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-left.png index fead58088616492e8c0996a1705f1208b0824705..51b6aa0a2a1876b818662e475da27d5838f5c71d 100644 GIT binary patch delta 9 QcmZoXadijriBYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK5+iHbV_YupgA diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-center.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-center.png index 1d540df8e1891cf7b99e6eb933f85b96d994c23d..e0a9fb5c0bc2115f8680db0d6f36382a69960ab5 100644 GIT binary patch delta 86 zcmV-c0IC0w2y~DnP&-LPK~xA^V`2zyC}X-ix4M(*&WB$NO#lA<2NC}mnErwY2^c!QR$1d0oSnyqLV%Y>1+_ z;l-Q(fb1lm6~Uc_c@i(X`41?b23EnBuAL%d2Ls9beqX+y&-eHK+UoM;)f-m@L71$r z;5t7q@po$cGXKsUy*TE_byjJzb=qM)CniG4qiq7JfwM{K#PN3Te<1UMFxK%KP1da4 zFDpw8U@k4n^R5mUypFgSDtky8g;uOxE{S8}8ng zYk1;JUoHQ3EGb08}5;yiE=F<>lj82>GFiYf-o~95)wb~hRm<$WWOD3mIBqIsR zL6GG&uufQ={0ZY+>!h(85xGthx)Zy+ADx*InAh%NN0}jy#=IN*yeZB$rtVHaLRQ6= z$p1*5@0k!4Aws$ebp>iggbV}?jBU*>mF&ERl@Z5zSba$|R3mR!R9iy`+a)fPin@mK zhFvad+6Y?>6Xt|28Ts|O-yybgA=WI%#9=gUP`W*ufVD1VH0ja^l-CQO=D2>C=~;VD zv&AI#9}v%uX#fWGHT`q^!~8#a!!jysYC%y|T)@SOIK+DYQ!|+dBWJ_$*RYJP_ylI+ z+30iSY{@@~^OJ+AkF(FeAN8jn)~}31VdIm1^X<#`gB`6_R`Khl*3;ikS4G(X diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-disabled-center.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-disabled-center.png index f651063a9dcccb502af2f08c42d34f3e7bbc6f8a..77061dfc9ee830e0e2ab9a60ddc37f1d6060bc2a 100644 GIT binary patch delta 87 zcmeC@D4n1ZXyfVP7{U>qob*BKYT~aQ`yLxzK0d!*a>l>^=?p?V{~dJ{4l+DziunKU r@DT$JHXg&4q!z{i=f;@DPolyZcr~mQHZ(@RVgLe9S3j3^P67 literal 1039 zcmbVLJ#5oJ6n0gqf6}~OZL5Ye&6^0A1y83n3|lK6a-|%^3Bq{CYqnUc zep7d-FWIS$l=vY>3qq-!gtoIr7-*AKFEGTtm#;+NxrTT!N7#A8RB73t@;wE(1?J%1Tzj)AyAQo zvN=uDt^x%jC__a?N(O0qR?#5@!$;)aBDbSAur>6>HACz&7V5Ix>-D5wR-)0WjEco# z%AqJ3Zjp(%0%j+fAf6pDU=ll#7c!3qAZ4`Mbb}cpkMuAFKdje}h=X`oC|)u-u|pY2 zQ1<;auYq;U8stwH$6CkDt&qqK64Q;y;r-~$j=;QjCp$_Fc{KX1$m311*D-ZAd=ju4 zHbnkMay?gvr~nbta!^yCT0p3XU=d?WwM^5>s#qCu9Ea8BHJmq9t(vn`gs^3D!7OMh z$`-9kK~+cCS`afkaLCB7$Ndhm>WNsr5)qrxs7dMiXabhHl+n0LLr_`HgSzc_L8_Z^Ol_=nkl@`e>uQFD1Em&18nsER|Z`#&|4c`$N19DfbV=!#EZ zDjtnKSB{p41bky6z8d{6(`Wcvm222+CcEvGuUB^LgMbM3Ly z6Y%_-pFb|mJuu4^YjXdOXKz1BaBy%iiwW`>gS?Lq zGcmem|0xc3ep)bb$&#n9-|r&mBv4Q(ONl&NT#@kAx1zu8{im93hR1xBlMHnDNa>MV2qRb@p)sRk`0lKN$e?AtP!Y zSa!}piOK(art`l3_(eH?>MEYq2hXxkDv0w{l@Yh$U}Y8J=44mI&;Zp0DpI5$zkV;a oXx9n0EhjFs0S#fi`|LF{0Nj~Vj(dgLKL7v#07*qoM6N<$f(Al!6#xJL literal 1451 zcmbVMeM}o=7{6H^4ngYJjKdkvBik~v_U`&go7SfEs8lI5r5o)w9oP2yA#JZ-4>?fe zOXBDt2ImJPWGKVT37_-sgSa z=l6TQuhCTST557eG5`RnhCIy7tts65!qZ#1?}%vk+uX8?&b87-q>C=cDFV$8nXaG=Ym>}*bC1}u2xV-^2bpP7{ z2=qGDP_fjA7=t>(RT)S3wn{9tzDScZub9GhX~IdV*@m5FmDdKrphdMzhtv*j{WtkCPS zWwHd;5D3wDz(FMJdO5r6SkYs#N*zVuG)Y-V(wFD}lZT|qkcSL{x*{oP#2wy1d>=2* zTC^BJdEX_RdW!UetNB%WH?fb1{}VT&Lv=EVR3wpLQYbfSSyT#AHm1gM?!nWC&QBC`)x<|F|y=flMl zQ!hUk9?Xcbe~k_eMZR9?u%?olD%|154}pgxL!_qF*4p;u@oPX+w%)$89yrN|_eJ_N z)tZ`letp}ysXc7f^23$A!_V81bVM5KU${46=#+jqx$C>jzrEQX9qkx6*7!@wSs}ak z>diZ&pCuK3Q3rj@ciHJHv7+7gmd};k`D9Pwv4LB;V_Qw8{ckj?jvQ@yFmb+fU}oh^ z-}K-%ev<2nmZn}?^-ZIM9LZ{0ikio5^UE_ItuTJTEx+E=*Z9Zh=da1Ts!w>@Z@eEJ zi740@%X675!^5}RYqy_d7xJg8R%TC7vGIed?zB@xhlM}gos}7g3|`Lq;mW1n<6mt# zyUo&-r}<#zE#KANbl;JJqb^>?_sqg%sjCLy0Z~n;zO&qPF#h{A<-3np)ucs#5v^h4k@I^3t@Yot{3Alc!xwMXJ$wE3Zh)2E3xYO$|M}}dVD+R) zyE<~;GP-8}U}31d$#5F8)4Z20=)=ff-ao~%E0?bez(MKSjn zd0n%9;LJexp1;~)pVyZ3^39u7K*bM%ieJHF9Av?l??3MT{Qc*{lUMJ~Z#aDR@aL~z z9~_%l`rTAr{vo4F<|~vu&ETBjqAn}`SCEJ6zpbvy?`UVU-}=fjZ-H`8fr>GT8vw^p VR(N6iv_${_002ovPDHLkV1il;l8FES literal 1474 zcmbVMdrTX396tt3We`R-GGS(%MbUut9(|wGQhL-iS)nPYnCZr~J?H_w>#oOIo*m*g zrc->zJ+k38qkl+%O*b850|#y>!j>T<&M`)!0z>4L@EWvUfub>Fe|X8=@B91xzMs$c zeTNKbFNTFghX4Q&rrVAi`8AY(AAfW`|LsDb$m5qNE;WnGU~)Jo!IFU5!k9=33je#wH|uIzpGt&Z7Y!N#(K==6sR^O=K=bD+Obhngt+b zQ3_s>=wZEGLt3fr#VnaooR(=W&NnM80@Vv(k_+PrY$Qj3E?WWZz+6hf5--NfzGFxL zE~#+&O2M*IS$YGgVOSEB2;oFCEQLWSB1A-DnN0Q^h{6aA!6<~FiHHmnp%@H#abzX;94~=sO2&#B2s8Ia;emh z)zJ=)pv|P;F2&nj!6FaEVj7ktIEKw+m;!$X7_1D(IIN5v)MQ9NJz=J3-`-cA5vVEO`BSq2W8u?92v~Qs5rwAvg6%hRbbr0;#f@U z4R`1V$KEpblw4xbefQfUqCJ5h-)rf2dr8Clk?BPCEELf8T5{;uQNMvnv;FS4vySeB zt+?wVnOxc=ZD{~v(v$b@JAvE`O8eZM9AIjwJaypsf!ZVT4edcDAV&7dwAbyOtLkm( zx>`Fv-MvM6TG9ZE9xGj#t~_cD%P#bKMX1_(b@oQTyC$ee9(Cx#z|=P};U7J<-y0Db z4lYdgUH>xg*6HS|-iC?xIb}uf{Mf6Wh=I=zLU(IRrsqfdfP~9if)>XY2kRfH==m^i z^nQC;$I!9G%KZV=#h;FkO2)ivSucS_EAem=i5|Bubz z-!XHY^A)1Nz7kJfW!bKsw>o6Z%K?$9p!o9O>OJoT@4n*w_QBLlO?djQ%g;9tjQ`SF z(_CI=FE9-|GYaPp9u^+0H%y8v9S7cStexGh-d5+m&=}u*=0s=tNJ2+b@Q=#i_-oJ7 cz`9W2_nDLNFD?EW?fa|hQq%CdlcQW8oUL8Mk9j(usY);?oji5rQ5 zZU`8d5dQ&UK;1xMU_(MG%+P;=ffWhPXY!;^`MOV?#eL4Yr{s%9&XvH z!!O+ci?PNCJWMSRd)t1b#X3LY)tH=Ii#!;a&@G)m3aVXS1!WRqkQZRahB5>)5>Pg$ zD9SY;K?Fr8iAc&IMaxPWgkb#e%veKAev`;-QnC=Lb#VUQI_xG5r4RTBeoX8~<3h2LiLn)kNPwc} zC3%gkBih7&!Z^`7YV8JCY~qOQgf{C(Zy^P<+MVtwF=Wwbw?daS#o9KAz2jk@Rt=qJ ze+0*MG>8fiAteVD3Cab8R0LJSFlDn?G_$fHr5q<=m69SA^ChX0Gi8Jfv&e*EL6K2b zHOmEAPO()#qLy#t)UV6@jBqWILUJ)jpvl>XQJJ*Ycol*{+}HNqdg6 zHE`%Yz>XOb4~*)oxhMFC*?;neWmJ}Pc`27O@tFVNe*OHb_V(VxPN&;-&YrK$F3)xm zdNc)|ynH_W5l>z?s0G5shH$`{=DXX=mwvpyys^hkOmZu)riXXtpPoxLwOVNyZ%UoL E-y3{EqyPW_ diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-highlighted-left.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-highlighted-left.png index 4a292a1b5dd748d86976c8c0a9080c297f11b11b..cfd89cf7cc4703a37a507c55579e295f53104cec 100644 GIT binary patch delta 482 zcmV<80UiFc3ylPjBPapXNkl^8kgqpB#c&P$-noBKLGBI}dKzlF#A)!!tIdoG&Xg1r zkt9k3hiA^j#@yr-E=~?EqBJnOWzU*enUl-}1jK1@&z&*3Dkqg_4P1W3{cZWlsazcF z+(c=Rk8iAq^>xcol$MYuN`qs?v=A|Ii98Q0V_Tv$%-wZLK7GoX;^~!{>1-@4Yy>p` z0gHcC>C_}mRh2|XV;u`(G%)PBct^>vd0|Fzw6CA0f{Z#r4M4!$w)%im?b6-8o!L== zGGf9qgfxHvclON9?lX3rvTsNZ_EeLTR3)SV1O!`FAFym$bI>8d%ih|_NXwED2=HkD z0p6>RUuncoT5o#(-gC8BcWXU;6**;YPIfNbr3Mf%1F`h!J5ObLHXf5daqEfPmmj}4 Y0iBV;oe7D-hUUx+Y_L#mf1l}m0=WU=UR4K_>%Iyp*7)TWYZbY<=R$_PxhU0Px zCMPgi3XUsqOhJ-*nO>vOi)AF?=hz4<-ytV7QjJb0(aUh0)N6pCNs-HNu|ls+k;(j6 z1M3th*24Jh+JN0PEcsBZQp+=x!0{%IEA@9kwv`h&r3?6Mo0K_TOcT4+CXYd?#t$7uU8$I)^CmJ3T_wn=7-hwz2w+_5K27Q zJ34_+Oqd$8^WKe^p^GiwkM>(52R662C54nf{&J`B#mMXQ^>6MkpP#=u!R-$_;}y4B z3wz!!G8fW=hi{i1;6EdzRo>I)%c@7@L+i#;)UdHlk!KXtSe#wF+z=3=Am z)8k2ty<;JZLV4PQrAK<|!cTdw#ZFF6wsjg0nY=jRyp~-*+JECnduw+WofMb&;ScH1 z9_f6UvmjaaN)?g zdQGhP{miWHD>YN+T57!2;UCBSJUn;u*jLL(Bi`eVZyPkE&vzt#_xi=#uVg&tsajl2 zh`{h)E?}P1H%_H~670HqguxQhK7cK zr^RxK1b%dZ<09@v4Gm?g3-accvk`gfxBZ@!i5`;8iO LS!CCa!hL@OpO+!U diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-highlighted-right.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-highlighted-right.png index 3ec6dddcd665237ba81e3fecb1dc042bf9425b54..2f4e36e0e036dbb93971aab46dbc3dfd0867ff6f 100644 GIT binary patch delta 486 zcmV|FT;m#KN%js{lXwFA*Gxa5r1eC;p1AvXdRu2rh$n8 z9sl_KkKyCb|J;t2=BAO}E(we_G5&B3j7*FSxbQomjfQ$UIzUbkqivib#0DlN27LHG zGb>kqe1sJn8(SDu10w?=EF&weqOK%w!|0GC$HWYDGcnjyPg|ako7;wSXhLC zkx`k6i5VzB1SJ*};N$=K_n!!m4YZO7%+1Nc@%!(8PNJOz!ocADN3@3DfB*iI@dP3Y zhl%DnqMUT;_Jflh1sZ=$N=_19hN3Eek8s2-gYNzuU-$@ z%|R(_s|1zsA(4nqNBl#A%EuHK&MpMffjGmAlE~L!vKVA`IL9X2dS1th#t{DSlDqeL z-}m|bp6}bX+EFE)vv3XsK~h^a=@i!@@m(;hQ2h2N7r!PhPxBTxzlQbmQHleQiDtb3 zwgssGZ~}_1fBhUNhoBjL#^vVS_Em(B4JxRdjv^Kei)aWcH^#!0Zyn%aF9p~GCW{^$s5~7?t zMr81m3ct=Ed*GDYz8W^O9Dp?nRPIA@6vi&)Vkm+t5lkt^w1i4YpeQ{3 z$V6)#?I)b1b=sD=GstRrK1?7;G#XVzRSK31AedgS&v7V~a#2GbsSoi~Odg6X%`=c7 z;^UYw&#)ml$4GhE^}InQdio%QVAyVdNF0hxCrV5i5~IQhra+NkFc;U9c7%6=f82Pa zcEnX528a_x*!7%GtcQPT9xUeW@rH7WqBleh$B0Ft>PXhNJ_tg*jWo!_8wJhK1d8cU z4AZJntrEp`7^cTiJxN+|tI1?l;iNLp@hGgeQcG$~8mmQZ#W9Sunnb~*)8d#)Z#C<1 zJdd@7B0LrHfxKNtv^$NpJQhosIY99&=VIBqdKZD3GbOnzg)3&?6pY{O zk}UGPvgyu%ur_loCHysfDRXK^Yp1^9-p&4H$1|k`=jB4Y@$AMTseO?n8wgN-kJn50 z(SYi^MS~L?#;;v1O**cejP>`l3+cUV zdx`w$%nj93O$$Cd@QJYGRie~3qoiedd?K43+L}mQzSw(Z&(6eM;{p4HV?x#5x|!!B zKh9_l_eED+E*jza&HG{NWu4`4A?)c&3aVq=t#p<9$dMz>CJm}AKCL|3`@-#&f8cM; zwQ*$^+!LFn@7-p;H8$Qm-|_@4$5y!9?xw`f7xy)9+ozLmDQKK93fU5hdak!H=sw54U;rl!51?T8d`I8ghscR(j zm&}~gS$VFFt=LpQIhg)FbG-HI*wN8DUoMZwg^qR@8EZV$nVnCc?d$f>I@k)IPLF)J x{q2$D-b24`=e4_&692*-39g3fSy2c{3L&56LX)rk{ZDg$T${x~eqQO>@;4NYL686d diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-left.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-left.png index 127c8965833a660f94d51c7add58cb1914fd014a..594e340e5ccc682e0d01acbd159dbe8fb3d470a8 100644 GIT binary patch delta 510 zcmV%c@2rNRe1D=faC+ypcNAsh5bY%SsLGNkKd&r#DRD)jG&mOa1Ph2tjTuHRGr_Tv}#hc9160D~Q>`)l~P%m4rY07*qoM6N<$g47!E A0ssI2 literal 1482 zcmbVMeM}Q)7(YS=PKxP}0TU9>V{Wq9`{;K&N-aGqowhn)v2Hp!u2<-wcjfM&RWlkS z*@lws4>qTZlPx1*AM!EXbVRgfV`g&-LWbQ8vzo;*laWHi1+Cb(iI6SPDTSF_d#>{dY_u1SPxN6%Ns1+o-2G4@$*#P`}3u&=6E;^m{3~mJ#79rrOOKkjTj( z0=u0CWQ)p%+q`C`#$CFLXUcckE9hOdw9bhbi{L`P9uRmKk%Il6I#$s84ahvN9?0=y z41woW#99M#-zkS}Gi>H~23DcCjK8KN z0<7^)m%fa&EZ71&15zW3UOk5Sd_L5tKsmk|BXl}loI@^`0S%e3lNBkyj1}?|3?w7a zyxS|fITnsHQdL}oXh49c_e1b_ZMH>XR#-?BNEzm*ycmJvn8y>3YhGIr%b361c%ZgW zvD3?7WsJZz@HD80D?b4Sx%+QJaYf*beiQEoMWO0Qj&ATUtY{?-2)IF=Zl@k6v^YU% zl(s>AegioHKEX1%v!ZN zfwi)NNU=1NuZ9Tm{=G+ReuI@$%e{ zmSlK$BjdF2oCluIuipIt`?%sCapPvftX8VzN+qcxwI#>`*7<*Oh5=`=cys)%SrSK} z1LNXi>x0eW@GvZx7#@tq?6J?mR3+W9lBNp(<*K`}m@yeWlQX&|tuyoe1Ie#Hw6*Uk z2@4g7dmELt|2dny0Ol+e$ZF_omFm_KaO?Kqmn=6-QTy00rihZv}jDglEzW(9m-Pc0BJI0T! zJ%6ZE+j=_^4oYG%MMhWidvD(eg(Ak&LVe#&>4(kMwvOoJz7V&grEXPq&&Bc4Au5(j@zv>e-FgbYp`)t#yk|m0yx#=!lLFL4L zL+Tshf#}s`rrdQ!K4PTFk#(d0l}ks*QaeuhZ{1yavHMG0Fq@N0hXbkR3lp1OI>j73 z&F8o5Ino9jSN1|{gb(NgDbm@=YI^4P;f`RqOBNnHKQwgq@zv-PN$1dSSLA&5){24b zNZ}7{wePwD*RRlqCv%@xsaBV4wcD53lZuLxEP3BZ6w(bV`~Bvg-8WocC_<5so1)YE gqF=w$i$F;!(4#lG^wHk_zWCqOT4E=AiYxd02~9RA=Kufz diff --git a/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-right.png b/AppKit/Themes/Aristo/Resources/default-button-bezel-rounded-right.png index 72aa04c7261941af7f44b8c1452be9cd2bf7ef62..57f5cf301eb5925630cf9013882495119df6de34 100644 GIT binary patch delta 546 zcmV+-0^R-W3%Uf5BYy$`NklP-*KTUi-b z;$x;&15{{mS40Z+{sce*DcKAt7l}6My9q-4y3p!NBm(4~UU9 z{9{1JUw-~!c>9Y{z}-yGuOY@Wh2h_S8@PtQKn1w)%dfu~Om)=l8UFusWc06+#AyRE z{{5ecZ%RRQAO|ax8^ngcK+_0dDRBuy3r$69M&B|?pp*VG5W;_e*v3FhN06J{h$tIC zSdgDj3g|`!qJK5;a&ZZN|M^RVC?|n1D+@E{uV25ofi?gIh{QlAF%#{iZ{L6XWM^gi zO|%VfK74#9z{T+qZ%iZON6%io6c^xmPPCJboVjq<-9+m=QK5A4#;vRWeto~tkrsTD zpbhWdfBZ0i)rMm!Ubg#yN$CgP#P|F6@4sg*U%laNp?`O*GREg3-sJu6!^e*YPMkjT z`q|@^n>q@&flSAlyszB2b+c>Q?2Rlxzsx#4r+E#db@VHgEc*8ShxbpPzkGiD%=rt` z<}cZF^w_Z#GfR_~Z0Ro9!e|xw1ek#kS+usJclm;)D;96qyk+6HcQ0o3WQI+;zjo5% k6hFtqj2o5_uh0tt0Ph2`^I$x4&;S4c07*qoM6N<$f{-8*tpET3 literal 1516 zcmbVMeQXnD7{38)aBO2}M2FK}ZaPrb-bdTJ_FUI>y&Wu2oMpO6OtxElrDgQ4TyJYP z=e}6Lp2qBZNLYU$xItcxj5^@)%Gv;sX9{>3do?S9RqSdvXM{$M zgdouEFhXTID`NFpSeJWgy}+)lUr}nWueKW;kSQO`3y?B_hZPwx;91N0$bb==;w5D{ zehfq46hy2xLie01x0ZkwUSL6;8d2F19074ujcT+6LF9rMf+8@2!6>Fe2~vZR2m($& zkZetGI7u5tPur4rM#v?KUJ{1=e!tqUQS-uT7&RCSaSjYq$q1FNjuV-Hit}YB7%0|f z7u;Ua&2wO!k*VTqL?a}7dM^Zz*J`~_%=xAhC8rDyFkTo{Be2I4k829;6K(82Zafg} zE3Nagu#NTcHG*BPhci2&Ea&dwhT=fk8}cQ=Ef){9 z#hg!MI6IrL>z3^jg}6a$&|(kOB`pHWh`dnB^J^0wP~zf6-sj@Ipk<{Fv@&)#7vIOr zb1zzo72LI~gBExXIF(=0{Q&!j=09;G7Sw`kb(mI5=_q{>G_C9SKRJVCXW)2q{Hs|K zM{)Wo-YlvO_yRZ%kd}&v>iigs#ie?D{_X^UbDO zC#}e#6^iuvwBngpb2fzUbOv8LdgpAvYGIE$`BOvs#eI9{?PA7{!P2?z-)5|-lBDrd zdkS=GSh=DE`3Kp*ijNWQy%OMlw%?oboDqb+@R-*c%d z?c?2qLXCfOsLJyJhR!%Oc|g6;Lj?xIL*W z_iQlK82d#rSPM?Y5=`spJQjFf zed5ocYvI!d-w?NN%dNUyg*VQ0A1RY!cN;&~wh@+~p&98hJdA;q~{Hz7}jdv$*Ph7Z3{B%5Ucyugy-2@H)niv2778k9c_7+yQ{tfS(K#>3d diff --git a/AppKit/Themes/Aristo/Resources/horizontal-track-center.png b/AppKit/Themes/Aristo/Resources/horizontal-track-center.png index 67f2ec8b85626cd934166b3ec08ba92a6e00cc20..7b04fa4464bb97964c1d38d1d8d58532ba588006 100644 GIT binary patch delta 53 zcmXT(oFHky00ax)-*g620-i38Asn*F@6yjD>MmdKI;Vst E0G&e+1^@s6 delta 98 zcmeY)n;;p>#K6G7{Y>x#kdiEMjVKAuPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_( zR3zc);uyjqoBZzm`}A`sPbTVVX)!%+X<=dT@M1f=ZLXI%Pz{5ptDnm{r-UW|1uh_6 diff --git a/AppKit/Themes/Aristo/Resources/horizontal-track-disabled-center.png b/AppKit/Themes/Aristo/Resources/horizontal-track-disabled-center.png index fa421383b0b7990ef8f92b5a350eb5636921559e..6f6f35a3493cea49df598fc17052ba157da13bb6 100644 GIT binary patch delta 57 zcmZo-^qC-O%)-FHpx5gs0;GgJT^vI=WRu^`KRM^|=@=F_&V3AuKUrjaijG$Tr5QY3 L{an^LB{Ts5xFit4 delta 111 zcmeZiVw@nE$;QCI(9+U2A4o}-xJHx&=ckpFCl;kLIHu$$r7C#lCZ?wbr6#6S7M@JC z0V-1Qba4!+xRvzg{rmYRmn>Rz=zxl%;=uz)4j(>z;LFp~;%p5J%nTlj*jRe*K6V1C OXYh3Ob6Mw<&;$Uws4A`i diff --git a/AppKit/Themes/Aristo/Resources/horizontal-track-disabled-left.png b/AppKit/Themes/Aristo/Resources/horizontal-track-disabled-left.png index 370897e28cb5a0a096cd198c2fcb76214c2e24fd..48d9b0bc29ebbe6590884eb3c1a3da2be19c16b6 100644 GIT binary patch delta 89 zcmdnSm@`2#n1z9X;lz^G03c=T>Eal|A)CBX1^v!^mLRGYD_xOY#~2&kRG)78&qol`;+0C~P3RsaA1 delta 164 zcmd1V#yCN;o{fQlA!)7eZ6GCC;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B;{))5S5Q;#Sg{HETp3JbTucl$?AyH8C+UNl;A8k0Hr7E-sF3fdX^)gb5QS?bu<# zY;SMRtgWrhENpH4+g49ck4;Wa&LHjA&(F^n<=@{IEBE))Q*LGsW)=yCEal|A)EYe_RB}P`uTOUEpJcnpBUTZIB(~L>D`U3 t59RGAFfNhUcQ>)```?2fp1wNn%D{7vZ&}iveny~n22WQ%mvv4FO#obYCF=kH delta 167 zcmd1V$v8o>o{fQlA!)7eZ6GCC;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B;|7)5S5Q;#Sg|*RN;){Qmxay?y<^J%7HwzMiV1rKQEQzwU3+uRlLG|GT|C-!f7~ zMMa|S|G%>bjvhVAz~ZH2V`G!h2-IM(Ve{tu$v;0m(yMKJq(_%elF{r5}E*XJ4v|! diff --git a/AppKit/Themes/Aristo/Resources/horizontal-track-left.png b/AppKit/Themes/Aristo/Resources/horizontal-track-left.png index bf628c570fe0501b1acb39facf766664d155ebaa..8b70a44b24dea96ee6e4bde8e2765a8a2c7932ad 100644 GIT binary patch delta 89 zcmdnQm@`2#n1z9X;lz^G03c=T>Eal|A)CB%%CmXLo}E2(M#(1r#?m0Aj68+W-In8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?08~jtK~xAGW2~&Kl;-B1R0tho?EC-s@6WAYvluu1|Hbf`;q5`j uQ~!T6d}Mg}i}4ze@qytfMC8+s7wG_)Ivk<=H;JPF0000m0Aj68+W-In8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?098puK~xAGManS>z#t4j(d4v+9>&823SGN;0B;b`LC^$;M2an4`p3t| z5W>3O%_|k*-9c5M)_P%#am_iQ_YS2L$CT0stuPZ>MG+~u5(?6lAPNe#MG#a(EL4cq(wL->n9ih06DuJP@+8E(8zjg124*45 zIOD=iFMJ%%>$~@!d+xpai0Hpz50HzD{TxO(9ON*@VS>XXB!6_+;pgN29J1s*samZ* z;txiiMdI6qt?lo-J3BuJ5<2Yg3zH}%N8s4wg_q9FMCxauP@sCfPVIJ^27>`4ufq;M z;t-EKIr0&WMl-Sa=KYOiDm|=JD%9`ysn_dKx7(#orvnL{x5JOPN6!~8X|>uz$d@8V z?M7XfubgBO$$vq$TII=Ft(GL<#{>~(tEt!PwI~sI#K;fmbUM}Y=fFxnpQmQCsTjFj zj+R%~Kd4lyqgcHd`KZZcI|iyGMnf^MOXMLRJYwYI7K`N+!^VfTS`CM$7>H-$ z@gefTBSt=Hv)RtFEQ{cO2Fu3DZnvKSj~Mx3j(jQ_i+@qMT*g)vqf{zU^jmD`a5&C^ zM{?zBUqiiYHj4=q1M$ccRxVldrPuEw$z+m>#iC*)5(#?o>TO7Cz6g5h83 zbQ-r%7O7N<{A=r7m&m^t=?{N8HTadvjK+^|a9Ek~h?7 zG#+z0oqrc^&D@^<_~}cJVHm3v84Uflj^XbA; zY{kF28wds|91asCblBnN4$)yS7>)~Xi=tN%E5TOXZueD?c)i{`KA&$E5<2YgBTnR1 zlz-1rL$leeLl@vIa1S7%!w$dvdoKSIjiY~YK^`EX|K%sz10VEn&IKYF`*<7j00000 LNkvXXu0mjf;LS{o delta 852 zcmV-a1FQVJ1?mQnBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# z3`s;mRCwCdRZD9VQ52q6CNoLXOqztYDxnm?b|Z)gN*8WaXk7@Rf1xg1h~U3a1VJrI zMWq%B6}!JQ94~D;z_I z+ziFmbhEDN#;#l}FW;EBbVn4$s(pyrh61OwBo%hJIO&Mv&4T-%77*=!c6s*0-BDymc}s9Y{vUl_yxFc0gV zzM8!@I5_BO9MHgIS~zCTT^JiUJ#zAKFd&c~kB87SZO?>xy*G*3~KwW(VJ8FMVn!+t!>b_8b_h9?PR zUF$I5)&YnhT`m`A*Fzh)RWKUn5x9ityERy^={mwUpq-pM!L7csbvVx+~=#xUBu(i3l3E+As z&dp>pS;m#N{pI8Gye#I+t&M8h;Xns>S6`?CeVF($eD8&mZ5Sxm<2r zlB9~0^VWpwnM_8aX?lJ2`&aWg2$sA5M)M+4z-_=Ml@k6`@|VDH6|vpDiPPJ99Tj-n_@h&UFD zNlhS{M%!&-b^veobLbVr!^3`_=L1k+c7a%`!X_mW3B{)3pMHK2cA4)s1qiDcnY_x9j#Ybh#)JHko-D{yDzq?);j%J-hz# z$7g5fIp_KQp6C3|^E{)9+uy6ufib`vOafEEG`8Y z0TQ1i`8s#vo?wDZS_;C!0gwXnK%v+a84s7dnKI8)CC-7#U>*nqhd~kO0>1!hh~Fh~ zJqQJJWfz{q#YcmQU;)?$GJp-x<;ItkRo6-B=2kja-oTc99@jo(1*u>&m@7Nb{VhHY z%mSN07U(Oo_J2`E^ia?WdcITD%WrJi=W&iZ^NQNulI%1d1WI{5M#-O^4I)8h zaeF@{n;NLR%|Z8Hf29ih7bP4oX|hvlWs6p#8&Xz()_-O3@n8u!26}TWPsvbgrHbwW zGClp|7S7A9ZKIs}XDn`)AG`?ou=o_PR%%UWvCS)u&*^68he2{5bW!lmXqpkQoGtr9 z;@6rSJWpGFCRoF|Eba?7g6n`13e03|?!}LKH^}OUXqvNj8!gzd$7xq?j~Ws;Huca^ zW0fXeB!7p^m&N_S7ElW4;H5GufcW1m42z`2yY#dy>bTR+4~ZBOzYOu%9FrzqB8O}G z@RcK}jI!&y$w&fYc=9*kq?o#t(S8FJ_qM5QR-Gi{d z@#qB>W;{yM-pANe0?+;v!r2d0Z>SV|TYAGiKO* z9%C;xv;!IeyTs!;UvZx+U!p*;RsMda^lvF!@%0i9RJ=sWH`GgZ;V*3!3^sspvB5I# zFL_?7H&lg(w5g9AG+*GyR(v0cdnjLjBKmLq0o1(^p2!qPK>z>%07*qoM6N<$f@s{Z A-2eap delta 926 zcmV;P17ZAt2eSu|BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# zRY^oaR7l6Qm1{^;Q4q(M%m-zXMq~vd6crf=(wmYlL35ONWzK!%Vx1T2_iKgHvbKx8BD!hWIn zVq`hug@hy7NPiy*6?cq7PRk%nfMNk^Gx9F4MyYdR+&Nz*8bSMX(X zC-F7N5u}EK=kv5sg5s8J35tZRC*ome)Fr`g4v4Ud7o&J=zD^Xc=F7GEua(E>Q~6NGn1Ulr_uGbvW_+}06@Ezn7>+<&U($z^&-t201O>*zc*4oSK#2$PkH z(>$q~Tb`D;SxrWWFM0&3mY4s`g~EEs*7r%C7OQh!**60*xz&(Z{una!12$1=njirW zf!sM4Z>TTd&{suR$EaHxh{F}7H5g@~IOS;!6S6l{vbU7tggEsBIIXIJgz{!c(RRS~ zhkspyr7`&_UiwE^wztT2#R1xCCU(J?yc#%}s)l2i?+BL0_y$Ge6wa?AAJLWXvsin|n>=v7W0;5HU8YJh=2WOobK)y!-#j5B zzr5&@3xBL_FaMgO7jHv+T5hTMH)p#gV38s=&1`*hvf(bAaSupx+};AoMP(kG-5|bO z*gi+Jn)Pv+sg|ngBeo; z66a$$eXEC*iz!ca?AwF=I;npsf3~onw+7i9m13Auu_NC+pf^=~-D{}=Qi>^0b!Hsm zceY5KifknsB$}BdA-hRg9L?%MyzxJt=W4d9Fhq+)Fb!jQwe)!|eG@4W6`3(r&T$jX bgA4jMDf?$X`Yiv*00000NkvXXu0mjfcIRvp delta 791 zcmV+y1L*vK2CW8=BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU! z&q+i#u*nG>8up2g!rfL4CqR$Z(JX&d}Uyi>Bp!U+=hZ@BiKRzy6MzyAeH zgZLnEkUU78M{K4JvIW=-2ZbG*fT)B-^@6QecV4{z|LEf{|2N&*OW`8&{5c4HBPAXcs|HA*Rx8D6Z$vgj7U49A2vkqMO?;M@^Us~T1OoRBy@~h6={SVRy(ho8Ro8g>5tWZ2- z-G_yz9{pc>?in0AL}mV0a}E2i?VkjuZNk$~1H~-H* zb{CGl@>{?LTV*zbY4_YF6#3}~Z~V{dU;G}ZUmau)PM60uOgi1U`PBbu2XDeLh#ycr z8Ei0!#(yRc(udFG;4pWM&+9CkxAp&|z1N7wrE|CZcaF(!!58M>)WXWnVHs0D=|R<_mO@Hf-|8L!N8cc)uAaRg9P+bI2y$+!q z3NKrr-qQtQ7ZdOBexJPhOJUXhpCcQl{0Gq>K1duS4>eefP}zb~DneZX@~SD+5I-Oe zgwifhaTTaKqDn>d@|+jyDo`o_6|EXjS^+A~OKN$JttR4x<^x_R%}G*CG~_C104e)t VKM*|Qn6Cf;002ovPDHLkV1kEth0_24 diff --git a/AppKit/Themes/Aristo/Resources/popup-bezel-center.png b/AppKit/Themes/Aristo/Resources/popup-bezel-center.png index 07d887586041a94b48124f54bd00e5664cafd196..529a19257f776f53ca676c3d19f3490f2b6e02fa 100644 GIT binary patch delta 73 zcmZqTh?yYi%)-FHF!5-7Adph_ba4#fh)z!2ko>cL!c%VM)AelA>JwPf4_u7rnOMK# cRqrRp+-2hDSImfv0xDk literal 1026 zcmbVL%WBk67>-t}6pBl$t3!%ACpjmX$<2v1olNXNQ_FO~**TfyOeb`b6O&UXErOSw zPoPgxx)c<<=|aJU>u!7mDYy_s@nkMlp>)weaxVG5@B6Q>*4OUO&)uBkIBveNVmH}( zfxQb?XW948=hsJUxk2k~xxm;*H(4mcP5@>jA%X z7gTeD5k#1JAdd!dX5=P6;x*X5xE6UZGND^0KX$6^u7es$F{lWz^)>Eal|5uKbMkpAQU{Fmm;!pzK<>kXQWFWlI%M54ig ZnPHi{U?``2jvP=igQu&X%Q~loCIB4273Tl| literal 1018 zcmbVLO>5LZ7>*y5QYd<~o`w{mikr+NyU8YQEa@h(3r#KC1^2kwWOg^S$;8RjP3ysr zi}(xlM~LTwhn^G!4<4ll|AJR3;cWU%bQcatT4CBcFBN^1BwMZB7F>6Nif8197KnYKjVfVTp7fjF6;VRW=Ik# zC~c%7$v9dN8tX+CgnO8QJ|4!YCI0wuB7!)w#78wB`dJf?;>{z9caOF^;n7}bMB@5= z&?rn!kYE;oBH2%Kv#`VougUl2wJd^(3EQ*8sZ(8l2Q&%ApeDge2sH>aBq6n`>-t@w zKm=u|$VjOm-BcA5LNI$ou12GQ*>=2{7C%|yh_TF+4=GnHVYK}7JI2UU;ZcWjvuF8SP@#;`hHZ)JMZMWvSb$yO) zr8x`I5YKhvQg@0~FT|QniUUSyhmiew2keXpBl(DApt)NEeh|iKc`nN{jn=_5eu5*9 zk_1fhYsTm4*Z+;%R%@P(Y}G($qgwZ%IKxK&lQWq+BbUwbSF_Bocn6l-v)1Q_v*E!h zpBTzVS!zd4hdr$bU95@1(LH%q^i0&Bq=o}dIMM_{|q5|KXwLH;JGId^&?t^QV0d*5HlVtXsDr6?XsO@49i@>l3 z;}FDA1VslDiNsmJK?GUIv4{(!gc#*S2*LitP&HRCiCJ0M*P^E+Qz66=S+-iOMyk<> z?Uq?22tvTYabao^_U0|3`eDoKZ7|5#(_F(LhHZg>Q7zhYB*{=u_d+n8Oy+>t^7a!& zQ^xwL!=eaeO*4qAZtamQ{^iD@)?R+z!E6?L_MEHHdX#z_V4AzX3k8PM8}Wi`(4wfb zvaQXT*dl2;$a)v8;L8NB&A}h6rX5d)0Rh6OT!IaBhVFOVSxV!RvdM)N^Cc8+p~=hn5@{u_A0gm zMsqQcQ8mK~&Ov$hqLs00T*JEJ+9s&yS2PaO=l_gbipCTPNl^izkpW(T%sy8CpPaGO z88&E+-^@YX<5qquZsHg^mI$n0`K&WuCDd@ zt+n*Z>e7w-i+tzO^&bm6-@b0{4qtBV*cdwc_~!Qa-Qy?q;kOWhrZ>;vHtc+GdokPW zd|2#RIn&?2+_JsZb1#&enmY0P91C5%o11&F R(_IK=JDr-4AC64l`UxB9WZVD% diff --git a/AppKit/Themes/Aristo/Resources/popup-bezel-disabled-right-pullsdown.png b/AppKit/Themes/Aristo/Resources/popup-bezel-disabled-right-pullsdown.png index 2ad5a9f3a93d478155d48a15d85aceba4576e68d..81831f72fb81ef9ae19d53e32369af8eea37fafa 100644 GIT binary patch delta 364 zcmV-y0h9j53Z4UyBYy#9Nkl^LdaUf=7x;Ulq^2hZZ6yrB*S`QuV z&oAWWU=?Fx0D_M{|5A*9{ACc6mk^0#XJrv#`v3nw0}xS+|NaAF1}4dOpT07KUHYGj z5C|BdE~Op@IuU3n#HrN8G;%4(q5ps!YGK-h>Hq(@4gLQ82S&r?D_0pVT)c#VLE<2J z9NuRFM-(3m^O=WooY(P_40W6Q*P(0rM15C~AT-*%u(h?{JD#}PQuyb;O<#BtT z0e3F>lZ^x&e}Mn?>o0?fyd2m-C3#tfuRs3~NK!<`{#T%jRTSkIzW(|{Ozbm3@;(8D z|Ni}B`1tJ?kR~>pQZeBp5g4CIKW{GHeX_>KT;~VK`;11(wXT$6@3Nloi#P8s8t+I6d<+2E#$X=v6+sFB0000< KMNUMnLSTZeeW@-0 literal 1350 zcmeAS@N?(olHy`uVBq!ia0vp^qChOc!3JV=Zu0c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsdd7+M$@ z8k(CJm>U_GSr{5x8X8!-xVV|QIXb!-o4FXl%)qMG($&<})X31)7^uO0Qv}Q!bGM(eXJB9~^K@|x zskoJt@)0n|9`Ws&;S3&b6@n!+e^N?v-k9e@A_#{X+RJV7?$?nLBjDgE#b@c8y@~Q zG!R#}ZeF&@ChT~ImUhF_jW3xi=X1_x;rRdacYovD?%9rUQA|f2TqQl(%KY>;*n~MZ z-fQ0_V*T&uZ~5jKD>RxXFv#C<5Oic@3sm_3e15&fSBFcQjUB(fz1DB;+9Pw=_Lw@4 z*QZT9@%8@}`n{=V-4)>)*!S>r|NWNJo&W#ORH&Ta;5FgT@%;TBCzd(zUh)6qvSZ4c zBmQ?M^*2sjVW7JA1@lq6sdIjPzWzR3$f@T4%r{(Bu?4CrK_AY?*WZiT^E;)tf9E-V wH@4?I;#oU_X7vA#-_d+>{W6yOzZn?W7!tkp@35tE#)C>WPgg&ebxsLQ03C?r@&Et; diff --git a/AppKit/Themes/Aristo/Resources/popup-bezel-disabled-right.png b/AppKit/Themes/Aristo/Resources/popup-bezel-disabled-right.png index 7560cefd10d639f3c56b69f3ae2177b68348dfd2..fa474d166655777fb8a1cd48321d60b17abe2f43 100644 GIT binary patch delta 479 zcmV<50U-X83-|+&BYy$ENkl&{R{G505t|39rlPXMl_bl7ELrkij1gaEGjOlw&Z) zK%SwI6#_89+E;5tRf=t#WH^45nxiO+B|jpO1l6P(B8pwe=AHlv$kdl$u2hy~$me-L z2tl5I0ZEd~l~SP!O;3l{LIK*H4t0Z$Ai!I(Xy|Xcr=O(~)awoSJ?NU+b(Lal95gZ= zgw6HUKB(OweSbzhC_RU^C_%M_`k;3GpaYbYRkZX$|CW@?706_BeNemJJ6fF@d^Jq= zj`NNGIVjFIq1ykQehYOWIuinqi&X=9J#L7GL#o{%eMYNOaI-8d#v;%} z7K$Gm6f#97cOH=rw7fJ2ZHcb2h2l3+O6iimR%;@VWLWd2(kp%oO+q_aD^R6odpdBP z_Dag8DTrbvFgb>qjnnHbJANlfl&Wd|Bek~{7ijv9m7|O8Vc9*uI!HhBcgf@Z_ixb3 VU>=%miktud002ovPDHLkV1hZGc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsdd7+M$@ z8k(CJm>U_GSr{5x8X8!-xVV|QIXb!-o4FXl%)qMG(#6%($lSu!7^uQ# zzd*q`*i^wcF*!32#0NzW#J4V~MVV!(DQ-pixeDO$waUb1zXhtl9gR)h91R_fEe#Ew zOf1|Cl%RT3$O$ujpkwqwi32IIz=VJ)5X6KheIN&(c~bL$Ii?7hHDZ@%PhwzTJml%( z7*cU-ONg!a;Q$d^{je^sqy194y4$uX)ba8)&F1K8e(^@FuTPI}-MdH6UOjj8RESs+q)I2qdUAS4uHb(By`)@mw%0Ov)l_1A&SlhaEpP0dM@2PFKQ|CY94?g?Z) zVYHwx%;e@cZ<3Da3sO=Z#UCidO@635Rt;b}46HIe=xS>FidLv%(Oj;Ce zR(A9`3)>_srx^MYF-${*C!4ZU(M3Iq8%6<_gkL|`@@56Ix!v{ji-G#6*^W6Sy?JnKb4JAsnk}U2d6vA?Q3^C zPLA&G{@R&o@9F7TVXwV<+3~qHFm&r@Y5T|KQYdrm_^Id-;lxLwR;x{c<%f%z#ns!j z$IJIKxOn#6>$SD-8(%-XSi0Eqeqv%`oj!ee($aG8&7*UdcDA>Ve%so5*4ow^%61ml Scf#lUg6YmGqw@3N(w*N-E@D{# diff --git a/AppKit/Themes/Aristo/Resources/popup-bezel-right-pullsdown.png b/AppKit/Themes/Aristo/Resources/popup-bezel-right-pullsdown.png index fdcbe034565d57977003dc1fab3ba1b79165aa91..e0fdf4539d3f9845260e9fccbffd1b9945126760 100644 GIT binary patch delta 420 zcmV;V0bBm!3cUl6BYy#eNklWFskygRp=VtjE*Nqbk4 zPbmu%qb1Y-|Nj~8eE3B%e)F4&&qPbbmYI>!i0R+Ie+>Wr{ihiJ`ty(B=YJM~pTB?c zGW`b|N{5hrGKf28UFucV){#Mmx2rhyYw&hFwjtDrhk8b{{o#&Jq-2!U+TK_ zAISSSBwxOI&Cokx5<^>OHwFfYgXD2~|1S>jONa_HB!>quU<0Xe*R(* zm6BobakfJ-(BI9GL0CcxERRhe(ECuA;s}EGUw$xHSeP^DsH=btG}6&zFf%m)i{puX zSeX9BiC?_?%zqFO;KN|3qrnjD>&fs8$j7H1;e9+g4&d`bJRar zIwg=ye*XT$aQoR?hTp#lt3~7}>L-3GXH&5EX;Gm3r$y06O;>*T`t>UpJL?ywB|8o; zrABq~_1pJvXD(j3p{*c&g^A(+f2P`w-sP0yzG<_Td>wlAeDU(8+${i1hFEth!B%M1~*1=r*@Sw;*hb286)*9#GVT><=%wywCI8 z^ZPv?@AF)rzwWWz?Yp*XG@4v*H5CBogWxU7*{Vu?W7Xg&mfaz_UTl^-X^GP~S+R+O zyb(Ig1vr}RI&g`r&}g*Hd@v-3e6=JaMhvv-V~9th0IktfIO0*7Y2{?7i3{_B9iBUz zf+3!@!%v%hs4wc`TKMX2iL39f3o_lUjE#jIl~6^T1OyRIrlEMGO^A_kJG{zE0$DX9 zFtq9-x7y*gq(VMF!S;pENf0js?4- z91`GSV!OnE`)J;s0fXM%KalDOvLW|LJh&9PjS`vm2q(y1$_|4s29{?@6tkijW-+1` z95q`p%!Z*hit?B}PN#=3Q+S4BQ>@Kxa+@&9O#mQ9d90`zuQGdZrxV!SR!au!6=E_i zFkB`suf|=&y6%f5T@pvjq7)Rxw#)?hTSQrmwTMy3Rd0fPG{Xz3u3pbtwG=1u9USYC z#0a$7Uy|P}zV*L#I|-A=i8%=yhE*A@9u!{3vj3-N2uKD|hvQ$vk}-h^RK<7m|*BId#;=M~qnvQo?4rHOsz6F*r) zXBt}{8dnshc(!N3ed?{U+S;By&pbNz)xf~P(8}`Cg*$Us68*W$Tg)%Iul_pM@M)QH zF1f;t>{^&VzH??WHD&xmaqJmPO?B+O=>Moj34H5s9!w;Z?9Y^;>7SLF{X;9-E(PhB zOLZ*`(w9EIsdFS&(yuY$aQLOZel~w+;TN|Ly_fROy~8~41f9HbM|1L3?<>0Oapv;2 zdzA(0rQwAiCmM8b2XI~G*Bzx>7th-8oSN$1o2PDRyGw2dTJlG(&o{h)hC;){ZztYA zoNJu?hD8Ze*2~u?wcbEu-s}&FyR(FgI=tij^atfdM-JJG-^}_e{dr|?TKVPjj^srs zk=!=w$TvK)a&B^O@55V;rj}>)eYXC^KBeSLfrB_*@vhW+?|7lR#I%3$_oeyKXJ<|} z3?s`o>f29`O=+KcQuq2*@k*kn{NSxGbDt|r9vjdVUK>Ag?eRSGcN59y`@b)=u%p@> ZRKpq%kbk~WkW&A8UUwb!VO8UizX34u_C5dr diff --git a/AppKit/Themes/Aristo/Resources/popup-bezel-right.png b/AppKit/Themes/Aristo/Resources/popup-bezel-right.png index e97be6171ebb660754deebfda19922763023145b..6aa3ce593588cd030ff1c539be5c8c11b8fbbd3e 100644 GIT binary patch delta 517 zcmV+g0{Z>X3!Vg!BYy$qNklWFskygRp=VtjE*Nqbk4 zPbtIy|29nj|Nm#W^Whi8_|0!7J_}tnCsrmVBc^}<{xSUf_n%_?>(4)iuYZ`hfB*f> z#q=L+DD^PIzyFM2m;NOJ|N8x#D0K|~|1mNBCBpU(A3riooPRQ%;mw;jgk1_U6ztN! zxbcslzZjM*Tfy-5-8+V*D^@Xl{q`NNdZ3}qO#lA=1v(oyUcYf8!}Av}89?CG>o*J= zHf_eM9_szSIBh+6=m^8L>o*yY!Ht`@z~VSv`VZuNJYMm2abTF=+k}BZ;&{FP7mxQ} ze)`IA_31kd41W?Q!u!<2K<`6cio+{MkDXxXpEwxESDe?>~PNR15JwkwqFP5{N4LKra1HWYI?~hKDJ&@W;=eKl5;~e`H#+Tuq>>;00000NkvXX Hu0mjf#{>vj literal 1488 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 Z7yx2CD7km7eqaCq002ovPDHLkV1fYqBs~BC diff --git a/AppKit/Themes/Aristo/Resources/radio-image-highlighted.png b/AppKit/Themes/Aristo/Resources/radio-image-highlighted.png index 6f16d4803dc09c53440bd6bb9daceeb44a075e84..ac93ce930e624f7e6b246e536c7af2de455a6a3c 100644 GIT binary patch delta 373 zcmV-*0gC>S1%(5U8Gi%-005C>k8uD10Zd6mK~yMHbP zKxnF=8d{v|PYBvvnsSR)aSEXn!9g9=bCDxC3^OGUkwh*Cyud+lvMlFXz6KK$ukSZL z-Z#7l%pzzza{zR+Ty zLz>h_iH+Z`;EHBG)1tY+Vwa^`I03+sJ#ErtcZta+Gba!LF<))*$yS^BDnvjkei&@o zGFW_r1js6z|9E8K8#3U@em<~atH$g*Jb;{NlzDHf%tQk+AYGmpcxS7?i!(@oxVm}s zTBN>2$HMsu%+X*-PP!Pa20#M+Gd)6?I01*;ocpyW9IN$#PvoJmb T)FSF;00000NkvXXu0mjfdHJM! delta 643 zcmV-}0(||21Ca%g8Gi-<0028}NBRH&02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00J{fL_t(|+Kg07t5Q)I-N)lQljA!@BnTpcilXtIIq8zsFbXGfNgVkr z{0T+_Ck||6k=3Z68aQpxg^SJ9QbAJl{npl!V|cyAJs&LLcz^b{_F8Ly`$*z!Nrgfo zVlWsEbvoT0S(a}sm&@bTYV~zKpTCbpA_c5jpK92B$Ye79Kp^nK>2%(=+wH<)v1~9N zk2mP`dZOKKzpdBn&tkDyW1mFIX0z8k9?xgL-|uy~Tw*$%ip65FfnKlQz+^IsR;wi% zjYhLlsoagn<9|P?N>7GxIBZfBjw+nZRM6AJJAk1d7@cDdRZ1Nm`J>+X0ess}j z^a(87TCdk)G#Ux`|1bC+SqZn>eF*hW>4Hl12=Orj6bMdeDFiLhBaB8PNpd7HfZ#TF z*~->ZT#vq+>?er~8%|o`4qA)rL8P#sBoadEz>0%jwSN{joXuw4Z6@pCaCnTs4w$^w znoK4FeJ9%^UgF%}IUJ4yhNZQ5+_hTm75h1CM$E{iR4VlW!*+#v>X5pX6FiASMO=z-O0y^dK>K=K>G zpH!>WH|ccxHP-N6^f~erA??{^&=!^K0$}1CPz*2yhHCRzB{=&j*i&Ut2_)4riRLO! deNX-fFaYD{E6@@$nNa`$002ovPDHLkV1kA4G)w>h diff --git a/AppKit/Themes/Aristo/Resources/radio-image-selected-disabled.png b/AppKit/Themes/Aristo/Resources/radio-image-selected-disabled.png index 20858b2bd9c1669b84c0d4efb582b5d256440521..eeb8aa604ea8d48e1c51e1417b80c04572cda892 100644 GIT binary patch delta 626 zcmV-&0*(F228socBYy%>NklGW?9Ewv_{z+~H=oYD{`}+2*I)mDX%HVI4w46{!=|4xr+cnc(~5mPJ1*Rt zdH4OVnP*>opLy`{x0&1Te*x1VK1duS4^o%bJVhAARq95TY=5cz@>6$6sb{ zzV#6&2FY(dduL|Vyv=z)tt<#v^ewPkxc|b;t+(FITz~y7K@3v2VE_4B&1YS6zMy$FmMxnduyzIa6BS5=?{m$nvYs+?@&12htBRgsWuc`u>Hd9?e{O z?in0AL}kuYbAJt+sqLQxrftI0P~;b$d^ods#=1U`evl!&MKjjTTmUo#8S8k*&NPWH zn`x0&52m#|qfq4M0}UyhzIHlDKgbZi?1@V!Oh0sU=Imp4;n*v`1#Ey-W;2*}&uv1H zpMLPh%}3YAbc^NR}h&2Oj;tLdK@*)U}$hz9XN;vjh- z7KEzDnxk2uP6YW?1&FnQSO-e0K*f2`U4S)5Lv7)LMjs!P=E7w=03@j4>S*kZuK)l5 M07*qoM6N<$f&*zX@&Et; delta 819 zcmV-31I+x21<3}GBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU! z>q$gGRCwBaR9#3@Q5^r@uWk3v*`}M5t;r_yD-=hfRz3t45FJ%Ti+GPwLpZz`eKukDw6@=F^}2gn znjGM)ufwoHQp#iGU`yPEjaXtSzOnXp;_+yv!ec6851zmFH2Z^(208=2-u3`!tOa%v z4Us(+iok+Z5Pu-(ae;+n+>*wgYwPV_SoktmAY_&d9cRyT4!8I2U{}Ca*WiMc9l0hy zN!38YpW=Al(AWfhZMv=Rbdpl1NySMd)XRI>;+()q5tj12dE3u)4emoqydSxPI?G*c)9Xn~DGgTRm`Q zeh@Fe(|F)$hC7WY6R0@s3Z`F;LsU$G-QQJuPffh2vCA3@6wP`GpG3mwh9MXw52zYR zGMj^Xj~`ew4@i+AEpFG?$$re^37?2iiXzK$LFQSOt!`=wc0gKIfyP^ikT2MYMGn$M zDn2zuCV!_xk#vk)W;Y>avp7st#l_1b(Cl)8uA$Od-|b^|4_%2Cm%< zxdZKIc-tu_!*UiJX+hr0CKKVcmHF9ea*NX>4N@kO33cQ*K!hx1F)N0-?0~d|Que%u xQ7kA69RC#@iHa-V@`?yK8nxp6FyWs70|2n4hWv5D2^s(Z002ovPDHLkV1l5Fh_?U$ diff --git a/AppKit/Themes/Aristo/Resources/radio-image-selected-highlighted.png b/AppKit/Themes/Aristo/Resources/radio-image-selected-highlighted.png index aa4fbc1d6da88a24a184155e6d047a8bd69789b3..f538a9c90c203547b870ec294003f44631987a06 100644 GIT binary patch delta 632 zcmV-;0*C$B29O1iBYy%{NklKsFe*K2048TGUo0+{eRA$bN{DqKSdCO)Xf8`&+T8B0t+L~ zqG_uROxt$+|HLiF;JA6o*8kRlasQ?DEWk8~k1P+e6r>NNA7qGN$;|cdyVf55-?RP* z99sq@{8w`g`+u+Pp9H4O{NqsMyVf51Up!;oTabQ`A!0={*8T5Ta{vWvdqw{@i7)$a zkya0;H9aCxI zp0MN{NI%#m@r_eX0z>HIB)XG|85ES^{_DEWas48jj5k}KYz-q{}ppL6T~0`!pgf&0QG9ZVh0q@ zVrr&#QPB-kK4eW;^1pQUdYl*}4^k(qY2XXgCxV=p*nwCQgXBT#fa>LtQ!E2C4{$;ytjzqPx_t8+E`-(ee~N6F@*hNl_#knR zJP^wQF$YTCK>}=0CxZNH1H|q?>;hJ$xo_Xk&gq;nr++K!!1H|^-uHRm=e*~< zF9Uxs_V%N|S;1iJW_iAyWw};_vR{y{&uXeNb?4fdXT%5XB`|w8eS2+kM^mu05uI9F2woq$)wjCC<934Gxci{Rzc2|NZ zYp@y@;afNcQh!DTf#;#Y7XI4kUh1PfEQ0kVSnjo5WI~(ICcI4*zAs+P0#93 zY7{^)ny--UW0rhOEGM){G6|xg0s`Y>uqkE0UVk|Ee?B%^WRIm}U|7DD@~IL5VQfb@ z3n;r=hg3!bo7)S#(G0pGgBV%KDcD(<-ZREF%BMkCMUj)Ls+O@VTX3qb^@43*-R~!F#6r~RP;Rxr(TpdA*^%>omt3>>LS% z5dJSDX&W}eq4$&b1_lW~N`nx^8YYit$>H&yV1HP~#FJ8CjP`{jiI7OdlW)c!-b_U| z=BOwxUuZqH7TWq1`Y}`Hs%>O=gBxRpkRS(I14U6m6h(-HLmys`-tS+V|2j(_GvzXS z8qq}HB=B_hTs~J-?>lL>mNjs^U?oaLSxhcO7K76>lOq$vXN6#sK%pX-KgNK8z?KhI zK|5f{Hz}>?c0MyD)5cTx9R)k{gkDZwnULSp`9XUklh0l>Pksw9010-WFrEzpr~m)} M07*qoM6N<$g1#GxzW@LL diff --git a/AppKit/Themes/Aristo/Resources/radio-image-selected.png b/AppKit/Themes/Aristo/Resources/radio-image-selected.png index 96fa554a6e0979f4d97f9d79b48d51236bd3e577..c3c098542b4b2f7c6035f4a8aca577aeb259aec3 100644 GIT binary patch delta 10 RcmdnRI+b;T@k8uD10Z&OpK~yMHb%zrVP3-JxLTj!V~4%z3B zBaT_8+KsIJc6pYRrxy?F%aLm8ePLjuI* z^~eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00HAkL_t(I%av2ROR8}gwkQdtl2c1UZ4E)tq(kQnF3!h4A!u`Hs!d$Q zNdzwhE;@KyRF0@1QG%i%7>d`yK~T&~g5Yq@^7cL-zYn_D>3{2khnM&AJimwE@BLJ& zkKbA{nf#qjr*E^_Y$cb={Y6BMI{K>reSW|HfQOTnN`-p89*xIiS}vDTM2E7jH-BV}^To!mgL=Q;SBzGxMc{!C z5lt)>n{~Tg>GG7K)9DcN#^6I_CmM|sM7{%vL?V%Y;6r4W@8r2&uS*t{qE@RB^CsX+ zPWZVV3WWkeNGUK6p6oZCacwYC4b+ETC3F_c|4vDFOjsBUm=xB zk<;nCW3Enqopo3;o6RP#*E@wH?969CA9F^d@tk?vueWxSv9H(be>ohE`%oxEnM{WA z`8*YiMJXaj9esnr@RR5FUT>^QsHsKc*kZBV*zNX$%jKH8-EKlejyn2`AL8JZfAog1 zs1w7dj4U$|k41g^y@Qp1v~Z;n&$lb0M$|u?{sP)8b&xZs`fdOK002ovPDHLkV1iGj B46y(J diff --git a/AppKit/Themes/Aristo/Resources/rule-editor-add.png b/AppKit/Themes/Aristo/Resources/rule-editor-add.png index 5506b84f47261a30556446983f7262698cf3df54..bc0393a854f7f142569cb4d2769e3ae71421af56 100644 GIT binary patch delta 59 zcmX@l5-~y9ltJFp#W6%;YI1@D)6t_x|2xiL6j$(P^brtOThs8ZkA>k-z2ic2?^o{` OfWXt$&t;ucLK6U6kQ8$O delta 566 zcmV-60?GYY&jgSoe*w*DLqkwWLqi}?a&Km7Y-Iodcmb`F&r2IY6vw|wY@;Y5#pWjL zK_o&dYt}$cB__~P>>;KW)l@W_&0bE3Z+n5iWl){@f7f)2M?vR74@%Z zz)J}0cXkNrp`n*P80Ir?zVFSOHv@#CMcdvA0x&Jt$-PW#e{a^`YT;`H@E8%yV4)}) z_Hs7+nvx-Q|C4Ik_h&NK5YaIAq{9P&K#YRvs^XO74aIrM+pg_WQpoq-oZfKX^xu3fp09 zXoNf~`@)&lfBFqP|3J;bz_)$^9H)V&-GOgziRC7Mvv&huM|PIwL`EAGBkrdQjGqFJ z4n40^0K)S?@0aIwPd%^qg=gOY?R(L5TE3Q%fh!jLkF~n9$_{+v9cca={hd``e3cG- zY6C0h`X)S*^L+GJkP7 zroFPnLQIS6dJ+$qB7NY(;z(lv000SaNLh0L01FcU01FcV0GgZ_0000eNklIn5HtZr18p1$0E*xX#PW)_6aWAK07*qoM6N<$ Ef)l9)-T(jq diff --git a/AppKit/Themes/Aristo/Resources/rule-editor-remove.png b/AppKit/Themes/Aristo/Resources/rule-editor-remove.png index 0b50001233fc9fe1b14a0a3fc4c4596e78f9335f..788574a9f044132863f3e6911a965edf402aaf7e 100644 GIT binary patch delta 50 zcmX@W;y*!Ihe6EK#W6%8JUL;3t%jc7zkYtmdKI;Vst E0CAQM*8l(j delta 551 zcmV+?0@(dezyy#Ze*w*DLqkwWLqi}?a&Km7Y-Iodcmb`F&r2IY6vw|wY@;Y5#pWjL zK_o&dYt}$cB__~P>>;KW)l@W_&0bE3Z+n5iWl){@f7f)2M?vR74@%Z zz)J}0cXkNrp`n*P80Ir?zVFSOHv@#CMcdvA0x&Jt$-PW#e{a^`YT;`H@E8%yV4)}) z_Hs7+nvx-Q|C4Ik_h&NK5YaIAq{9P&K#YRvs^XO74aIrM+pg_WQpoq-oZfKX^xu3fp09 zXoNf~`@)&lfBFqP|3J;bz_)$^9H)V&-GOgziRC7Mvv&huM|PIwL`EAGBkrdQjGqFJ z4n40^0K)S?@0aIwPd%^qg=gOY?R(L5TE3Q%fh!jLkF~n9$_{+v9cca={hd``e3cG- zY6C0h`X)S*^L+GJkP7 zroFPnLQIS6dJ+$qB7NY(;z(lv000SaNLh0L01FcU01FcV0GgZ_0000PNkl5gs5QNWOC@5%Yp`zmbAB3KQ0*N09q>Cdi z!d~BCgA*lpxd*rrvKIJuGjcyoBl^Dg z#*x!snosRCywMuy&=8DIl(pW(JkRU8Iy#Qy2effQgVtIorGKv154H?0_TDZ&XbXCW zfEwSn(;%j45>m$BNeI@~;$mlPqlgagBuP*$%K{th&XMHelQ339#JX+ULHmeGecrxq zY}juI0`1>Uzu<^_{BMP4i}<#wqHZ`8QUK49e?cu&UnUHt+k4xXkAyt zIEUJM0*OX~2?z;B#c{lCS8WVCrtZ1_8TwbSXLL;)kHxLq;7zCV9 z*eN9u@@$AH%W|IQ+f8HGV4&fQlvpB=JoT|CRTRatylvObpf$Hp0{0~XUY8@s)T0Sm zmZs?oNhHRTvsr@u27i^Uo-W2P49l|6HqZ0E?@w#P^O$jA!+kQT?|8P3*0t^7jiqSVQri-co00001MnWKG)Mz|PgX*kE`A>b0q;w=rQJ zD%MRl6+}SpCJlSe;HCMgX2Nkcz5_1mc68BC`e@JDoBOrzxeWi$pi%=(*# z!0=o}ou9)qUs+ljR=0O{gD^xY^?H51)%wrX rwbhlyz0)*pw-1}mro@)LxU1wV{HAg z)z>W&VuHk@zAgRQ^nI`IYd_NO_dU-md;xRD80Xw|T}mk-B!5lQB!iTa+L&568(@sd z6SUSD8&TVcjc?QyPbn2FLY5duN=2!wHO~`P$c{{v*3v>v-rkwZiz4(P1EX+^0dqoV zY7B84S)sHWE&M2s2_+~D#3Z$apg!1whd7Fb6hROU#;;cCpn5cXyw4G1eu@-hq;OI#4oKr`(`Co?~Icpinz2uzmO&OHw& z%s-|=L|SRdq)T0)^gLKhrZXW`PGjr$wX?S`ydutxgoxu11HN?vb$)}t%4XkssMot5 zjz;;iTCHBR+Z(mf(B1A88pgf==dI@X7AKWT<*Z)Eq&3lKl*{FxoaAV=n!fL!)@o9U m?N!1_r*ny}`aiGpDZl{k!vi#^C(#@L0000sDEiXuws;78cIuIqW8<2bf$6GED% zsg1POWV_vh^#=pS*q=1G%19|iHk%D<;5lb~!z10cEx6K1N`FaqyIob)zV8dcx#_sm zeGFZeS}Co|JkQ8}|8YK_VJUK!k6fm_Nn^+cNz)~s&?^~XeBuS3P&$6oE8wLU6 zygM|dFm5diF=Qc?R!!YVS&%eMF+F;FM}RI&=iRBJO=wtS0t#7{b@XsJ%=6pfa3~7t zGv70^jdxwu#CWy>A<%riUcYJB;6QPbUM?4{wBzDN986%`$HC!^>TkM#2&@RuzsP;_ zvNURo#o}~2Sw^GLXf~Vu=N-o}8c@b%&*$?n44))ftyb&xdNP@e$K&U@@!gio<#amj d|H0NWi#={x`c002ovPDHLkV1jS`w{!pi delta 430 zcmV;f0a5;$1IGi9BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zX-PyuRCwClQax|NFcgd(CoKeu(xo3M9azg!2Fl0?D+?q4h(DHgWoJcVKx!PvcI=)L ziYi)Kb!<rcckjg{P17(8&)$KUF%|@Y@B5TeLWnV@tbZV-q;5A3-U(Q1Yk}69 zx(K^=DttJi9(YPA*T;XJP{mcTQ?dr_fvf-XcisdT Y0K1Fw4JD*3R{#J207*qoM6N<$g6na_qyPW_ diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-center.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-center.png index 4ebac465a9c6bd8347205b29211e84ce67a927dc..dd9952665f3561153c6100cb47bf61957106e946 100644 GIT binary patch delta 46 zcmb>SouHyA;_2cT!XcadhT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALDtj7F{I*F w(vScD_ge`oD=(H3W)^s$*6=Eikwt=G`a5>hHxp7O0~IoOy85}Sb4q9e00fgDssI20 diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-dark-center.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-dark-center.png index 7ed9e6f3aca1081c2a6a64cb3275197d8621ea9d..9891a3318b4de87256cba18b7bb291d77cb7c4c2 100644 GIT binary patch delta 45 zcmb>MnV_N}?CIhd!XcadLUUHx3vIVCg!0B>{; A*8l(j delta 89 zcmeaNn4l6OS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALCVv`F{I*F s(vScD?U^}#7&Us#VPW==b!cE@nA*w~vSJ%w9Z(g6r>mdKI;Vst0FBBXpa1{> diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-dark-left.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-dark-left.png index dbc02bf1f3f1310ee52154e57bcce800f5e65c6c..a9fddc0ac494f91c1d2383d486d483273c07bd30 100644 GIT binary patch delta 77 zcmZ3)m_0$o-N@6$F@z&J`N#kN_RL0ZY+ep;cpjf%+^8?o+-SXt!B~iW-67Uk2ew!S hmLm-}W-;ECWtgZcvu#1A2@eAhc)I$ztaD0e0st;B8b$yB delta 132 zcmV-~0DJ#yq5+U3ei?K{SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM002Zu zL_t(|+G70w|33pVU_@do0kI+rlp_bk+8_oKR6rA^3?#q|#B9g{e}VWrOn@0m{{mu3 mWPwjW`~ir$7}4DU5MTftatptCD79Mv0000l diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-left.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-left.png index 4bbacbb9c97b119016a44f48ad26a011bdc35961..590cf6942cdcbe91dbae2b6d3fec601241ff117d 100644 GIT binary patch delta 104 zcmX@hSUo{9iG_iIVSk#dHjr}iba4#fh)zyO_;LP6{EPiU%o7ynCFwmm_#uADfhh;Y zIsR)GS2s$&H#r~@;Np3J`H+BC`wGUFugrsr7>ycy_WdtnNSY^-zfisF9MCidPgg&e IbxsLQ03pXHV*mgE delta 187 zcmb%X8O-xS>N=;0uEIgTN z15}jn>EaktaVzQ1|Nr*P0tQSQ6$H2q3>_LGva(jK+OT1R6mvkUhofVoX21pU7Rg4Y zQ#Lj>uj2RDrLt+JR{j5HtKGvaCLkj6M^!=LgR~xl=@I!$moMKx#NyD_w4tKDe*eTt nlO}O1Uy)Tfz+S}e(7?!$r=sq%y4!CG&~64#S3j3^P6OouHyA;_2cT!Xcad7^aKLGUhCgbz%SlPgg&ebxsLQ09+gn AEdT%j delta 91 zcmeaRnxGOUS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALB`X?F{I*F u(vScD?U{v{nVa=H5)OD8G+be1kzkm5l`ZW2>XaEkbqt=aelF{r5}E+kUmzX; diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-light-left.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-light-left.png index f9c28c326c2b5136d8dcc2c69580c74021520a47..1947cae3d7ebc39b6ff7e7c6a1373a3275390c30 100644 GIT binary patch delta 78 zcmbQom@`4e!`RcsF@z&J`N#kN_RL0Z&ome}8uuu(AK9nCBV6Dvme5u>A#}$A?h^~R i8#YJ?L@RSQ7&7dQC`ekU_s)a?2s~Z=T-G@yGywo#_8WKr delta 128 zcmd0q$2dWyO0vW?q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1A~L7i(^Q| zt)xHy|JySgB{(K&Gj3G!ap3FN>d2$EqCw3^(xXALr!OMl`LX3;iYoJ*Sp00i_>zopr0FZ(#x&QzG diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-light-right.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-light-right.png index 3de61a69d23a4dab365d8aa3dd1355de77fef10a..5bba1baaf24922c2512635cb7a99d1f1ea3b3d81 100644 GIT binary patch delta 75 zcmbQsm^nek)xgumF@z&J`N#kN_RL0Xf_x4-tvV05k1l$_wCx4cx))5(PB7Uy=r9Ox fXedlz(vV;{#9JU{aZYMI0}yz+`njxgN@xNA2^AUt delta 127 zcmd0t%Q!)$QnJJ~q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1B1P%i(^Q| zt)xHy|JySgB`_tiD@=0|d%&8MtRU9Pd7y!97X$mQ1L`S^6GF`$dBhazc#oJj{9yKI f5WFkPz{tj+kjaxNxGOIVXcU8|tDnm{r-UW|1fVIL diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-right.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-right.png index 93ae51239cba5004ca16a43c860a97d1952b3438..29301718fafc18d3c5dfe5318a6da95f8439bf4d 100644 GIT binary patch delta 107 zcmcb>ST{j3m4$(UVSk#dHjr}lba4#fkWK!v{zH5NBg>Jy*}ng}nK<|8t{c z(YpUn5Af8T|L>L1Htlk~q(bw_@|pkY<=A-B6;#=-e2Hf}!OX;m02ObIpa1{>8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?0CGu0K~#9!V)+06zXA{o05JmyGf7BDsMpoisW31wh%-QeF9=VXG|3RC zf{zg@z#u0l_v7Kihc}sE%07Pl$O5ET-~!Up(m#RJFR%a;I1>{?O-;>PAoBx*hK7do svSrKkfd-0!tOeOE1H?QqcK`$!04%OHcdcXiCIA2c07*qoM6N<$f-!(dy#N3J diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-center.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-center.png index 9cbdf526c1a6f2657c0922d59fe5fc0bcaf2d3c8..6391d914fba55dd9741365a59c33a11f7ce795aa 100644 GIT binary patch delta 67 zcmbQt7&bxDmW6?VA=1AuA4ti1x;Tb#$R_{MKclhm*ozg%Bvu}q!JyWdv*1L1B7@61 WmOr~^1sn$|WbkzLb6Mw<&;$VJ-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^r?)5S5Q;+DuMLqP^d4wi!}|1vPDC@}tCHi1Df{C;6^`MNVDp`u+JDQOwyf#sji e_I%#2et<#MM1Y0+QojYz00vK2KbLh*2~7a8_ABcE diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-dark-center.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-dark-center.png index fd0543a46d90f37fde494ccf160963e435c8bfdc..de34cc9dbf6044e5ddac4a7ceec25035d316f0b6 100644 GIT binary patch delta 67 zcmbQt7&bxDmW6?VA=1AuA4ti1x;Tb#$R?*GBuoiNE(uBQ2}$;0nCxH{(9+1rpmvAp U#{CJ|p+JQUp00i_>zopr0BFDy!T-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^r?)5S5Q;#Sg+|Nrfon_F61q$V$0rp7Eh;pl-Q=gyrw@a6M!f3{`f`f&yZ|9^aR gp24_;PvHQA3IqR}lMlBV0u5mBboFyt=akR{0QxmDTmS$7 diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-dark-left.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-dark-left.png index 58f1271697a58040c11bbdb6f89cdd650d9b1d75..e533575e22c34ce0e357f82bda18e33b798bddc4 100644 GIT binary patch delta 88 zcmdnVm_0!SpkC^>bP0l+XkKtg;;# delta 167 zcmd1a$v8o>o{fQlK{UU20g#d`ag8Vm&QB{TPb^Aha7@WhN>%X8O-xS>N=;0uEIgTN z15_04>EaktaVy5pk*~pkW3k5W3WvG>{x{y{786P-^zKnv5)j4k&hLIiI^zS58EK{r0Hr-YP$DQ)8{AiUQAW7UVIi|EsrQ;$iR#m7ae| S>x2W)9tKZWKbLh*2~7YOzB`ft diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-dark-right.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-dark-right.png index 7df58e92b56496ef1d1e8fc8de85ae1f3645ee04..d049d8d31b5e144fdeaa74bcbe5ca866c6c8742a 100644 GIT binary patch delta 86 zcmdnYm^nc*fQ5m9VSk#dHjpy#ba4#fkYzo1kh8&nfnnpGC1P_Nbd`#J_h&FQ9A`{3 q+Bm6oy{`VdCr9S-?BHSez+5zqX|vqNYiEIa89ZJ6T-G@yGywpoEFLNV delta 161 zcmd1Y%s4@^o{fQlK{UU20g#d`ag8Vm&QB{TPb^Aha7@WhN>%X8O-xS>N=;0uEIgTN z15_01>EaktaVw_Jkn2DIhx6CqB^-BSxMZvTZ@$U=A}O@sXCu2}polV4+1`_(t{Z2} zG}<9JadoVc(d1k)LC1+!RtCle-#=YzTy^f0`7_URJEfa`%kO7kW{^1}J27)%yF1VZ N22WQ%mvv4FO#m51JX`<( diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-left.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-left.png index 814f29f61257a7f3024079eb0d30c2d08ce0c95c..b3cf74d68f4aae26a0bfe6e2b175d0584be92659 100644 GIT binary patch delta 114 zcmcb^*upqLGMj~gfnk4|t2U7G_H=O!;fPL7U}*Y3=Rd2XNO{+m30#Nk*D-0bnbw)M z{cpOnYE70`7SDSZi7PveSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004eTL_t(|+DwkU3Iib!gm(>^pA*z1MF`lWxHl79-^2&CureHCVs_z* z41C25!!S7Kgk5LiBzCie5Uw{8P~(zPdQ!L=V^*ZVX|3)R z=iJ9y`=tgjJi5gg-(w6Yr2vmIOV0W6BH`bUBmejbFaUB7GHJ(b@fQF9002ovPDHLk FV1iq1QE&hN diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-light-center.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-light-center.png index 8454e45d40c9ac15a138a1c410eadac1469190a1..df79f9f87536620f4ddd814c40c50e28b5f8e4ee 100644 GIT binary patch delta 46 zcmb>OouHyA;_2cT!Xcadzopr0BSoA AZ2$lO delta 91 zcmeaRnxGOUS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALB`X?F{I*F u(vScD?U{v{nVY3L5)OD8G+be1kzkk*$)>;Qkh(HZ9fPNmn4a=$36RIXwG0#8>zmvv4FO#n$n8mj;R delta 128 zcmd0q$2dWyO0vW?q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1A~L7i(^Q| zt)xHy|JySgB{(K=Gi_w>X^`)5b>vZ7(ZJy&>CqtAF>@lT!?J&lVhoMu28?bh**hB} gIt1^^GBC0+DBt7Bd3LSv3(zbEPgg&ebxsLQ094E@7XSbN diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-light-right.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-light-right.png index 183e7f3263a28c4b7c425cc96345276b87c8ae8d..9cb3e7d78684882e42f863f27bde3db4db470957 100644 GIT binary patch delta 72 zcmbQim^MMhN!QcGF@z&J`N#kN_RL0Xf?N(~x^)(?9gTUxRP=($>jl%L7fdn+jFJ-U bY7I?{ykBz92S2~v$^ZnOu6{1-oD!Mz401LXnPjrE|FlFC>_ze*M00}Un cy8|G=0L$wOJI?rd#sB~S07*qoM6N<$g3tji`~Uy| diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-right.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-right.png index 91f415300ad0d0b6fe49ba919b6bd5277e6dad3e..019855a601d9d91350ea2ea8b2b7852de024d553 100644 GIT binary patch delta 114 zcmV-&0FD3J0fYgN8EXUp006&cMJoUR082?kK~xAG1;I-WKrjGB(Hn#MG$}@9ph=Mz zu}7P*2-|$l!IL`x^6{*Wz##N4ZYe@#_sFTB@$}3lbXO;OHTtpxSN*ah;N$@C1G_a5 UWOMhSSO5S307*qoM6N<$f?XRen*aa+ delta 201 zcmV;)05<=G0onnO8Gi-<000$lji3Mk02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004YRL_t(|+BA+!3Iib!M2ilX$Ur_wh#&~bLcD>u^ElqZL%Gy2I3*;D zN7MCasxjxhlMBH@thFZR`~a{KoR~gqt!HBlQc7QV?*m2P{6bLPL@9+uYfUIbdhZxx zz&W=w*rBx!A`(g|FPoH%qvq00000NkvXXu0mjf DigQnH diff --git a/AppKit/Themes/Aristo/Resources/scroller-left-arrow-disabled.png b/AppKit/Themes/Aristo/Resources/scroller-left-arrow-disabled.png index f56c4b57b3146c403cd8e466b82235e7496d485f..273eadb90a95ec8afdaa408a709022d512c0721b 100644 GIT binary patch delta 307 zcmV-30nGk`1I+@EBYy!DNkl_xU96f2 z*dthj=urBBi2R&;FBfV57hTsiO;gvXH9BqE(z_@8cI*51Fbq;ELIS$N)+X>l2m$*- z3dUF%GTq{()s~-8NV0p^oz)j^i{< zqbNEFu_e$&n*;|Tbpmn0qa;b3ail2F#_R}o+`~3P273?C@e<4nu~wtL%U!2`_re*+ z?ZFtdw7G48X)HZ1q%jVyuO(?4qq9G7W}fleiTwodd;phkvGfOAtl9to002ovPDHLk FV1i-8j+Oub delta 361 zcmV-v0ha#F0)qpPBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zB}qg~z}&HKJ* z$1w$XkFDns*4jf9#@hSsZmkhQN+|*dzDylsG3I=^z*Wf^B7Y#7ln?rT0sg#RZ!-(9 z65)85=x-RDb4p{)pmG4=zhNB5qA1=khY>0wiy~YRUlcV>Q`dFOh2BHX;`CabB{i7o zxvHwRZLvY{=uE95FvwNK3lR;A%H?^UB*~_TTIb3#&iE6%MA*ZeWm%f0Wm$d@NzcMs zFDV!Ax{ealXku`nshI$!^y#EOU+ulv@wkPeR#eRx>zp+P{^+J>;N3pjYc8$TG#PL? zhuPvGUl9v(pdmLd7l1L1x)((l;(tuPbIUv6J6DSHhX4ZrT=C!-4~>o<00000NkvXX Hu0mjfTl%BD diff --git a/AppKit/Themes/Aristo/Resources/scroller-left-arrow-highlighted.png b/AppKit/Themes/Aristo/Resources/scroller-left-arrow-highlighted.png index 3c3c2b6a57a6201629689113a8b7f69c346b21a6..95df8bd70bcd4cf1abbc14ccba07a31fdf6c45b5 100644 GIT binary patch delta 407 zcmV;I0cif~1F!>-BYy#RNkl8w!Z*;Y1so?rp`*$ zc8SCWL4{C7ONtnRGS=bQp&~c}5l*fw5Aw}@FTtlB`yV=K_0C(}Zf{`Q_GmPkOeT1v zAmy@&B2P;qMl^#F#u%j_idRJl!{Ei4mrBTBhG7~h!U~L{B7eBgOG*iZDqHXf)?TcD zk?*}zU5CpRs{*nt%QQ{41_ux~r-kDj9vv&2h{w!eGKdLEgUBAq(t;f0@ub;2xSdXw zeX47e5JCx+mtm@BP>tH1PJb|fLJ&gA5fLsDITJ$$?E67h^;*5rXuuniBvFpQx+KAX zhPCfNB45$Y_J7v?-tK0#s_c7S0PZM3T#U(=X-dvVNZ0gwt)^_wohQEHQ1vQ~;h*B1 zBgv;@{*(Qr+5B;_Ttc(bO2aUW757tm%+gD15tn9ArM1)=OO?A002ovPDHLkV1nLt B#T)1u^PY{RObqm}p$dUv_080a+FT8xx~3L?Xdh4bakd zJZ&Yy;DeraF_}B__1s4bSJzD~zhoQ|O)^Rt)d?ZGu2aWxa(^MBD4e{FiLM#k;G9uP zbseArjiM+Q<>PgP`=*gRoF$+_DmtIfHwR6;F({T*giOO=j3Fsd5Xu3H!hln1S(YsX zK!(9l9qfOB{2*Ar^X7Stn?}8Uxx7iW&?uS$q|{Mn=R4~AzCv-`&TYGm?>n$!lRU|fM&Cm)3s{NG>fk5N-334Rt^Xmq2nl! z;%KIvJ~}+u-`nkUx=Ls|^@R|c)M6<$DGLiNKx>~(b_uOjt4e4%8dtW<=yDW>n7%lU z|L@w58Vp}{DkaQd+OH%pEV2ZXfn4v}AL{n+D&-OyM@wk(e<4N2WHyuJ`2H+*6L zaq#TeV#~IdYlO~_iR=UH||9 diff --git a/AppKit/Themes/Aristo/Resources/scroller-left-arrow.png b/AppKit/Themes/Aristo/Resources/scroller-left-arrow.png index 7176691dabc9aa89c8fc01b264341eb984688391..ebd6b686f523a3e7694ee09971281e5a1d7db6f0 100644 GIT binary patch delta 393 zcmV;40e1e?1EK?vBYy#DNkl@3dcn=TZ4M@0x zJ0r3&v%s}8ag5Gtj9?4Z`AWwO5*9K)UI=-iU%&VINqx8qzG24Rd@7Q&*pHl%3^7ipH+%(fj{qog2oeSaD$<$C=_DRo`P_3$X} zTC9c8=YF5(ITm-lF2eIX$8p#lDw{YQ4zt;;mOLK6n9WKf4niAYy0FI5=JWYF2%EkD6sX&WIf*=UPkaJE5spg@AjH!1wOT9WW8Run(L6J>EU3EHRc=y0i~3bW!VUkpMOrvw`G3HrI12!#u%jl z5mFRI14^DhJ-^`ob{NV~3hqFp5;Mj;NU_!~7O$X0Q5y=SSD1xCkF zpua#+zu)imdXved7D7(Wmu(rhTJkL)C9Boy!LDW55l@oDolb&+qs-paSNm@r{U&tj znCBSaYJ405n+vM}2*L!VSyq%qz})|Z6gjtkCL0W7H8p!+MM`T`s(^YgEpLkL_xpeR m{aR@_0L5D4x=HD$00RKqQp!J&4xqpQ0000SpP-^G=IP=X!V#VPhT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALDtj7F{I*F v(vScD?U{v{1r#_0KDY`yhc~U_RXD)F?7|i&Sm gmLm-}W_gG+FidrD?vdei4`KiUPgg&ebxsLQ04h=$-T(jq delta 128 zcmV-`0Du2$o&k^~dKq*@SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM002Nq zL_t(|+G70w|33o^Ffkwj+#E(Itpvo1EI>jIh_zwLG?DeNA#=XNILtu&3y39QoKHaf i0f@O6iE|D>fB^u-zzWG!tA!T;0000mdKI;Vst0ONxg-2eap delta 127 zcmd0v%Q!)$QnJJ~q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1B1P%i(^Q| zt)xHy|JyV37#J!r-jNX~U`WywXlCuGY`h`SQLn6h+2L7%Lb2UJ3x(PFO%h@bIt)n$ fLeFIy7?>HDb-7+0c6jg!XcU8|tDnm{r-UW|F8M2+ diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-track-center.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-track-center.png index cd48f051376f7be411ee7e380e83478ab1703483..cadda610c9d4f303450c30530058f795f6d368e3 100644 GIT binary patch delta 65 zcmbQp7&1Z9ngIw-YiKqADQQm^#}E$LWV<6VXJZb RxRVJ|?&<31vd$@?2>^xJ6)FG# delta 126 zcmWHU$T&f=f{B5FAyM%mH;|Gnag8Vm&QB{TPb^Aha7@WhN>%X8O-xS>N=;0uEIgTN z15{+}>EaktaZ9Gdk(a@NH30;>U#8Gir(007(yxk&&30CGu0K~xA^V>!eC2Q1cL>iey~9BeHAz|2eB z0!&O`_WwIPe9X)c_N)H_%q&p$TOJlxW@ctE`4@f@HriApigX07*qo IM6N<$g4}68FaQ7m delta 269 zcmV+o0rLK<0i6Pn8Gix*004Faal!xq02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM006&9L_t(|+I)~X4umiaMF$8G5o?i(g8QF?BTyoG1c-tLL_xw=JQEg0 z^D4`Jw&QqpU4Q=K9mnxXZQItiE%H$man6}i>Q!!2pt8 zI*dHemu0c@D0moYn&QW%Y0`$Tp`VmxISfPJ_qL5$m%s^CRl&gJQcAq+6kq@-n5NU~ T6{*Pp0000g7 diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-track-right.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-track-right.png index 7c338ed9e2f773cbdb7a7e0a0d806fae1cbd4d38..5a9e6c8b15724df5a39dde51490bbad963e83c2b 100644 GIT binary patch delta 151 zcmZ3>w1RPhWIY2A+~L~k38eBpT^vI=qFs;e<#RI-X?SRr>;KoaM5y_+!OrUNge?-P zDiT&T@h%#+P3D!8*eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM007TPL_t(|+I*2s4n#l@Mn|K?PlARs_Xg>0z>R#S}szEGdeo$`<{t@6O^f{3eRzzJ0Z@w%d+gcE{@|(l|k8I7CF@z&J`N#kN_RL0XOw|hCjyAmwypniPqtSV>iej(9S+f9MvjDp; ZD+Zr!&Kce8SJyHCfv2mV%Q~loCIGXE8NdJl delta 123 zcmV->0EGW!nE{X_bs2O;SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM0028l zL_t(|+G70w|33pVU}R*p2U2_tnBWso?Lioa35$Z84A{XfWDYisFM#+o5Wk1=-$VJ& dkre?17yyJV4*7*D%u4_O002ovPDHLkV1h<So1mg4>gnPb!V#VP@Ig B4Y~jT delta 92 zcmeaPo}dygS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALDtj7F{I*F w(x3nT?U{`dQc}L89$;+9GCzESfsu{jdN14mnV}~WfC?ErUHx3vIVCg!05QWNL;wH) diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-knob-top.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-knob-top.png index d34e638b87c9a500b43eccfd61d5bdb9f73c541d..dc55f672a2c82c24c069c5ce468f1271c4fe631a 100644 GIT binary patch delta 72 zcmbQsm^MMhN!QcGF@z&J`N#kN_RL0YOoj^E7?bifcpoiZb$C&rOh@g;1WzZaw}ly7 c+{4%zE=_h$Jl=aTmH`MnUHx3vIVCg!0O}7LX8-^I delta 127 zcmYeB%Q!)$QnJJ~q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1B1P%i(^Q| zt)xHy|JySgC8VUV1SUDGVLS52;g4WPKI2F2l&w7xCSA;$#%w+XY%9K5_8e|;ZDeCE fThMlfk;8ytqnV(uL3@NP&?p8^S3j3^P6~3v!Oq6Y%EH9N!0_)U;~@cV zHg*{I9pfQ(AvT~aGcyz8|9^KG4{0onei0k#5=8Gix*006+}D>VQB02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM007uYL_t(|+O&_o3WP8agpKC>Lr{bic6MUt`MmL&{BAq3Ij5em%Q(zb2abyWs=o+HXQjzYsV&!w*G zuIrK{QLfmjD2l48`o0f>!1sMb$2;byX@YB-ruc#0!LfCgWe5ay(=@O|Dl8C15r&Z! s1N6OV9LMO%FCXr%Y5dH8q?Z5#0Q+Z~fEt`eQ~&?~07*qoM6N<$g4`#9ApigX diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-track-center.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-track-center.png index 0f708cd9be836637559e6786d54cfdd9e453e2db..b5afcbb9d3f9346604e11f76e6b42426152830b1 100644 GIT binary patch delta 58 zcmeBX^qnAS!Ta>QWZRN6Vp?JQWH}u3s0un z02S$ax;TbZ+>$xS$je~B!Mve=;zP#&UIJ$GE+nPxiVg~WnWA>GgWu;pYJ~t!(@~2?)+{0 zojW5X>udh#A3IZV;)zl_gElv}vGU_?^P-;i9W#GK0>O+K694yCoUZ7I?dat_^|yTb w#|aGP($+IhANcTI_OW6hUzwT2cXfue$dFs6Hm&P{c5*U!y85}Sb4q9e02{hLDF6Tf delta 286 zcmV+(0pb3k0j>g&8Gix*006+}D>VQB02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM007WQL_t(|+O&|n3WGopMYFE&w;~o|9vNTPP<9L1*0O9eo{)3A5pl#cxX@+6g_kW#Is_VMzx~6Hqq06$A zWjW8YVHj~7OOiwgnWm}l`>yN4FhnO?0I59B;S>acZQF{X$g-@es^@u0lEAyFs&!qN zYf%&^IF2Kpf+b$z6udD6VO`e@-L}p5eT)!qx=>s+ilT8G8LDX-FVLHKhW`W&*o~o> k$T{Id*KsV%dKU>W0K|D@a_afuS^xk507*qoM6N<$f+_rjr~m)} diff --git a/AppKit/Themes/Aristo/Resources/scroller-right-arrow-disabled.png b/AppKit/Themes/Aristo/Resources/scroller-right-arrow-disabled.png index 01430c28241deb1967449f5ff75a1dc869eb8b54..8430527ddf1ef4f7019d5f0c0acc5c29819f4570 100644 GIT binary patch delta 323 zcmV-J0lfa51Kk3UBYy!TNklEr z*Nc*ul~M(4&Ux2$(=;g+x;!E3_o$R|V2g@N7{_rK25fe{xb-){dk&06ia}UQsH&>2 z>oB9#hlzS5dXvsJU>8NvwryFKHd#-|eGBI*IGCX9%16^QxKtqo4j8z|DPiZ}pedza zBlR;fUM*o&!aSo{hEq9d+JVRc^$dP|0&z(;Urh0i+>`zVPgaOVx}qQ8qloVd%yaZzm5Ni!sT5BmK7vke`;hdiWfx|e*a(@y+;7&<(yUl=}%P5|V zjEphV)kl?5U(51&z5WLT0fYn{iV(22Z7a+2L}^hdEfnaleBXC_)HsemH-lWWBNfhZ zUn3}58!YeUw-&Fi>*~4=i62}`{~MPiXUx@zexukldHiB?nx=JKhha#M5h)lCC=Km) zLc7ve!#(!fwtQ`x<~4oqK(Dv0zgRzF2T)a2ec!_Y;)}}y-p1#kkdAlBS&ljSH8KYwHWY?t hp*xx7f7e5R0RW%(FFlq3tkwVk002ovPDHLkV1mZIuap1) diff --git a/AppKit/Themes/Aristo/Resources/scroller-right-arrow-highlighted.png b/AppKit/Themes/Aristo/Resources/scroller-right-arrow-highlighted.png index 6eb90a213b5b8bbf3e00f07f82d3f2cd728fe254..2acbd7b0efb0b0c36a881c6c541a37b63d3b28aa 100644 GIT binary patch delta 401 zcmV;C0dD^21F8d%BYy#LNkl%TB^T6o!WbZL#PIpFuXb!h{D?hY;|rQ zoPP*RfraEP!!jVtLmv7C+dfDMNE_jlm*5W&J{!MU`5ee9ueT+YogM*Vw1(zM@ z{zC8_kHM5ul_xUwymvI(bwImMP2Ed$!Cj=HDL^fk{^Qg0&!hPT%}89W>D0S-`m^~0 vYkwC|nFxYej9y;bUANwBdEOk2Q|SvfNaZiPY(97Z015yANkvXXu0mjfKz_Z@ delta 463 zcmV;=0Wkim1Ly;gBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zib+I4RCwB)lTA;;Fc`KK@Y5rFUwj} z$`gu-(;&6t&E(1{C@a6#>x6S*s?nFD(fMHD`~DvwQ2C*AUqF%4t8h;4tQhsEP5K>Azu5fbk<@eUgQp)S`cs832hZi-FUD+D&f-3@hjMW?! zxd)w25CmI8o6^>zAzo+oN)pC7s}3Et+mIC0C`~1_8mLTF=Yow>X(p)l$9%!-%bxan z&~N?RfXuJ5TOuVGh6ajPtM~b$I2Jo?Kg=&qHnf!(Z002ovPDHLk FV1i8W)Vlxx diff --git a/AppKit/Themes/Aristo/Resources/scroller-right-arrow.png b/AppKit/Themes/Aristo/Resources/scroller-right-arrow.png index c3ac74efc13e68c57626cd5a00d9756058bbb64b..c536cf3f7f4288d49152a584438cfca974479c97 100644 GIT binary patch delta 370 zcmV-&0ge9K1B?TZBYy!?NklUCkhBo;uA79mw#Lkbev%|*llgppJRZw?(9RXtbx|){=5;X?Qd+N#<9IfkEtkup zC~QaW4W1FwcTW$AB1IEI^vNz33s|!r(We_|6W8ll{vm`g-}fhziJh7SLKRV}(kF^k zt?1EcG@VYz<7+V@Z6W6hRw7kBXRKCbg)O)I2SG3#4vTxx-}M+sDLEG?fH(>VSw76g zAyo1_hmep01v9Vx{^Kfth0x?kim@J&ZTDqMV?=uq;)LHU%Q!!$Y5LugA7~iqLo^3j Q761SM07*qoM6N<$f*@w7uK)l5 delta 450 zcmV;z0X_bV1KR_TBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zeMv+?RCwBylizNFFciku(!$sv85#G!fV**-mu8nnpTW2D1$+;$^u{~yC7H=kN(;36 zfQX7)CMON_&&jXf`P!1@a;dd0ih@#$QsVo*=Xnp^gW0yNwSNIB&vPl|cO1K}`_}I} zj?)Q5Hk*wxrWU1?N~KIiiiP3uqZ5m4w_E(c0tli25{Wn_iR(VT4+b4dtG5LRU$7Ws zlv4D;+U=q+eC^;--7{5G6jD~IbreNG@N$_wpUK{S=PwG8k8qV632(b;pq9# zPp*6KshLxN0%)2_G{gfjj&0wT_9qCb_05K_xY<%kG&@Y<$=y#WOG6Ef956&GWGWf6 sZoT^l^tIoc(?f$hLWst-PVpna0NUUhKF;ffTL1t607*qoM6N<$f(0GblK=n! diff --git a/AppKit/Themes/Aristo/Resources/scroller-up-arrow-disabled.png b/AppKit/Themes/Aristo/Resources/scroller-up-arrow-disabled.png index 1d474d147879d4756b5f4026283c1d73d1c74b91..929ac1458a654530f14cfdba381fe1827bb1777b 100644 GIT binary patch delta 287 zcmV+)0pR}Z0=WW^BYyz^NklIx97q%eOCQa;_#L^;5 zyL-3L1Cf#W<|LU3>H>wR3KLQA%kSKp_Nnf6>3DaiO+t@%D42(e|F~9;=qbqYpo* lWD%HYu75Y9;uuo)xdTW3&)lYOEtLQO002ovPDHLkV1k}8j&lG2 delta 338 zcmV-Y0j>VI0_*~iBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz z4oO5oRCwCdlhJO&APhyZaUSv~`Tq|}l;kPxLpmu^Qz&HDrqd=gt(&xm?Mg&OKE8k< zv~644w$8cZgL2MQ0L2*D{X~D7#({=m!1r79vMeXlb2@}DO@9-Dd7cqJq5Hm1DIq|o z$8oH(Qq8-rt8VAt^!wLnshWMg?&u&9IdY!ai!kDfMyD>9m;JVj2g6D`LL1X9VA?eD zPQ&bUKI45fA~5q@3LG8^8lF-PA&M2~Sl1P(Krr#eUG4F%a6im&%ZFW);QxvDyY~u< zH*0Lyds`U=nM+i;NU#d>3YyqhBHfAE8%%IVdQN`fQA;8^JxIOB;NY)iAolM knp*u=cT`-;IX%GGyl^*O?SzIG+C z2q~46usd{?WzA+QiXww;rSHe%Znsyf)sBx2x6p5k#ref09)CQ~J3BogK>nhy>h(CD zI93Py`?VvB_xkRqNuL8sdb7)7XpmN}=^G|I(lzyy`pfH37INdkl65Mu>a%nIM? zhPGxLtuZV1A<;dIMk7kuH;EVNPuiN%*dty*`V*6M_z|05R%zD&0000qEn^3Ju1S$=F~tN`DMq>61wqsxV~aC-~EB zt#!3}f%aSMn^vpc>2$i?`RpJFYPC8}n$6~LIGn>ityHk;I8jP98rL&Xm{}i}%QM~i zH}(EC_LrK(kpdmruEjhXJ2@B(pI=__i=Aa_9gp7ojKr?%SO~BvqxtN@+RD=X!(;pQ zj+iEZk&NDYPk#cq^rY)bTL|Pc#$p{S742+qE*J9W^{XKL8-jjMSX@f!d0qxb21f!v z3;?4_piR^qBe4Jg002ovPDHLkV1o1-(ft4b diff --git a/AppKit/Themes/Aristo/Resources/scroller-up-arrow.png b/AppKit/Themes/Aristo/Resources/scroller-up-arrow.png index bb09191653daf92cc28d76cf4e14f38375bf0862..eaa18260633a31783f7c5b0867a594366c4be707 100644 GIT binary patch delta 362 zcmV-w0hRu&1B3&RBYy!)Nkl<1Zu30Pvg|QkRn>aEhO^mh(6R^gVzFqN22R_ytAEw%ZkPR6b-ppWU6f^c zJQmmH$~k9@X{AhTB+)&MM(y|e_o6VyNGUn=z9=o?l+k@FcNuY?0Cj za6XJ^e2?AwbWTEmr{8uvh-0lyJZ`lHtw2LEsDqP0S2&)ALYK=&Y+?&A_A?SI%%a0|nQ&nBi!x9A+erjrEw1SNIV_FWPhB>(^b07*qo IM6N<$f*XUd%>V!Z delta 403 zcmV;E0c`$+1FQp(BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zPDw;TRCwCtl09#OFc5~Zeg437=KueIWQmj^KOlm(YcpiemLdW9PyhpcZKNd1(6n2n z9>SdQb9eT=X1m=kP1A84hhTl*V|32-!LAN|)^*LJ-`Jm~aetuse2(!)^m@I{^E}J4 z=X6z7%jFWzYPCYkp3t+|tZ5oJZQCvui-%SAU)A}>=zda`<$hmWnhWQgF{YI=v5`cN zG#a(tZa<5{7$c?R%s-uTm$Jh2C9yXea=gC1qv1(n>s;5-;czrs z8KbrKuM8}a6v7{r2EqrCf&|1T+yNC#q9hRy?Z7*=1qH@Pp@`oYXq=sbp`yQKjNNWr x@UaldF^X^s!-dZ#rcC$fHGoY!3HBwx03~(R_Cq+3BMbll002ovPDHLkV1oVLznuU8 diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-bottom.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-bottom.png index df32cc98144631439cb902b14449034006dac54f..abce2eeec9e7175fe6f1a561a0c497fd9a5af5ae 100644 GIT binary patch delta 106 zcmdnX*v>dXCE3r@#W92-;TjW20wBNuE}|%!3A5>y P00000NkvXXu0mjfb6G^X diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-center.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-center.png index e193dfde38a9e1635bf89487d4af8e775e20e913..7ec922c901bc951180676ac5abc0ed2404ed6791 100644 GIT binary patch delta 47 zcmXT-o1mg4>gnPb!XcadhT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALDJL3F{I*F r(x3nT_gg6|FP38FW0CF@z&J`N#kN_RIn|m^bQ+zmvv4FO#p{&7~cQ@ delta 130 zcmV-|0Db>tpaGC1d>M2_SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM002Ts zL_t(|+G70w|33pGBcnY70|OreCin!DKga~-++@HGZh;7xq8C7X8i?OR`R}3p=O7LX khyYm$Rrms%aR31Z05>=j$`S?iq5uE@07*qoM6N<$f;Dh1$^ZZW diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-dark-center.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-dark-center.png index c285ecd817aa1a8bf310fe4ca2c8157b0b0c13ff..6ecb665b69bec19b1bd9d8cc148d6e97e4a6a34b 100644 GIT binary patch delta 45 zcmXT-nV_N}?CIhd!XcadhT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALDJL3F{I*F r(x3nT?U|L87wa?gF-*D7BapyQy^!ty*YGTEpdtoOS3j3^P6 diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-dark-top.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-dark-top.png index b4de055ffaa1fd3cc154beee1c5c3e9bfc5d8aaf..b6beea84072bb0b194c0b51c16e85782c9a3ff7b 100644 GIT binary patch delta 71 zcmZ3?m^wklQODE8F@z&J`N#kN_RNYriV6-q9k~rRq`jJdXmlNEydlm#%_S_Q-+7{~ aha5wOoMCZwu4@Vd5O})!xvXlkVP delta 133 zcmV;00DAvrqXCd4e;IT|SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM002cv zL_t(|+G6_u|33pE%)$T!jEsyRN(_kAfS4bMKLYVBAbtf>#KZsr;y`Q;#DYM~1f@ZI nNd~9@2xu^12OyIf00ImEzpEkuIJagR00000NkvXXu0mjf!A33! diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-light-bottom.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-light-bottom.png index 3085360e152e7ec162aa7e349d4bfc2e30b06d9f..089724b03e93f15fbd5c19850eeb6ebe97673d06 100644 GIT binary patch delta 72 zcmbQmm^MMhN!QcGF@z&J`N#kN_RIpenK$Z-@d%|SG-ypau+T#&QqX51Z^$LKQ|S)j bEyBzUahT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALCn*|F{I*F o(x3nT?U@CB7(HN{&B(;VP~^+}pS!gp4XA>_)78&qol`;+025UmZU6uP diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-light-top.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-light-top.png index ddaea84ca920941d8feb47d668ff3a09f672b41d..c950dc963031ffb53e6408e699a6c45a85a8a37a 100644 GIT binary patch delta 69 zcmbQmm^?wnUdz+PF@z&J`N#kN_RNYsX9Ss(q!qrkT}pbCYck<>KTB*)78&qol`;+0G7%a^8f$< delta 124 zcmV-?0E7QyngNg`b{TXGVnD10#QZ?~5r}UA@hgx76I6jX5Ss(BAXH2c%9lh|q``n4 efJ|lp2rvNHNFM+&M-$xu0000Eal|5uKdC(Dc9N|I>e~84cw-*o6e%n+KJoehVyl zYyL~0Pe|Z}S<;8rgKm%iGx7WvRk%X8O-xS>N=;0uEIgTN z15)eh;uunKE9uw&|MtuxpBXpG2&{I@w3{I#%*@i^Kf}P$)zi~+ZfmP6uS@d}g~AOw z0ZSdq%eM+R3a&)@JUWjF){eR{q*{d^uHiv$DvXR|Y| TlP|~tEn@I=^>bP0l+XkKRAoK= diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-track-bottom.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-track-bottom.png index c7d0892975f084b1706ad5ec4efdf14d9a25bb1f..92a2fe6be0858131579afb16fa5aac32b73387bc 100644 GIT binary patch delta 105 zcmcc0STjK~nT3IY;TzjsS0Lr=>Eal|A12m369GZ)};xc79D` z`+j43+meOR8}AnWWKtDXU1%P|a9y}~;ZDCDObqAp>h8>8tjh=yl;k(k(+3*I;OXk; Jvd$@?2>^C)B!2(^ delta 195 zcmV;!06hPE)d7$he+B>m09+3h&Hw-a8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?0C!15K~#9!ER4Yl!yphu$E0AO9s-`~%^dP=-uwx_RKZ)lD4{}w-IXr9 z9d?EtF~-=9F}l{eYONuqMDHD?6ey+cob!7D@bTVXtu>^SJrHA@N>6akU7UlOm}dy# xWvxBPJX!f>pL4{`dd@002ovPDHLkV1nh6Rc`r^6C6x8QmC>M<%X8O-xS>N=;0uEIgTN z15{+}>Eaktaf?Bf;nsh~|Ns9BOG-)#YiepTNJvO9u(Pu>{QUWo;l+y=4A-w;XL$bn d`CBF)hWBp-gi_fGoq^gJJYD@<);T3K0RSV#D?|VQ diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-track-dark-bottom.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-track-dark-bottom.png index e71064c82f69c910fa4d1801ff4b17bb4850dbfc..f740034c303f2b64e962ef9ff41647cccf86a6d3 100644 GIT binary patch delta 91 zcmV-h0HpuI0eO%lRX|BZK~#9!g^Do>05Avxi<3kALf!KJA6f$yx-}3F%&n?godm$l xq#{NH_18WUx->JoyC^}8kzR3Yyu@re-yVVGHnuYjA|U_(002ovPDHLkV1kNIBccER delta 165 zcmV;W09yZf!U2#Ze;IT|SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM003l3 zL_t(|+H8!m4uBvGM6brsg^kU{|Nkr(H(6*1WdPe4HgCA5cP~eCP7u)H^y zoHI%(YW=n2(<35BtrZ~z^xiSX@I1S1Zbplp+lpp#p!sikAMt)IEl}{ISAYQkCfqm_ TA>P7|00000NkvXXu0mjfoeo3x diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-track-dark-center.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-track-dark-center.png index 663fd52e0912815648b3e2986702f9cdc0ddb417..ddcb8bbce8a2ec5cbb7dab55f6fa3215e7c90eec 100644 GIT binary patch delta 63 zcmbQp7&JlBl7)eRVcBV)Z$L`Y)5S4_LpC`nVM0K0NOy=gLz25Grzsm7gS0i%#V(gM Q89+r0p00i_>zopr02cKS`2YX_ delta 126 zcmWHV$T&f=f{lTJf#*<5Es&Bdag8Vm&QB{TPb^Aha7@WhN>%X8O-xS>N=;0uEIgTN z15{+}>Eaktaf?Bf;nsh~|Ns9pNJ>hoX=-XRNJvO9u(Pu>{QUWo;l+y=4A-w;XL$bn d`7I_MhWEYv|E-N%cLB9Cc)I$ztaD0e0st{}EKC3Z diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-track-dark-top.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-track-dark-top.png index 76cfb290f18ba8434a1cf0d0f6587e1e486cbd62..180ecc5362a99bc0789aafe79849d0a107139d9b 100644 GIT binary patch delta 93 zcmV-j0HXi00eg@nS3*fdK~#9!g^E!Qz%U3x=bs7g3iGSn|Ar2mZs}i1UO?fhsw01p zARaN6|bb|AY_k@7p&pFf**V&;9lnXYOyHY6eeN KKbLh*2~7Zli6tWd diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-track-left.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-track-left.png index 814f29f61257a7f3024079eb0d30c2d08ce0c95c..b3cf74d68f4aae26a0bfe6e2b175d0584be92659 100644 GIT binary patch delta 114 zcmcb^*upqLGMj~gfnk4|t2U7G_H=O!;fPL7U}*Y3=Rd2XNO{+m30#Nk*D-0bnbw)M z{cpOnYE70`7SDSZi7PveSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004eTL_t(|+DwkU3Iib!gm(>^pA*z1MF`lWxHl79-^2&CureHCVs_z* z41C25!!S7Kgk5LiBzCie5Uw{8P~(zPdQ!L=V^*ZVX|3)R z=iJ9y`=tgjJi5gg-(w6Yr2vmIOV0W6BH`bUBmejbFaUB7GHJ(b@fQF9002ovPDHLk FV1iq1QE&hN diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-track-light-bottom.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-track-light-bottom.png index 2fb4d07249485ed0b303fa94f51b6ff6a10c4d65..16a9a556d2631aa63f0f2d620af1d9af97d1fe0d 100644 GIT binary patch delta 72 zcmbQmm^MMhN!QcGF@z&J`N#kN_RIpOnKw#_@d%|SG-y3KxUfS!QqX6iOh^#lsdR_% b7GY)vQ{~)8YvpF$WdH(CS3j3^P6Qkh5q0000hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALCn*|F{I*F o(x3nT?U@Bu7(QUz&cMXOkjKgVf5RfhuRs+Hp00i_>zopr02TEe>Hq)$ diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-track-light-top.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-track-light-top.png index 64a6fd631dd0df8b223607be8d2a3313ddf64670..f5f89443a3d077d2d1cd79f328720b2868d5c06a 100644 GIT binary patch delta 68 zcmbQvm^4AfPSexHF@z&J`N#kN_RNYsXCAU8St^9JUb^$5%Yi8?!a#qMQl(6n!y_Js XojkesHgVh)VgLe9S3j3^P6QYnzk(zfp(cS8NMkYNIS_wlf^tM~*dzoZ b00ImE-{}h}nxxl&00000NkvXXu0mjf+;=SG diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-track-right.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-track-right.png index e7d47fc904f08e570733cee3d06ffb551496467f..019855a601d9d91350ea2ea8b2b7852de024d553 100644 GIT binary patch delta 114 zcmV-&0FD3F0fYgN8EXUp006&cMJoUR082?kK~xAG1;I-WKrjGB(Hn#MG$}@9ph=Mz zu}7P*2-|$l!IL`x^6{*Wz##N4ZYe@#_sFTB@$}3lbXO;OHTtpxSN*ah;N$@C1G_a5 UWOMhSSO5S307*qoM6N<$f?HE9mjD0& delta 197 zcmV;$06PDK0oDPK8Gi-<000$lji3Mk02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004MNL_t(|+BA+q3PT|bM29SF^}}yV7Zn7de<7aILwE@9=ThNgC#4NM zLS_;sSZm$Ml|T{i{j-$v0I)&JIhWW{t<`hmf*9jhU_U6_#6B1UrS~p0M8+7Hb0UOr zQaE9)O(K$7YcHM{m09+3h&Hw-a8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?0B%V{K~#9!G>WkffFKM+i;|SY5H+yK$iROxv+$K{ENl!0Tg4{V>-F6- z#(*g#?IbfDf40CkTh96P-Ww^UVdu>Mmr_%ulrB1h5F#k0G+yT%W4xFPT8DGawANN@ oEg&NF-l5hCTI;)%QXc^Z0Ne>X90xbb2mk;807*qoM6N<$g8Ix!vH$=8 diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-track.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-track.png index 6cb8dbbec345e2790a89619da8ed8e12deb3d0b4..d940f4084b6e2ce8dd71f03568fe83d0cf8e909c 100644 GIT binary patch delta 62 zcmeBU44fco!2kp*+gCpWQWBmnjv*Yf$u_5t9XogI*r8Krj{Nw4|Neaj@h>c&{?Fp6 P0;%bP0l+XkK=k^(& delta 123 zcmWISW1Jva%EZ9H(6=u+7f4B#xJHx&=ckpFCl;kLIHu$$r7C#lCZ?wbr6#6S7M@JC z0V*=^ba4!+xTSLJASZ(X2eZSXjqmJd2zze1aPM_M=<}0jbP0l+XkK?gAFc delta 120 zcmWIRW}F~d#KgeBuw@-XFOZTfag8Vm&QB{TPb^Aha7@WhN>%X8O-xS>N=;0uEIgTN z15~8z>Eal|5uJQ%ce(!L$&-aIZ_mF!ZD;sGPSDsFA_b)z4*}Q$iB}jBzop diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-disabled-center.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-disabled-center.png index 489c02b3986be86807703313f9314e16a1a7447e..18a60f68875812d9868ee1c4144ad5432642a9a5 100644 GIT binary patch delta 72 zcmbQl7(GGKiG_iIVdByFKp>^$>Eal|5uJR)dh*H6#+TB}m+je>{ZA0;`MpUXO@geCwE$}$N6 diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-disabled-divider.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-disabled-divider.png index 8db39c622664ac1f2fbcb3fe817bcfc066d3f538..ee83dc7f34b11478221b487fa10925f5e20d4b68 100644 GIT binary patch delta 67 zcmZo?44WWn%fi6GF!5-7Adr&vba4#fh)%v?J^7_Qv&dg&WeeuMe@Pt*+RU$68CuRs V#9rB9(F;__;OXk;vd$@?2>_S@6x9F# delta 116 zcmWG*XPh9J$Hu_GV0~u#Eg&UX;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B=8W)5S5Q;#Sg)-R19nmi_<#-&jHL|G&S@LK!h8kKW(kUy-s=l3_cu!U2YRYVPeP TRMyl3H8FU)`njxgN@xNA!htPk diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-disabled-left.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-disabled-left.png index cb7c29f61bd3a6f5dfcea4b4f10cf60b10f31091..e093f50748b48eb4dd2cb880c9beb6823150452a 100644 GIT binary patch delta 122 zcmV-=0EPeD0gM5V8FK^x004LFlobE~08>dsK~xA^W7*5X;LTvgAi(n9SJp$Gft`Wn zzqJg*KZb7%EdO}_F@ONee}?}M#y^ICL@@r6B}I}Nn8QB*;$;Pk9DU*;#lQ*_+5DX4 cxfuf=07bVnaCh+lVgLXD07*qoM6N<$g0FcrdH?_b delta 203 zcmV;+05t!M0o(zQ8Gi-<007eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004eTL_t(|+G5=!(8Q9s`8JK_q z)-p0O4FCT9WBB&%8v_fF!3*NR07wf12*U+HvM4IZ6!`o1FGL-*(8LU60ZC7Pe*XM93lN(Db?^ZM7y$M5o~PkCpBMlD002ovPDHLk FV1h+DRB-?R diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-disabled-right.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-disabled-right.png index 81611090deb25385c5a5d3e2948f0cadfe18e8bc..c7ca218ba0afdf55d9ab3c3ddeeb6632f9c536c8 100644 GIT binary patch delta 124 zcmV-?0E7S60geHX8Fd5z004LFlobE~098puK~xA^W86EF;RC}lhOI143_k@PdOc=h z`o{2&L5AVKHOoH+5ctQ-@*m9j&j1s_%lJ!{6iI5}43NWqGyMMy6#32YjN#u=mJeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004POL_t(|+G5dJp-vY%5vhw36O$MKzs^_Hv@ AH~;_u diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-divider.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-divider.png index 73048d79ee99fd27a16b193aefb8d69828f4128e..3af21666e1e02626887947294b5127987df85556 100644 GIT binary patch delta 64 zcmZo-44xoq#Q+3y%TKTYDJf4E#}JO_%X8O-xS>N=;0uEIgTN z15~8q>Eal|5uJQ%ce(!M|Ns9#{BeJOeL~L}w`2AH{~Z-Lyo^0djzPQC?Zbu>3+jRD O89ZJ6T-G@yGywp#ZY%l# diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-highlighted-center.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-highlighted-center.png index 15a88e7043507b0b59ae8e2444a8ba2fe992365e..55d1d6cedd4956b094ba307348918e41d204642e 100644 GIT binary patch delta 8 PcmbQtm^VRXqNf)C4JrcL delta 43 ycmd0s%s4?sNwUN>q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU9?XMPC3$gTe~ HDWM4f&J7Y5 delta 93 zcmXS!%Q!(rSF*%4q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1B1P%i(^Q| xt)z)MYHEL5UpWN#q>0@4vHH265d(_^!|IdtKS_rNnqJ^D9DJl-2 zAO->%-u)I1ge3aP!+Do`gTXM4fIAQa<6xhZQJUqfw?{U+^Q5!7WgJrIg(2SizLPw; zJUJk#>m>0xNjR&6reRfJIFo&WS*uY2FQfAEHmVs`&rqA8dN%04VvXu%);8|fd@D;N rB~J2`MZxuQLekVN7c+ndFb76Y5gnt|PkWvd00000NkvXXu0mjf(nvO_{`iEz<4d) z8w$a3VtQ&&YGO)d;mK5+iHh3+YlRT5 diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-left.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-left.png index c28759074c5f34843c1f825b8d25c16ec41f88ed..bb5742a73dfc6a5b5a099061c855be38522ce4a8 100644 GIT binary patch delta 122 zcmV-=0EPe70gM5V8FK^x004LFlobE~08>dsK~xA^W7*5bP{)wKAkFf>QMN*!ft`Wn zf3gh2KZb7%EdNCRF@ONee}?}M#y^ICL@@r6B}I}Nn8RNG5@iL8%zaWJ#lQ*_sejJ) cJc>aA01X;7Zp?yHTL1t607*qoM6N<$f+Qp{(*OVf delta 197 zcmV;$06PDS0oDPK8Gi-<007eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004MNL_t&-S7X|{cP|?dw*c`IApXzv|Ns9+85x;sYinz1CnqNckU%m} zfZ^Z2e+=KgePdt(GDJa~zkmON1wkqpkTFOF12QI80AvFU(>_iMP0T S8g5(zsrPjCb6Mw<&;$UYHWgX` delta 117 zcmWITV4NVC&&0sMuw@-XFOZTfag8Vm&QB{TPb^Aha7@WhN>%X8O-xS>N=;0uEIgTN z15~8t>Eal|F*A9VO{LM~)>c+wWo2byjsqDf2hN=7ncT0(Zrt47-k$mX-d+YKe%91n S1DhbAE(T9mKbLh*2~7Zmq$VZ+ diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-pushed-highlighted-center.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-pushed-highlighted-center.png index f9f6a6e4e38d57508c56a97c8e0f2984f0b0f8c9..1faddd65465b02dea10531cb6078ae58d8b3fd14 100644 GIT binary patch delta 8 PcmbQlm^(pbqNgVS4I2X3 delta 43 ycmd0u#5h4kNwUN>q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU9?XMIQi0j}L4B diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-pushed-highlighted-left.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-pushed-highlighted-left.png index aca1e6a6cebb8c128ece5645fbf1449f04a9cd3d..7c803a6ac458a8af0e7fe12efe9a27ae6a2d510f 100644 GIT binary patch delta 9 Qcmey)c!_a>%0$m~02J2*2mk;8 delta 44 zcmcb__?>ZrijriBYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK5+iHaKmX?qZy diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-pushed-highlighted-right.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-pushed-highlighted-right.png index 07b36cfa64e32733da3ed799c22114e63126b1d2..b22fe22299816819b0312eaca89cb3142f32a3ae 100644 GIT binary patch delta 9 QcmZo*y3II2WuoVH01)^CqyPW_ delta 44 zcmcc3*uXSFMM<*6HKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNmZM8#bISF;c} diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-pushed-left.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-pushed-left.png index f293920f3a73ceec1fcc781ae7d3522f03ce18d7..128e65949cedd1ca612bf538370d4372c53693cd 100644 GIT binary patch delta 121 zcmV-<0EYk60gC~U8FB;w004LFlobE~08&XrK~xCWW0}mxP{)wKAkD(qC{ZEFz{bGB zm@Lh}%D}+D!X(Ph00JzG42%#469W?w3}(vIFcWVV<7-AyMuz`Dk-5(*6u^$Jf6Vqc bia`PZT*nIT3Pa=800000NkvXXu0mjf)qpX$ delta 195 zcmV;!06hPT0n`DI8Gi-<007eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004GLL_t&-m1CMbc`_Riw*c`IApXz9$jI0zDJfZPWMm|5VPU}l5=fSo zmS$jQXJ-Ji8JK`T6vP425DXGU#!PS-1SU&>nVA`m>1YNutUN`*z(9Eo4H$R;&3*Rl x83QXTD+3P?4_HP0&002ovPDHLkV1j@oMiKx3 diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-pushed-right.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-pushed-right.png index f3371171d6b4d7eb200f88bc685396727192e6b2..c912f66b9bf37fe24ec813b30bc6c27967c563e0 100644 GIT binary patch delta 125 zcmV-@0D}M60gnNY8FmB!004LFlobE~09HvvK~xA^W19Sb@{`Feli8Ro7>uMPs~H=a z7#Y|Zq!}2KnV1-ufJ`P)pa=wlMZgdbgP8#Y$yP&*b~pp*B#^^iGx0F6GCX5oTEMiI f;qZ&ceT+2#GNBHddA6~>00000NkvXXu0mjfRf;eF delta 199 zcmV;&0671T0oVbM8Gi-<007eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004SPL_t&-m1CMbdGdcCegecTK+MKuVPU~wWMm{QDJfaa$jI2p1SA;P z+1VMSrKK5w>|`b&U;tr|AdnUXt3bwZ6-bz50cK`q1{kKJ89>yq7DE6UD6jx}&BVjQ z!@$bQ%JA&jGmyjrroDUjG8{g9_{HPLkNbcsY5*$n9C}N4&n5r>002ovPDHLkV1m1B BQ3e12 diff --git a/AppKit/Themes/Aristo/Resources/segmented-control-bezel-right.png b/AppKit/Themes/Aristo/Resources/segmented-control-bezel-right.png index 27898baed443beabb73c21c570d23c19aad4f992..3b195a0ce3a3b9fe4ae173fbd87bf70a7c06a1d2 100644 GIT binary patch delta 122 zcmV-=0EPe30gM5V8FK^x004LFlobE~08>dsK~xA^or%~G#WzxaKT-z=~49Nq4C|m%D+q}a0D}8z%5Rg&wAhQyU ckFe2EUc=r!0zARU?f?J)07*qoM6N<$f=u2ql>h($ delta 193 zcmV;y06zbW0n!1G8Gi-<007eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM004AJL_t&-S7Y3}ckh1&28O3Vya0%s82m&^j!3!W>2E_FM`T(JdTBkjE00000NkvXXu0mjfI~!08 diff --git a/AppKit/Themes/Aristo/Resources/slider-circular-bezel.png b/AppKit/Themes/Aristo/Resources/slider-circular-bezel.png index 0025fc9a498116223e1b5e512a10bef6c623e66e..8d69327dde10954d4a66e36a71aaf457f37ef712 100644 GIT binary patch literal 915 zcmeAS@N?(olHy`uVBq!ia0vp^N+8U^3=*07`vU_5V@ZHdh%1nb2^K9{gemCn?~f@6 z5z*Dvg-Zzv3U1rBO;S>F?b@{q7A)xR@87g(Q&m;f{Q2|K($XR#B0@q!qNAgMYJi}k zq9P?FWzCv3KsD2*O`AS_dT(!UK|ukK4b(Du@?;>ptgH+u+uYo|bLY-gt5&tOwN0Hm zb;E`YJ9g{~-u&|A%U7>n-MMq;-o1Orj~{>V;K8X=r>)l zB|(0{42(=HtZeM;oZLKo0)isq5|UEVvT_Ovs_GiXrl#h$KK>yg;W2S>=~>zN1%)N$ z)otw^9i3g1mTcU2;P{D?=dXVG_UqT5zkmNGEEWVB%Gm1Z;uum9cl2^-`6CC3hD4_p z2JXl`cT+D;s}e6?E_N{Xb>8b=&rc^du+7-{u6W|?JSfu^ugQL^_vmIBWUu?UWx>SF`|h=Sl*lXY;!LtS68VEEw7~C}z{M!$Rbq2{ z0^eW%?{xM1)ddG~{^YaVWAi&y-WtzwD7|LNgnOIQTa5KBy)^#6t#668XBGOspv|D5 zxuql~TyUN21BE*!A?qBb_WL~8HACy1ox{e$s}Z02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00WmvL_t(o!_An>OB+EP$7h2^ibWbI)Kn^7N_+8Cq^JG|gVieV`EH@Xo4u6ot-a-hK7F6&CT(hogIFD ze$GRokobFcc7G|#8$GV^fwdjMs z(16y+$OyYmBta0uwYa#*4-O85!O_uCRG<&~LIYaRq)}p5xhaULqoc#Iu&}^SPEPpY z;o+Tt2DG3F?ZLr8c8OjPrKzduRbOA<#rF0#-{0Sl34hRnCbZ$v-`~%GUXaA@?r#6; z>MGyc+lwjCgf=`V6a!j8l*YzJ`_$AF-`(9c1ZcxUZU>q{65HC^Ji%a445bl38y<4x z)q~h1ZcwpUJVTmnp?b?cuX@ofK3Od ztXKj~Xu|_u_4W1I4?Q9!KR^FXZEbBB!#F!T8xx=fO=!adUUhYK`o{p`5zXonI>_*u znHg~?z6;QR7Bry^kD8hq26PWb#62RtxVZRddwaXsl6^kktw3LBKnt2uTdA(DX5hx7 zB7bq8$S5c%_(8Kg+}qpBr>Cc*f(|}dAz^4hOKO^EduNwKba<8>)3dX)-_lMPY-wrX zbi5Py8wVUUa1Ax6MW39UoLo5)A_N6vSBdy_LJlSF>$AMPypK+&)9Z4%{?O9nt*x#9 zfi_%24Qi>+b0Sr0m?|nN*ma_M!IBdgGh^LKJhfOXFYI=EuEXJQ65l0Gv{|jzEY!%_ z6xmmyWy{pK)hnkIO(q`5QA#78NYZ4RMb?M_G(t>|JH3R27_y7O^ diff --git a/AppKit/Themes/Aristo/Resources/slider-circular-disabled-bezel.png b/AppKit/Themes/Aristo/Resources/slider-circular-disabled-bezel.png index 7053d3f3ad412394a1e275b704915e3e518abe0c..ca499dfd8b425379db7c390ef1c0426b49bcf707 100644 GIT binary patch literal 937 zcmeAS@N?(olHy`uVBq!ia0vp^N+8U^3=*07`vU_5V^V-mh%1nb3>Ga~gv|B#_ebVJ z*t)v9a6v&qK}ku;ZQHi3UAuO{f(8Bk{hKyzs;a7*KYxB&T3SRzL`X&YgSr?%ltC|G|R?j~+dG z{P^*cCr_R}efs?Q^A|5(ynOlc)vH%;-n@DH_U-%k?>~L|^!fAWFJHdAm_6$oFucl2 zg8YIR7@3$^SXkLPxOn*Z1q6kJg~h}r*4&L$@L;~Zx!PCVtL_+fD!SC^mg);09&i~$bUncfa z+@*W7+t_q(sm}G{%JjUwj-omO*YYRu|o zHYF@_JSx}H`C!ST%g4>x`j%U+{Ba}j(1D8*>Z0%ObW7iO z{bY&IEAz#Mu@}!)HHK`^IT60=2`jgT|C{@JuWY@oAH=v_k5$Qv$ve!C)u250gt+LF zUOnR#9iG9~>509Y=W2Fd2=Y{=uvV|Q}6DCQqKeyetHs9|2pM=RNOqmTcv!!NLA5&L9UL7Tsb%rN|(`Spv owOdiEQv@YXFtGgdW%zqh{Bhg0`8%&gUj*eIPgg&ebxsLQ0QTv}`v3p{ delta 1144 zcmV-;1c&>n2Z9NZ8Gi-<0025i3&H>Z02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00bmSL_t(|+U!_KOIuMCelJ5~jDm`298eonx+rZouDXedK?9=LEb0$% z3@5Y#3bfv0xo*tkT>1) zeeXNxo_k(cj^mi8FxdY@;t^q4Ht9*z)6=s2{QOcnEF+WfmxE+~j*pMGOG--o$@|vmDifW4AT=TqEm{$Fa&q!DCFS$1tSr%?xX<7dzJbx$ z*vKYQM1MldRGXWdn=&P$2YdsA4!;vdASRLK=4K@oq^iu!%(M}KZ(sn6RJx8ugw<-b z8e%Jn&gfJRU;wM7rDc`lfg*@d;ZhUZw5cHsV9*LGqQjrq9ioXKaaCCN=_bN&1(`f% z@J^0U0SaaEeI@*{gU5&{P5;-|J*}u8DNjni>04pAm;KIVf zChf8uWE0aUi5XZV7Z(>Cu!Q`GCc>?*uDYmy*topB)KKG-79v+yS7@L%fF-P$J4BGL zTU%R8YPA~mBrQaaj*b{$0Bd4mf{VA;1p4~=R(5xHw+{Z#7V>$D+#;GtSP=(5rG}*8cu}kbl5#>m3;xxnr;baW*5Il`^Yxd*Vk9Z$H#x6kn-X14-F07=`A`tJCpyw;&Vw(rg4B# zm!;I}^+nX3tHVDzx3{pe zB)Xq31NaRN3=Aafu)4duAN~=}gR?PKU63cliP?Le)ZY?+1sDKDRx-bd!`^BD0000< KMNUMnLSTZ)5E^6v diff --git a/AppKit/Themes/Aristo/Resources/slider-circular-disabled-knob.png b/AppKit/Themes/Aristo/Resources/slider-circular-disabled-knob.png index f657e437bcdfbb654cf0c7fdcb9f71342ace2412..0730bbee75ab7cef4c5ba5baa7a7eff2b213fbe7 100644 GIT binary patch delta 100 zcmX@cSUy2Aj)j4NK|SqV9+0y0ba4#fkWCH|e$bP2`CsYR-$rh)nKXUn+Sc><=Nq>9 zPD+2C^5fix7yQXVjXi4Ihvhe{nBc_I{;hvC|8xch7G4oig*U4bfhI9{y85}Sb4q9e E07n8P9smFU delta 180 zcmV;l089UO#sQESe+B>m0F7@ZK~#9!VpLO86X4|JjACPB)Bg4A*VXUezb|7E6%|d8l9JNo;o)KU z`t_^+)2B~4S)`?|_ZAiw~$W+yTwaj5_R0000zopr E0JWDVI{*Lx delta 167 zcmV;Y09gNbxdD(Fe+B>m0F7@Z_fKr~RL8~}Kc VErQ(F_;mmP002ovPDHLkV1klkLPG!m diff --git a/AppKit/Themes/Aristo/Resources/spinner.gif b/AppKit/Themes/Aristo/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-center.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-center.png index f0bf860d39d8b378c734c8509d6e1bf9dbbb40b8..9f6eb024fd9654ba1bc3082c0c05f7d57d02b597 100644 GIT binary patch delta 142 zcmV;90CE4(2&w^)B!6*9L_t&-(~XcZ4uBvGMGXm^#e`i}R#~}hJqG8IRaOVU5+@UD z`ttMhhqtuqEJYG^$xvO!%S$OC;*JB_tQTWkjG2w0rp^sa|eCkRY`00000Ne4wvM6N<$f)bfMBLDyZ literal 1105 zcmbVLOK8+U7!KBh7AttN_2Q6TD!R!`_L;QXl5RG3#nif8=&BdfWZH%{nV3x7ZJ}U& z90V%}o&>QVsJ#?LM9_nRTBw2tu^tK@1h1l^;z3X+?QT^lJs3#lk^lR?|9QTzcYjmk zu11dInhHHyFYv%RrO746jLyWhaE4=e|-3e2acWP2a*Of{2U%}dL{$h zKiONdCPyvV=DRvUM^#}2E~X}^x?^6bRI~gFufq1xwa9}N6FQpZSDh*weIQ2y43Ywj zSuh1b3JEBlNT<{LfCLc~p(G+HhSEx0QXmAihi7VmJ){&hy{5%ZS$>34UlGMhr6N?~ z0ttpiB+GKdAxSZ25ep|gYF1-j*ji`MaA*aNPaWcch|wG*<21`NPgg^5eZyEI_QG1C zSjxnz>5E8!qU%O+tyqV&i2t~;u60j`gq!B&U=4?qoi$ zst9R%2BxI$lrE`iKAF#F(sgXX3#sW@xUTCk-5NHrAy&x+*rX&V5i(ZqfW8qzNjO4$ zkn2wZ!?YYPI!EPMjaI{fa}wKnKwPkrU&UERA7=iITa71m6{&Fx{DdR2Wj$fFbZ{IO{!>i2gzPWYB*6`)ME?Io>L~;-8nfmqPN@;KT&ZjTO e?$2Cr-`vbS%h|Vn-Cn#94S6BotIc;GKm8lg9A|9+ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-left.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-left.png index 5bbd4491505a6bf1182e405da4f302be2840225a..d26b98bc073a4ebbe5b6394a4e39cb0dd71e3924 100644 GIT binary patch delta 109 zcmV-z0FwWu2#NuaBxX@bL_t&tTVuI+>C%5WIXMOpVEOm&Kf}+TKOvm||Nk?9FgDIV zoH9glfcV3|zyAc7n3xz?SXtRtefs=4jfaPufkj?Uw)(-tM{F-&zVZP8zMMi@e8!z6 P00000NkvXXu0mjf^J_9g literal 1061 zcmbVL&ui0A9FGc9hP!#09`?w<)0(`O{zwznjkIZ8W$i{+u}9P7wawP##pKPV1J~h2 z{U5x0aCjCx>^$@&27?`##;ixXzYoTCCGG(xhE8z?^221_mY9Y~d<4?cUveJkLl?r&g!+^0I0X zS1@CY5V<~MbKLx5FPt4K=s2_j$EObQK&)ss$R^G4%+uo#T)$jC5%$7SqFBnr$n-@dK+$#M zxQ6JER`DMS=8d`%IIJjUM<>>%i#=M>b3FSa z*p972l!XY%DJV-YlSN2DP|(H0V{XX{sp(mGY}a9SM_hO&S1knCq$H>j(iwNaYMW3Jwuui4YiUq6Eys(`ae0oT z)p6k5!?qC+7Yy^OI;Yr&*?;5Kl4(OjT2etMpUN7LA93yf$(hKU5##3gt69cZtOMii zN$a!2$?#y0O-#T>qjb}H$HwYbN!M!8hsKNO%bUT^nS~wnYOg<--ah)Z&z+we3^$jb@uN@h-1mq5{s2MlaCvvP^K9Y%(d%!Y4`wE=_muZvKkoI#=yEK0fS69vETOo&W#< M07*qoM6N<$g8bqup8x;= literal 1061 zcmbVLOK8(z91jkrjEx~E_&6A{qqh0Jq|J-Pk~Ym&uyeE(3nDH}zOHf2W63w0jp5M4 zn2)npj~)aO@gN9#@E{^Mym}GQfj41z@F3PNT{{)V4hE9%k^k@a`#*2Z&P*aHb<-2J!u}Q~nK+qI5nTrF{T0od?pn1nrnQzZuGPGl>%*AXOl!F3lInyg4s;^M~~&(Z}yM07R{QWg*Z zEx(p1 zP?qI{gX2=fA{8xr*o;$NG%;Y%QDlWqfF0kX6GpS)FJYA-p6-O;2IcZDu^06dMN-Db zX28NUU|lzft7jeI3i{*5p4L%qIY4X$MgCG~k$N;I24IrA{e==k;*D}XbVyOmw(eU? zF7j|mR~hmrZ9BFCpadWkGeG2kAVDZYAnUpz7@B7Ag3b*%_QGbMT#y8=P~&;he8ANx_u59mTQ zOP5W{@se{=o}FlQ6gtb$pB0rYyVHqSmF$u zG{;}fGPoigm~3}jpB#3F2YF;-LNXeSJGrN1tS*#vtrmZ1tad-WS{tV0?_UoOz1_T@ z)7tB6-Cz9UpWX3$bJY81Qg@@e{?7a{{^awijqZ)D&5ya!D=${j97300Z*Ols6x;3g gr6WhboTd(pQtGj(ll8l|7n8v)6=(EE`MI0F0Zcnl!~g&Q diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-center.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-center.png index 9f8aae54423d4c063f80ca6dfc51728acdd185cf..84dccac61000ce906e00b8d76fde4090f65e270e 100644 GIT binary patch delta 150 zcmX@Zv59elN`0lLi(`mJaPqG5_jZOIo>6YIB#wNUZE@hse2W7|KFn{FXvw=b-@blZ z?rkoWi)Wo5$M388d3E)52ch}9&d;~Mzo&BY?Ag*DOgAmA&b6s*YHgi4cdjg$yK~pB z)|QrEKYucMDo8K4O0f9b#0X;8G`zgGclQwmhMu@-A13qP6OLp60#8>zmvv4FO#sp} BN0|Ts literal 1100 zcmbVL&r1|h9G{9HB%>n2vS1wR5VbS!&HkDl++^I@$pzPJT~ItZ&b-x0XWlsT)?Fnm z>Z0PIL(!%Ff=W;cgo=WYh+=OM)uBs=ph)NtNLanmT`Ld|4a~gv{m%FE`Tm~n>O5Cp zceIXSnEFh+nhVb0-LsQ^*QWi`^f*G&y`&o#NJ;k)qnLOAu^C$*L^-6JxpJT)=i-yt9`;l z-4mU8V`A7ym|W{wwxujn0vi#XE!!iGFPD?tI>)PF zgOCAYfQ>;Oh9mKK{0u7s2m~MsPz=Gi92R8&*y_VkZ=P9@bE;PLMWrM+M2IU3La9{Z zOJN>+g91z>5&?%OhNwlzA9sje4mo~vjX_1e;aM)Ru)_w7`T#DHBu69NNWpfq*-c`{ zuNI1yOepKF0C^zTc97S)wNG;BPZ(QT`}uJf2|48BqG!;46q;*bTD$EX1%@;l`MhV* zrsyLoHi|ZKNJdR^^bc=ZrVOA2AdE*qTm&%*!UO~fRn=meqG;imD%Lo*!bT`oN-0V@ ztSAtwngn8ETTBzFCYnx5@ftSc_(XRMRP$?5zg28vTdbV&kWR3d$9SYR0bN6wV1Ed^ zY^poTW_81I0y${UMz$*QtTAM29=6%_`pVW8{(j`?&n}@WrP}sLy*gdIGoan<|{#f2^rpnuRk~|*Jsm`_aU;Pa~i)5z& diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-left.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-left.png index 5cb96fe54846dbd03ed03ae5ed62fa19857e9d02..5905f74f0de89925117deb93d71df1025bb75abe 100644 GIT binary patch delta 109 zcmV-z0FwWz2#NuaBxX@bL_t&tTb;?V34kyZMbTTlASR@8JaGq?5Zp1EP5jToMqA6n zQESJbls51zCG9znYpoSsS1hFz97eV$+n5Jn01z1aks@BO{~*58`w74eIp#&^x^2B< P00000NkvXXu0mjfrH(C9 literal 1066 zcmbVL&rj1(9A89<0Z|eU22D&YM_Bt_%euBQNm*A};sD1I7f*EU+tzIDEA7J-q6zU} z;$4gh|ASX!G=W4t=*5dCFUE@pE?o44SYOA6nxF@Jc<=jt{eC{*-wzk(ua68}97?59 zBgHwrOz(k2K0Qd!Hv8c{y~aqPN|tb)bj$#yG#l3tQ*_M+DkIZgTX~D7DX8vLs-#-F zp<3AG%*2L^T%V#-sp*->H?0;TObs<0FURh^*k&2W&at;LB~bG7sOikD2WV-1zGAJn zEX8JLt})Y*N(o#?9)q2zVgyP)Nh9Dhet9Oz&focqFRn^65^{o-|2L?j>zGl!9zt+ z5)MH~Q;T%C<`FYWd*OJWK}Vq#I6iT($0Uqq4X=_MOCvo@!Szd}BVsS?6^fROk4&G3 z9N=9y$*XG}k}~=g#TlM14yL8u!tkc3&u z5HzijDHP;vA6xW7VtN+p`*o;aBd;lfCTJ9^{1vO_17s2$R4{J$Ct$IO2@adsXYxxK zres=n0o@ekxb^VY?RP<x2$2DhByCtpL_t&tTaC&w4nRN@MbSIS6sERZo3IJX!gMH96JJ68(~!_9 zPjbST^8}$gkE02;?<%EWW^LFulMwT~tkLBFNU9^^0a3ce3+^v`+HW{<7k3v;G)rFBuqH1iZ?@e* zhR8tY!ISK;Kfsf)T|^Xxv5O*#veQoP;6((z2znU!(zR1z>|hS>eZMc?&*%I5-uT#X zPj_#3C=}|+kElg<9}MI}UF@uJ8}He5lIF^El2mA2_i#ut$rJ{8Tc5^7teef7ukio_ zRjg8(mJ6e@L2O&MHxcS{y65%Gb?gY)!M$8mgcIIy0ReD>vg^! z<%u^fpj0XqaEM}rSw#G%L-j_)@%uUqD)tS}a;Zfe5HRXfWR|8m7U@n3wp%Fd5<7mo zP^@G^Lw5zlL&3I#yjs>iE#g06>}lwsD9_IDH*vS{Rsp2eD? z*HmK6+Ss9aHO;XpMo zf{>~uVM5F#G*MA<@mww`b+CEIr@CX{j$e!UZDZAav2xbKIwf9-kXmN~#;b%9ze-$? zos5HmZdgvB2kqI(R>hum3!9opY|yH&Z0+G6CjZS_iN-YrDbW-{nOIVTTpMftPt61t zj1UaRU&GRQViOpMyQ9yP-Q~d!+Zd0n#_F~8r);gR=T)WD*nIG2o>B_U5MySG(vg^eCRau&~La>r|ZOv-(ee@tUO_t3#(}COVZd_7bL`k~ch3KrQ_Mie%^}!>rPzyy> zbsNPF+>vV)HQQv>z=rirhoC8{Ww-CBS|7r67wR#rBs2GTf}ssP$sCB}K+Z{{USsc& zi`s|UirP@0me85qyXY2QBm^eHD(##7mM8j2W|3DU`{0^m=tUFUmt>Zl>d58kwCy4~ z!h(S@bhl4EOOf!gU(b~fW^xKUUt-a!)gSZ0n>;YFJ_2_P@fJyHDEfg3MZ^Zqs zL5iaG%eFRPA`55bBt!nNx}l2z#sP$}Fo^LW8iz0eK|+?5s3J*<5S94~$4b~ROr+yc zA)FB;2|`(kgD9VhD!e3RBAHA)R>5X15381jD!K;IEn|g$V#TzJRBXFN+wQM)K)%<; zw%2PrbhGeoBcmDYI6SbFTr&WR7(L6PLsBa?u zyncSBib>6Ft=H%)$3~>t_Y2!^e6C)7?ZTl8FY`mKshXO`5Am}H_xu#^OkKaXYIaMi z=FY{!#^$?|?3dxtz8xPgU41h?zDfIb>`7_#$HIR9?I#v*=%j=-hpQ$BXU2l@&t}@> Jo2kx|zW^MRZo2>g diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-left.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-left.png index 5a2ea5996706c943fe52f7a1546073fe23a9f240..34ef68ee9c82bed7305dde78d6e160c6aebe29bc 100644 GIT binary patch delta 89 zcmZ3=kuyOun1z9Xfw%npLm*}B>Eal|5uKdKQNOpTv9Y!Brzmqr(yw+O!^Iyq1jf|Y s*Cakq+*n(guzaod={?1rYxY(%_8u1Yxilpr6R4fR)78&qol`;+0Nep1S^xk5 literal 1061 zcmbVL&ui0A9M2SVj7@jd(<3_xws|jU(L3R};!cXIp!`|jPpxWbkzv{<9dev@`gf;r9h8yJ*avxO_zw71sZ<5>o3I@KDj zm2at*?(n*-GpbUYG zl1NHrGMVc@ga`^y6p)xe8C4Qh2*L2-nHsU1YDG7OTI`hL+mr^XAapvNWJgN+q$MCl zQDP2JOfZW?xaCnZN_gSSh(X7pMVx>-z6WAPv*B;h9M3!*gy06{@(HmQ4im*vCPZc+ zpd=JrH;$`s9nuQ^1{=J=~w zMpvu@UK%js?oy>~ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-right.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-right.png index 610fbc6c60fc76ba8a511d945507f50b21e8791f..76d28a271b15815bb0fc932e75f2fe35a28e3282 100644 GIT binary patch delta 90 zcmZ3&kvl;$goS~Dfw%npLm*}1>Eal|5uIH5cYdRzNz+qNW&wlEf0zS(G(^H2Exyiw u_*{J5ex3VvviEX7cd0Ho^y=%MVupJGV*b^2g=>KN89ZJ6T-G@yGywq1dLs=0 literal 1060 zcmbVL&ui0A91jk3jLms)hlz)01|GyF?&sU>aO@m^GgX2mKaU&E)N+95 zmZvM$@}iZs`H5>_JW?5fi>V1Bx9Npyl;b=^QYGXYx%iYOBu_5zDoe3OP6tk%l zYstkPE$TU*{Sj=(Rw2qjgwjcvmY|YBD2rfL*A2zcG(%Q&smE~~Hi@*PtRPg7H4P!% z$UsG!R18Ve3aLUNlkQ=QUPw*P!aZGw>2|U3M68+*ut`Z!A*9*sfY}D2By12L=V}WJ{q^?Vmyy2n z@cI7FZ^K*W#`dN1=#_`N2L}g(6D#}QH#Rr-9`C+?L7tqwn0dCdwe@+VZ+LiSZFTk5 f>z(zPPu!_NPOBvEzs-MKi|4jjnAV?8Et_wnl<+)$)G|4$bDYd-&zKvRIh%qj2qa9CA{wdO0n^S(3yPLk0 SwXYQb0000-y)iRkA+jO(h6}Q&yO6x%|o6L4Yn@mim-L#;B zPXvoz#EYOPco3_I6cLdY6t%?%=t;$cq97vFi{MF|w7XTIcrcL6Bmeh(|MOI5$F_$0 zrh0~98nWA!e6Z4Y*^G7bF68kxbA2UgCbY*?L6$SoOePVpVY9YJG+ReCU6blov59|TrL>DQg53hf{k0D0EMtPb zGIrQ>SCq|Zx@iaJpggnDD#$elk)gWSVrTLzne*s_#NTntVpNr(EG8jrk0eyURk6nZ zN%oXnM=0?>n2drZ4wjq({fz z9rc#4uLFkgh78>~Ct_`qx}b#yi_+R^MhKl$p=(+l>svEtsEal|5uKdKv42xjV`FRMPetaAq+k3C|21l+aj-sJ zc*;>@-G2N18$NEhvCn4fc#tYU#3U5Ie4iHu1oA89EZljs>o6%wY;@c-C@q+~*f-9I(tBcQsjpB{z>7*2JQR zrxzzH#^RijF}bl(kPT!;U}LI-z@B$}ImmGxUYYH~Yn}rg6FQgU_MNJhra+!}7$oB` zW{hElR9$Pj|=!!b3_tjlFp>uRx6j%!fr$~@m{wc;%? zPP|zjWipwNLl9!jBIdUpss}O0AMP=z*f%`Or515O$f(!I0?l#E)BO-^w^TYHcKmLl zSjzZ7cXW+bXx)#&zViQMV<-CV=O1ugo^Sut3Y7k2N25~`t zItfa;VL9PBEYE(lD)y`!*wj2?gHC>B>kxgI{x@z#Olk^J#0)~?iL?f}F4p{?obk*V zK5UM^nx%KeIxyTGv_3l=3=ekL#CU8p9-Y|AHk-S<-@fdexnHhFqtVr&u_gEJ%E|`J m-uzzK+T4uYSzeBw2J4Ye7e?Mcd;0u*IK9Qfr21rh=Js#9J65j% diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-right.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-right.png index 8453a2549598f33c3fc39c36b0b3fb6d68f14887..7fd6db716d28c9aa7e88c046eb90ae6bf5e76172 100644 GIT binary patch delta 93 zcmZ3%Q7}O=oP~jbfw%npLm*}D>Eal|5uLpA)BHw9^`@ta%mN0R|F8%8==`6cktV_4 xE#vXwy7;>NI`(#RZ{~jPQeA%N)z?4840qm&6}-~gQ2;c8!PC{xWt~$(697LIB-H=_ literal 1064 zcmbVLJ8aWH7!E2brD_oa12D9%D<+72XD4xDH7!mY(@0HQ(g-rvu`i9=+Gp$wae`DN z1Ouun*yzAxti-^=01^Wm5|x7JF!fcb0k+L3%E)ex`!f)i7SZ7+xikJBHe7>c#kG1sA`qU zq+FPh4Qz9IXu}1zOVN?Y#8lww#tI@#1ua=ln%#NxmSrq6&0dceK*7zTnl;_>&_Zjr zWVBX{l*vv_G82JJ32a1kCa_l>Uk=i2n^&g$@S10twh38DvmK|(g?T26J;cO05H&yo zFbT*(F(ygUB}M=c@Ic_95QUN~3Nipp_hG4;XIAB+s&%#KDb3ahab=!wG#Xq(=_0;}d|dYoT94{@4@`4+v`}bBy^-fUixx#+Rk2aG zkwfxonx%g@(=ufMlK?^~1|$I_k`SgKNU5rp&=f@z6RObTI1C$uN>+?zK~7W@2vsc! z5<(`S35t@7=WBBEDGqI!w*e=%mpPcd389r=| zznZ0YMLRIu9<)9^91IU~=)`z*H10mW70zopuPUYBQ{}byW&8H&>f++SQuF8cvA#3l z<=+1O=sUf#`(tPH+9~n*(AC!F=H>0RUwgav*4MxBA0LcPO+Jz9%Uc^8A1?Nfj69u@ iq*o8O=ALaIJAO9u^+N1q?DN>8aCY;#S@lI`@y>6GV^C`V diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-center.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-center.png index df05795bca19257e18015dfb3579a9726bbdd8f9..3e66486b6730ecc8ee0154e15c15bae970041267 100644 GIT binary patch delta 162 zcmV;T0A2s#2)+T3B!7iTL_t(2Qh+6BL3w;6?G3NvqvDN~YzfEHdIOn#nn_`S8rEFg{wbqbQ zg4TMQ@=w$ELkIymzX!Bt0RCpTKNbwPVU6Wj6T_^_ z8@XQ6n>i?Iwi#9fo3L*>6wNSAExw~_{g{A0TrjL8`|Z&a78rVx?TKb!#%aezqhrLy z-6NejZKPilbhf1#H2ESWFfmbqZw^?V=qK4lUXkvDYmNnrCZs>fE;-ek=>qMxi$OFD zLmG@h5JO=UX^h9?`v4CSK7`_8gcl(M<%gweuAUdOvQpNfrzBe>#1T2JR4Ro_ zk+AI+I3x%{z`^q&Y7z2=Eu#7%%iB|7kg=z^hC>Y70s*7iXAhDjOFdl*!E`d2Wn#-K zCyJ(w^HqmKVaSYOgyM}b&cj#&Apt=_mX(+yNlGLp^A(Pju#G682m;Ti zB9erVtR!HJZ;L6sB&DLMR3cu%rY(=CmWC_32GuQN(W+Rn-Nh=g-JER?R63xmXcOBj z+74*%j)IJ;8CGx(%Ci)$j9p_0>xyfeU@^auj*KEFewx;f>TH|c|bY(ocp#Dke(P25uGA&@Q~tavCnZ0PuWk0 zGqSOXu`T=0qtNwHenwK;hZzbs60J%nctmU1moS{($9F!wto;PgAO=rYKbLh*2~7Yf CiXoi< literal 1068 zcmbVL&ui0A950(}GPi;#Lp?n*yy%*|m-JV{;>?=H73>^c!3sMxO_?v4c6h_x-+nKcDaKXNwE>CdO`z z#bU9E!n|6d_i!X%9HD26`Sg)q*GaxYmfSjN>pqStrdz|HVCyTmgmts?_&uJXpt@DA zkV^5sWVkk~M>cF|dlVgu&CG_LZZt6gHN0XuGShv%%K*!inTM$&EP6TIu;$l&ytKYh zHrAVlXfm^Rz)UDn0vi(@gm%jbq)=vhyb_h8XO00q6VjBKlb|ZaMUZoS3{osi7%&Y% z8nH-7W-^&+z(WK%$a9EKpo}E&5`>`tG1QxH)}@lF^?gxIW*UTe634aMZMH42uD`+| zQ4}K%o=;GVM9^`F9wwY%YQUi4!0;`PSgr#iM!n{)5}Bcqo}^%V#o{Tk6Z8v3OU8w| z#~~JSwjJfwvkpiJ{|Vzv>!956FjvBXyXqUXAN8pLnAYxmN0A|oMta~|v?+Q^b&XXU zJEWk>4E@8JmMKA$g$QMmFvG)i79kNqQB}3HrYM?_R`~(PS=c1XYNCkpc|lPSQnf5h z^K)s9SCo7zpU-9n*n$%f-7)aMuSNa#vFf>4Dd%IIxPIAnTZ0K$Y`DY?8m?7w*{LP}GRB8UjhC9@i2`dIUSYR1uExM(>3 z8kWHmoxn&u9et{tE)RC-#`ttKzARr}qieNXP?d7{xn@?Y)eE%_m>jK*yxVE+Exc`a z_nVXPc>GZ+we$RY_u$g2Uq6nX9Ddz1;Y>!{r9=|pE ig0El2-TgPiL2PI|cDQwW^5>>4NBdjIFQ{8{)y?0YB2k+F diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-right.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-right.png index 8efab7d8d91824178a8651cf11a11e0393e78673..5adfec42cf6eb7a8859a1a42a5cd4ccb7c608f9f 100644 GIT binary patch delta 101 zcmZ3>Q87U>o`r#d;h46J3y`w+ba4#fh)zy4NUu2gVZzgU(>`lA{f@ZTz2a!WnzWy1 zKSV!Z=RRG}rjU^IlYNndqD>kHzt)MCMJ!&1oA)q(W|+(>;>Ug6y9sC%gQu&X%Q~lo FCIGqwCT{=$ literal 1069 zcmbVL&ui0A9FI&?#-@jXIPvhvKs>C;duf{{VRg%z#ud$0x}v=(O_SF(wE1E3X0u%e zP6Q8Lck|-i{R1+FCzT0agn6#&CRNHT0P;$)`T*0QjcK zOR;>HGZPywb_0rLn3>r)Fs(Kwpn+E$FV7yl++~4d=h-`10~$dAx15Fb5HGJUR;~56 zCEM)mbubevl)%Nr1hL!kA|=kVeO`si$urM_z6ojP*~6e}Mi~_R5Q8iSQx+5<5D|yc znOrV64FrfF4+S0xDU?&vf&w8Jd@S`A+D)aR=>uO>%d;&)0)^+h-7eQnbAGtOBUzRc z4nas!i&V7c5i?GC(bSMZ!;uv_0daf}B#dUmUnO~#MtYcn8yLnBu@?;rMN7uVX22s3 z@~)fY)whmF1^)@-SnH^|7GS=DBY!otXg``$Lolt~$&M038jZ3PI8!3IH7z4FpOJLP4zTwB)QqRW@X2ueH7vs? zI)RCJH2PFIS|04tjS1;$1UFxOp=))wq^Z^TW20HG!?TUs;Mber;M2~2dw=`c*tcuK z&PMN^W*Di*o12BL?>`SdkIha0`1<<7#jReim!3N{vA4U?t6$OW$)-JdwR)Z#DNFCB eDZ}O-bNUkV=qW$3q&$C-EO4o~sBO>JAN~feAX8uf diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-center.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-center.png index f77eddc933f00b409be9670df480ce1e00fc1183..b022dfe9f45579cd483b2d9dc83c100c84ef344d 100644 GIT binary patch delta 162 zcmV;T0A2s#2)+T3B!7iTL_t(2Q!P zK@gOEj-Vijh#<-eD*7TqMIR#QLr53}5(z;_fkE|5@2o)j&|rIB_W%8U|JSn}?FVXW zcGXZ6Rhw;-^T8Ut)f>sz{q$j!EcH0kg*)vcE~ze}B;D>obkKth=Xe0evLT6fA=w@Fe1SY~N?VAIZC;CZdg;yl|;F@LV6%*W_WLBN(%5~6b+eLIV z3_==+0Xhc5kdMUU@%=OhAYcKt~#nB?x?LV+RiMm*vg zq$uiuY-@uivT#;TGUQKKH*^s|0YDg!fH((Y0)z<&60)qs6iHI}n9Nl;*26}iAi#Jk zk>Mo?LRk?&j7!B7PLeXwOh$-TuvyE)s->Zdu0eFmSmB>oG3_E1+it$4p?-5I5Gs%BWhIVjI+v@&vyA*3s=ZPF|G6^(WDf$(?S5+7A0DDephQxQP{Oc|^H zPtI843>!4ZAI(y^A{`iP*IJ(()`kaJWMW)08t46~c`{a0Sy?LhZ|+XPnsnplGvkN0 zH_W_zwN$t~%llRAyQ;Z{V|ym9o~qkjbF%r37}+*9cJch=B;|MWZTrw->f0s$-j%oC zTOzYxhaSAhF5H|>?VDb@F}A5*n}2+KdB;v|a=I@6?AojG(|2EYpOdO@<7IE_rp8Cd wCcG^NKR&n|2(Qg?!(&t}@?TdD4eU$_NvUH||9 diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-left.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-left.png index ebd97df773519a863c0fcdc98028aa009e8354e4..6ab25ca193768f0f6511ec51df966157b4647622 100644 GIT binary patch delta 96 zcmZ3*Q9MC1iiLrJ;h46J3y`w%ba4#fkWEfZNSTl>ke(QDBQ{0o;336qiO=y3PuWk` zH}2=r;qmz|DbXPE*xukM&%zlW0t{5s8>JYep7Gz;%@h#>n!@1e>gTe~DWM4f&lex3 literal 1066 zcmbVLJ#W)M7!CrZsL+g+V8L?N#=dht{Go=_iDMe6Nvkvx5esqbOJXJV8T(3{4lU|} z_y-_$W<*GgMe0xxV(J15QYpWHjxYe_oF)aNsskSG-uL`I&-?vkwR&e}`sQ>j7Mm$A zX*GIZj^wLxdiL252lTo@N)57x+hkz)D5hGtg_yEqbWjZ$*6_i5v_L^^yWSv;%Ccf& zhchA@E_6JKj>Q)8p=X#qM3@%p*lvzJ-rZvv+sd(bGZj$ril}QZZTM(yqgppNdZui# z`P^Gir7a?h670xWC4?f989G} zQJiN4009pK9tue)Dk(t$fEj-*_2ye`rKag)UsTJnT|zvC=LdrUH%M{V@9-TTNwj6{;y2!a`co0XxQ8|5G!b2E#|g@z=0Sp6CQd z;@Rj^)Y4Et>?G$n=gNyoZSC%e6)9cei1D%CYI!<``?d`^3vlQ&-S(W)W=7!ItSZw Z>{2|ovngDgU9P>0wzpiWYA*`S?cWxDQG5UZ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-right.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-right.png index be4a430eef8e845293fcb98b2e4a08ef26518160..d9630e755ef980d0eabff788492f4a440b626763 100644 GIT binary patch delta 97 zcmZ3*Q8Ga?nuURZ;h46J3y`w*ba4#fh)zy3NKZ)papJ?jukTLsbn(3Zx4-gy;_*+@ z8yz38bDyqfQ%Feq$-YQJQN*|<>5#MG<~gjN8RC`-cO85^tsH0!gQu&X%Q~loCIB?9 BCcFRu literal 1066 zcmbVL&ui0A9PbdeF}8USCW^=-yX;_-_mZ}0!|F_%#ue-~x}wEX)8w@cYw}|9X0v$^ zyvY6mFM=2Eg6Ksi?C4|%FM>Y~g6P@p=3#F2rE90c*ufm$`+i@(pU?OA#?r#|iLr}g zu~=-PIIor2eI}AehuPWY-oInl1zM=mWzwJ>!^bhzB6SRkj?u(rY*=e|-r`vXYS@)3 zt(I;mCUJNpvf)F=W9V3Hb}sY`a|KgS$4%SKa=V*b9I&k{cPm+fB`=R#_WZh!m)936 z=K6}6vADUbU^Y}3frF_5LZ|HpN|@z(yb6<}XMqDf6S|V+j)JO|mO!5P7$kWZH(?5b z6ylMTkY)J_5FvsB6a^&4k*r9f0wL&s9P{Q|4W+E!7mcVWErzvg(_xAC2h&nAPrdN0A|mMp^W2))b?y5p&hS zE-h+Vj{V^++fpD(Lxki6ltq|IBa}ffqiK3dS5;j~Y2tw6By0ku(@4%~1xZyA()2V; ziMf<6s%jxwD5T{9w&(`ba7{e$Ycs!nZ2nZNlJ~JeiC-b4J(z%{7NI0)5f9{-lb~dn zwj1eDdycZzuy5bRmhKY=^y;hFC-{fyfAdzQq^=@W${>_Wq;<&kvDW|8OklwX(Qy1V zEQ2RDfsuGT`b;@q9_+G>@!4v;8gUlcTHP*cY9;(!Z`5jVq<#||Ztoo)?0?wo>^>R) zJ|n)q_wz^hu}r=Mp7-(juY>*bGuvSA+ncjfkGkEibZzL|&er{I?UHUyO5($f@kwdt e(~IU;F*Yth*XaN diff --git a/AppKit/Themes/Aristo/Resources/tableview-headerview-ascending.png b/AppKit/Themes/Aristo/Resources/tableview-headerview-ascending.png index 3a4fa662444b3edcd76baa0d7ade804a93429c64..5902e279c1b64ae7c58d7ded0e903567abb1c2fd 100644 GIT binary patch delta 148 zcmV;F0Biq?0;K_v8Gi%-004o+9XMzt@BR;xGZ$vV8ad;r~7U=a)m({TK6k9P&T@f5?B&r_ZIqYI3VQ{>S`J z1Y*zsd3FEU82*b!oyh%M^QZPt&7a)QF(?0v0sv)AGn=$M!wt{?0000eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM006B?L_t(|+G70w|33pEz=X!<(AU@R0nxY=vE=3Dg)%cU7bgP&kk5)u zk-)us_v%GOMHybacu@-E3!y7wEiW&R{`2RLvY?LVJ8z);bbtT@0DPo1Ma70#6#xJL07*qoM6N<$f^l(e A`~Uy| diff --git a/AppKit/Themes/Aristo/Resources/tableview-headerview-descending.png b/AppKit/Themes/Aristo/Resources/tableview-headerview-descending.png index 9365254b59c30fd75e34577df3ff39f027a5818c..d4b749f8499cb392b3f94c961a9715b894e7aa8a 100644 GIT binary patch delta 174 zcmV;f08#(70>1%}8Gi%-004o+9XFH3Fdv^z|Nw^CmGhH8pYG7-C#sGjnruGw&B;j69yc zg{23p&e90`&R)-rr90c&seQnaMb+&+f806*z`$u+uYT{Fi6;R7;LvsbaOnU500Sp3 c9NPo<17Pq;f2*;Z-~a#s07*qoM6N<$f?#_{vj6}9 delta 293 zcmV+=0owk*0kr~<8Gi-<001k^)wKWs02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM007rXL_t(|+G70w|38n3iOKF?zkXRTGBPs208pHPjg9TZnKNfxS%7^0 zva+%xixw@iU}a^6EBgKWH$y@~!a{q diff --git a/AppKit/Themes/Aristo/Resources/tableview-headerview-highlighted-pressed.png b/AppKit/Themes/Aristo/Resources/tableview-headerview-highlighted-pressed.png index b0a0ff82ad5a90c6c9a19763632f32bb64a70c7e..93318a7a32651aeb19abf6b273d47fb6141750c5 100644 GIT binary patch delta 79 zcmbQqm^(qm)5O!oF@z)9wtFKlgQ7_5iQDyB`AUm>(;IvL@i}>9$6wpOn2kefW6aK+ j30bG!Ui%z#Qsyti*V{T07S8u#8Gyjk)z4*}Q$iB}*wG*6 delta 123 zcmV->0EGW-nE{X_bs2O;SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM0028l zL_t(|+B}QP4FDhvLXrKasuLN#s0XyM_CWZ&P|Pal+LS~9#C1X0B}BgR9L)E}m7m|8 djoyv`0|51ZEEkbiqTT=i002ovPDHLkV1miZGWY-h diff --git a/AppKit/Themes/Aristo/Resources/tableview-headerview-highlighted.png b/AppKit/Themes/Aristo/Resources/tableview-headerview-highlighted.png index 6596e48d88c1d267463510e12add96c5db598a90..04a68128dcb4e79360a9b742290f0891fb548dab 100644 GIT binary patch delta 68 zcmeBVOq!r#r|Ie97{U>q{Oik4?#uo1_A~$e|9}3-fddT75+!DyKfoY#T(^JS|Htj+ Y3^SxnC*OX-=)?d7p00i_>zopr06D}SCjbBd delta 88 zcmYf5WSpR)Ct2beQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfkE5T#WAGf rR?@$Ty5b6p3QsToY+qNwE|9=5qug}L4RNC!pc)2GS3j3^P6%X8O-xS>N=;0uEIgTN z15~8!>EaktaVyE9_!*BdGc)t$|Ns9NUNY$E?sv64Jz3qKfr*D9W3`Tic<|ltK;;ac Lu6{1-oD!M<&q*an diff --git a/AppKit/Themes/Aristo/Resources/tableview-headerview.png b/AppKit/Themes/Aristo/Resources/tableview-headerview.png index 357bbc85bc9e46d4bb793b09ae2952480a0a1190..6e93345d2f10d1a8f495adbc68e4b0e37a9f54b0 100644 GIT binary patch delta 60 zcmZ3&=s!Wyi~$JVf2_I;q{KX3978ywlYg8)a)9Na0>@%So05;a8G2d;e=3+)8-P@L My85}Sb4q9e0BD31W&i*H delta 146 zcmeZY!Z<;)o{52h!S%-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B^r*)5S5Q;+D+ePTm6wJPd|+|E*3H-zQMFLdyHu-sAu8y*_XGW^ZKnPfPV=o~rj- yt{E6-tzEH7f9Zr`wWUvzds+kpCi*upGALeg@q{Nw+BduHaQ8+$50*S9VApZ|}&Fw?Igm)Y)n{ delta 111 zcma#)Wt^arDOutgQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfkEHX#WAGf zR??6E|LvKDnFSm=bfdTZNw4_zq{Nw+BduHaQ9R&{$)wk)#@B71EnCaJ$%WQaogW=}t{Lr%- RB|I5`z|+;wWt~$(695W97x(}G delta 111 zcma#)Wt^arDOutgQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfkEHX#WAGf zR??6E|LvKDnFSm=y2bVXrT_T!^mIMjf+O`RoU;TRZc9j9h+$A-VB%r8!YBMX?rY9l PpjHM?S3j3^P6|oelr;tEMcwz5uXu0&JS*m2#&%DKTXi`lc9`Wg!ehq-lz>EK%3> zN2F11wrwLx5_DaMX_~Ms3)Xc76!6#cJhW~52LH}Stoy!?VSgCpEov-#bQ}kL-%EH1 z8+o29AvWN}bzRxxVf-V6038;7Hci9Ef@aCa1NFw7Gf1%ym-+SNcjP=B@l}Ou^bB#nw)@CFEcZ<0XH`{ z0~Z$;13NoA11l>lZkvIcm_eFYSXlA}1qB&|goGG?Yz8JKCVvJ-Mn*7Z!J~0C(3U_M z85yumAWg*jxeMsTKsh-%u=7B+UyY8E2a$=Ec% zBPENXYkvCY&wn4XH6Q%;?Hk#e*S~-No@~v>KY#vwfmqv7H0$f@{{>QIuV24rAS&R{ zGX^wsOnCY7<$po|SELp{fBt;at5>h^TFi*cdC&r30x*;0h=_=QiyxvjqZNEzKtl`! z1Oym3IXM}C#m7dZ-EWtQ5YYd7s0|XcV*b{ZYne_jQVgLXD07*qoM6N<$ Ef*2C5K>z>% diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-rounded-disabled-right.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-rounded-disabled-right.png index e3fa8a30343e261a87d4b43d3603f8e3fee90889..f00ec2271bb6fda42735e3b31b72aff6ff8bb151 100644 GIT binary patch delta 301 zcmV+|0n+~21IGf8BYy!7Nkl5hM^v=WYreILq&#Gk4|yK%76srfEVYR=KKNRE{c#ojl^EX;4)avMfUw zhOjJ)WroVfOAG+(x?))t%=3)C?~x=4Y};nZS>C%Yt`p%$24o@uvv4ZA)xOFlT_clwfWg zF(jCqMtqZC4vhSt%d#Z?65${SB|!!dOZQ?Ir|2YiSyHeHW(^RWfbh};D zYPB0$IxBTm9Djg7wA*c--j}{-4$x|~IE@pUo|b+jT!Ut_$-@h&7uIMr_;W4=bM9ov zQgEe`U-gj`EL!(N3g%}^_96vS17Wk<3d57h1fpHb!Q86T>C_SZUL58^`9A9edOusU z5X>MQxxYd q^7ozmt%!QAwd?=}3E5FaW0L8PE{^C{_Rf002ovPDHLk0$_rZwl(np diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-rounded-focused-left.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-rounded-focused-left.png index 66a00a37e8aa72461c6e9ae03f21479fc8e4486b..25f2e84534ea19bcd4b36c40460a03a0131c83b0 100644 GIT binary patch delta 670 zcmV;P0%85d2DJr{BYy&XNkl%xM&kKhK8Z7rA3|tYGNQwYiTXT)>uH>QY{5!kQTIz$MbGlO-&2We#vk5 z&NrOz-ur6gvBg8V=A1iD>PQ1=BF&_QoIgx-g6K#ixkU8jDt|GNhorxp=oqObC&@+9 zPWo<)BvQAPuQ0w?fb=p0ev5J~>c}b5O3b&O&S&MZ45ZOGx}DQ7*!(aIcwp$Cz`qsi z$r*Cxx;q|FD@n>17%4DP(CZ3dXgr3oPy*wTZzbZ|LdDLTBgrIN6P1jE9z1>>Md0%i z(yKXSe{N%EZ+{;L0REU$n6Z@=gF@(d56SL>FP6bdHZKIF@mH)Xm}6$EtoQ-4!;f%c z6~A`&P$`NgHIjB=4ri2XUQEt?FA5J8*A@2IM^}Y8*0(cQ+uQ-;NO1$vt9z7`IAq&9 zOsCedyMLfb+(f#>tiuu9e;&coMji}J;$~t}PfoWz0Dt#n3R~NIn#C>TfmqL=7Zb5% z(Xv+YIYP4*#ewk0e}LL5Di3+#nORXQS243A040jk}C@Hs~DEE+hF|Po@MU& z?r;#%bgtOC<`ZUBO_Ll!*nRU@-`YhXG@b1Zp6#4ky~hyZn+`Fyyk8zpkNf)_C9+81+{#B>RS#qHUKo`~g1{b$&TO>&NxBvhE07*qoM6N<$ Ef)$KAXaE2J delta 815 zcmV+~1JL}n1;qxCBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU! z=Sf6CRCwBqmCJ6^Koo|5+v8jAX-jFFma3G?0z|0_i!Qh-3!VW9sSnYI;7ND`B#@90 zY*-c14eAC}NonaN4TacEY>z#h6C9OFA+@D1_9FlMGw1w1)_-2U-N&fwx7X3>W)gX# znBE;ih!G-#ZZ0uK)QEXvj+i1Uynq-Y(o&}?u|O;nt3rs!!Vq(YVL;b3XoMKD#T+qB zED?3fw4OV*Ra9XYDrh5-J;ZSYsN_tXI_6Wi2jsA33iF3JTKXn)D{X%g?({)R_@~}S2gxqn4KKQwdv8qftV{i&wW%;7k>s6?krAHVFWI^^fYo;H~=d2 zQ7GmyRdykCEt8m?FLQE00hpaAqu^ZZIuLWn%N#il!dS_HCG^ZIwe;a18q&8^0M3oTzlHv~93oPQr}$N*$95AlzYX$JO)FO-AV#Fdd>jDHs4lz6nr tDJaL6*h&XSVeqZeRK_=G*!4$%0RWccI3?_&b^ibW002ovPDHLkV1mAYekT9` diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-rounded-focused-right.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-rounded-focused-right.png index 53711d5ad441e26edf8d0cd237517a96a70a3cc8..a867de8e9a51d40f96935af98fa5f0037b25fbd5 100644 GIT binary patch delta 697 zcmV;q0!ICg2hatOBYy&yNkl)`gT zv-e(mpL6T3nwL)zEompMq=hsQjbZ9r-G2DIMDb^k^phTPnSXSUv*ZYACJlcT^8u8X zE6}}2;MU|9T%QQX_{Sr1k(?oiNh7JZ*=*(FuEAM!4b7oz)B(MD5sEDY!_*3HK8+^% zLLWI#+GG}*GVzT6E2g|*jLZblYjHuxjda{dnfxp=xn>Qy`QjyVj2t5MC2;{jb~lgY zuMFbrDY!nZ;(y`m0CdB1#Y{v=Hzpzxxj`FgEQwLR#6~}oY1o4+P)v5{$2?*KnZX6= zL4y<@ynbhQu@GK|VT>g(gWD{D0;4psxg`GA2F~R*D5LW*&;y#7qNr20QB#L1Yhyc$ z$8SGEXL5)xP&6RtpsA`jmoH#3wh4pjooJ(+gAUR{aewu-x|PPg=YHtN{i1yoULmcj z#5P%7J(acgEeEvKssRb0-IrJqm>>OS1;Z zxvCSE&VS{x5KE%l;uTTV&9)SNNNl6m=7+)RS8=LjjZ9TU6hgCa?>u`d&T~Nu*bd<; z%@H;BSbdBb*t%xUowm#@_^ixlhYylSo&fVMUo2fX>x)b ft@&F8;J^6;wPI*9V#17D00000NkvXXu0mjfXB$#P delta 888 zcmV-;1Bd+31&#-hBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# zFiAu~RCwB)Rm)BsM-)BXUERzuGmH(`I0453S+*l3G73s07I`R27HskXtnvrhXO&;b z7bGitB;3u2vEBR06O!*56@Ir^C5#JtuT1(D}D zvOHVQvg{$}o)CW$t8~(pNM^l%^%LAWAUog8{qT#9xM>=|(J5TzH7nKHZTk8uFLH-# zauZqH&POFZy?;-(7XNAMC{5AzV{CPN?1eF1y0B}bNZ}#P(mxo{?_B#xq9B5O2kOgD z#u;jXD9PZ52{yZXc)t1?8{1n@UIT9J@=O%RqjVzcL!(Dhk}dwYjt#f!p+Q_~4r20h z6DyltJpB7VXnzxx#)sDmUHr%hUW(wvwxnYpS5O>{G=By#J#`6lpWlEjr`UT1Pq{Ok z{*IU=s+vzFZf*xE(>bc%Lr#>Twg?l1--@)|{nz%YPf_!fql>x8L z;aOr_f;^Qh)~G6cIyDA|0_!A%QtE3CUn6Q~l9g@YO0$A`y#}53pd59T!yk#?Gs$B0 zio(R`5Px%z;5c$`Fm|q;#XMzWcxaG^lft&-aM2V=&P5hN#dDc;0qZT`$8xJflH4hhvux3jPv1Fau77JgAzCkXU{!~~(hN+8X^Uv~X~fmn zAs+m-hRkv)FH0j$?r>^}klt3PemP30vZD}VHVIw3f+Pxsbl-H7u)Mk=d|v4CI7C$u zM{-<$*(rAuBExM_<=?pU8PPR;4Qgp^mn|sAn_k4@2uf8`I+7ey?Up+l;$zdA(}SW} zcyYS?wyc?#r3N^1k;G~#PLf7kcZ`IS}<0F*Ax5_eA@?Q4800RKw3Y&9;GKQ=G O0000?!a^AMBuslxF zBwo4idtsT;{R+$HD2jyTlWCg5vP8HKUDsaI+qTVl*T-FT34%aamWXd!fcI1nC&|@u z9OQYcB4BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zWl2OqRCwBA{Qv(y1G#{SfdW90W)@-M`yMI4_{*bNt>G$v7$<}=E?c29xYhM52#S5}EAOHCA za}*R57$hVlh}Vo(@O1$VF#s7LC@9DPN`=5YPgpaK(j!wEh$R?@W{p9SW`F<#0J7(k UQs9i1I{*Lx07*qoM6N<$f}csY%>V!Z diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-rounded-right.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-rounded-right.png index 8aac94d7b0ed25d1330dc6e13794f033568b3241..6dcbfd3b47ee330fd6615de09a3263cd984696a0 100644 GIT binary patch delta 324 zcmV-K0lWV71Kt9VBYy!UNklyCDby7>2Qc#L<7r|G&5*XxxHKBO>fU01Yi3)3{g8A###3DPtr4y7@RGq5a+4PK-%hZsc> z@tZVe)pboAs$lK_ajSwkd15Hxd7g=T70iWE|K=>qh~Jg4<2Y*nxvHxBh8?9ar|fwi z@kx3;lO!QL%RSsGt|X!Seda3qzE600`jYV0^nH(_DDEiSc?ciAp0(2J2|yFkN>~50ZWOjCDA~=qNup;6FIe!U`*6VflTOl<_-$`qv zjYEJe%inXM-|st%#RBvB9F}EaI-SC{?It~YAbtA_j^^`uY`0qmuwJiSBZ{Jw48wTc zY&KQTh`rZsK@bp$L|l!n}8R)1)QA8$_L7`CK<#XV3W)CDuLL!kU(efg2l5ik7 z1|-*kVGd$0m*eSGsPv?$^Kc#trakj;77FGJBr!w5lxaMCgo1Tl$8NRxhBZxtSFXWe zRaIe{X49*8|1g(px7+3E<8Eagh1=~mMx#-6Uw4Tff>pSywpuOpdcB(05a0_Q3N z!{P9SmiGrc313#L6_(2-#^bRI64dne*f`cb-H(xe`stoO3g&Lq(8Gyjk)z4*}Q$iB}8*LuI delta 125 zcmV-@0D}K*n*op{cNug=SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM002En zL_t(|+G70w|33pZz{G$9;FMrN=4{!rg$+n`191$B1S2D37Z(>-o~*1astzEC)z;Q# f5E2q%00=MuracIp<7AbT00000NkvXXu0mjfn~N?C diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-1.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-1.png index 373b4521a124a7a6e79bd3eb77b804d05044c45e..d8e5478ca62126ad22760ef884d5fcc071832b60 100644 GIT binary patch delta 58 zcmZo<^qnAS!otA7utL&i7myP1ba4#fkWEf#XgvF0a^Ao6AOGbUBt%)KPIdg60F-C& MboFyt=akR{0PzqKX#fBK delta 110 zcmeZmWSk(G!N$PAz$Ea+5J*XuxJHx&=ckpFCl;kLIHu$$r7C#lCZ?wbr6#6S7M@JC z0V-1Vba4!+xRvzd|9^XCVP*k`4&CT&f6^;{eR)~Ww%|y80|PU|0&d=u+uFAM1uAFo MboFyt=akR{0JZNY5dZ)H diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-2.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-2.png index 8a25d7d5670b94a5b3fb8534315fb9ebd970458c..e16d9d2c4903b6e887fd478eea771cb94293e06d 100644 GIT binary patch delta 85 zcmZ3;SUf?+-^$a)F@z&J`Pcvd_RMByjx;bon08}R>S=3*c^pS_G=!w2q?+#Bxl`HG p)8nfl#KpzMbL-YEg)*&8EDTzTGTZZ}Ri9-50#8>zmvv4FO#s?OAnO1C delta 131 zcmXS3$T&fzR+C%kkY((AyaRG>*a3)z4*}Q$iB}5biLg diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-3.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-3.png index c64440c21d95c27c92560e6b2b8f214ca28a60a4..e914bd49daf347b5a3236ea20798ed2a9590a118 100644 GIT binary patch delta 47 zcmXT*o1mg4>gnPb!XcadhT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALEO{DF{I*F q(vScD?U{Mr-`M!ro`-=&g5ljy5%E)(_Ra+=VeoYIb6Mw<&;$Tydmv2! diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-4.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-4.png index b9d310c9103991a26764dacab462ca493ced76e7..4996c1820d71f6aae459a0b854fcc283acf7c830 100644 GIT binary patch delta 63 zcmc}|njm4t$jrdNpn5y(6p&&L@CkAK|NsB;Bhn{;TrN)+#}E$L%X8O-xS>N=;0uEIgTN r160KC>EaktaVzP^|Nr(54U7z||Cs*ip6h%Elw$C7^>bP0l+XkK9w;8z diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-5.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-5.png index fd3d0f353897b302a3f3d368126a8edd198634d3..ae00d6fdd949d51d0add94f8d722c1199b1d309a 100644 GIT binary patch delta 45 zcmXT+nV_N}?CIhd!XcadgP+y9>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALDbX5F{I*F n(hq)C>#{ctfjkC00tpQK6GX(jRkhTC3K%?H{an^LB{Ts5o?;oa diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-6.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-6.png index 657130254422d6e577ed696b45108066ad3b5712..20563a192e92f70321e2123abcefd7a9be118f9b 100644 GIT binary patch delta 83 zcmZ3$SU5q&*TU1qF@z&J`Op9V_RKtQ?(hGa^7<|*{KPIO>f;?2Nt>9VZoyNXNO8Gyjk)z4*}Q$iB}Ucnzm delta 130 zcmV-|0Db>)paGC1d>M2_SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM002Ts zL_t(|+G63^)Kz34j0t02MSNe>GiplmGw#07*qoM6N<$f+bckga7~l diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-7.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-7.png index 516547dd324b7ff0470f116c2d6042fd885d19fb..7659c023654a3cfca29c18de3616a8d111785b5e 100644 GIT binary patch delta 48 zcmb>NpP-^G=IP=X!V#VPgP(;bA?g3WzX@W@O$-d~;UYR#VQ+ve1_n=8KbLh*2~7Ze CFAqfk delta 93 zcmeaTnV=FOS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALC({~F{I*F w(hq(XA0CGTB@YfTvau=jGah0UWME`t*xShI^zQCY6`)E6Pgg&ebxsLQ0M=z5*#H0l diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-8.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-8.png index 7e5ee4d11671a69e2f3f7094c35d82f9d5fc10c1..e648afdbf6d7cf85a2f3197dc709f1bd04f15b5f 100644 GIT binary patch delta 81 zcmV-X0IvU`0dJ5bOEyVFK~xA^WB3mQzkdDtzi;2Zw?HNX3^V-x{rmsTn>RrcohTCf n_wRoP#1ny-4MhT(Lzx5sJ5_EuO6?as00000NkvXXu0mjfv!o#@ delta 131 zcmV-}0DS*%p#hL2eHnB`SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM002Wt zL_t(|+G6+*1iya$`oC}AzPCUo0}M0$`SXY2{{8z5Krn{^39uYFa^yXbUd+hISc@#d l2-1cPFfrf&I3)lA3;;bmdKI;Vst0OPhEI{*Lx delta 125 zcmV-@0D}K+n*op{cNug=SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM002En zL_t(|+G70w|33pZz{G$9;FMrN=3KmZkqt<7191$B1S2D37bhoYo~WoOstzECm64HQ f;Nak300=Muwqpp5SZaV~00000NkvXXu0mjftp_g9 diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-1.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-1.png index 69059d7f4b4b3475ab88fd9594ab1d88999971ff..8b8504cf3b161846f73f36963033a62c8dd98609 100644 GIT binary patch delta 58 zcmZo<^qnAS!otA7utL&i7myP1ba4#fkWEf#XypDcx$jT diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-2.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-2.png index c16b43a4c3a5a81777125387bb081b932042eda8..d0b7b7e041481ed80832b40e426c3dc62d3d37a3 100644 GIT binary patch delta 83 zcmZ3^SU5q&*TU1qF{I+w+>?qz38e;IT|SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM002oz zL_t(|+G70w|33pZz{G$9;FMqv3=Dkt^5sh@Al@e-A@LWkLtb89kc*2ekCBnF2}R4l sfB*h}`}Xbs#ful;f*bgnPb!XcadhT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALEO{DF{I*F p(vScD?U{MvcNRUh=V4%xVE8muB>Rt!(Q%*>22WQ%mvv4FO#nX79)JJ< diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-4.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-4.png index b9d310c9103991a26764dacab462ca493ced76e7..4996c1820d71f6aae459a0b854fcc283acf7c830 100644 GIT binary patch delta 63 zcmc}|njm4t$jrdNpn5y(6p&&L@CkAK|NsB;Bhn{;TrN)+#}E$L%X8O-xS>N=;0uEIgTN r160KC>EaktaVzP^|Nr(54U7z||Cs*ip6h%Elw$C7^>bP0l+XkK9w;8z diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-5.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-5.png index 1bbb21e960c21f11bf72a463d765207ff117aba2..22076f265738ed711259d42c6ee8bc096bd34f81 100644 GIT binary patch delta 45 zcmXT+nV_N}?CIhd!XcadgP%2gT@2$!i3AA-ks6WgBghT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALDbX5F{I*F n(hq*t@O3eafjkC00tpNvH6q!OT6>Ct3K%?H{an^LB{Ts5rJ)*c diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-6.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-6.png index 34f8ea207e2bfe55d7d1638aa176775b272aaccf..844f2be2f7cb1c3cbbdb87f5f3e9679622d03ef8 100644 GIT binary patch delta 79 zcmbQqm^(qm)5O!oF@z&J`Op9V_RKtY_SODgyJ^!V0byZbX60E&SP~N-);Kyk@^G3d jT;)BoQA6lNLkTCt*BIG+_36KA8Gyjk)z4*}Q$iB}*%ckO delta 123 zcmV->0EGW-nE{X_bs2O;SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM0028l zL_t(|+G6vbS&FG6HcdBS;n-U}C@l da7q9K7yxUABtKL8EXV)=002ovPDHLkV1lDiE{gyF diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-7.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-7.png index 78e4e0197bf29cf6d4e3958e610e11e20d36cb3b..2afec995c760b302f4ab3aad8b43f2ecf3dfb3b0 100644 GIT binary patch delta 48 zcmb>NpP-^G=IP=X!V#VPgP(;b;nB6V(FtPAO$-daoFcWS1T4%LfWXt$&t;ucLK6UE C*$w;v delta 93 zcmeaTnV=FOS>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)rNtALC({~F{I*F w(hq(XA0CGTCBMJrvau=jGah0UWME`tIBd*0x!{pvGEgOhr>mdKI;Vst0N)E9jQ{`u diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-8.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-disabled-8.png index 7cacd441ee0e40381bf29c1141a2ce9a1c0fd45a..bff1770a6dc3bf6fa6c948a8b0941bd6708995c4 100644 GIT binary patch delta 80 zcmbQsm^VSi%hc1wF@z&J`3FBs{r`V|>tA16yWK&JnaB9g@9*#b-`<|@C^T0?$f2>^ k!A7v-W`N2B%PF1=47?Kyl!`xIVq*XTPgg&ebxsLQ0EC(#od5s; delta 127 zcmV-_0D%8)odJ*}c^Py?SaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM002Kp zL_t(|+G6+*1b_ej{eSD$t+zlX0}L~Phz}n=FaW_E1|-08=gyt?KzcC{*CIxP6>bj0|2JqB6(PM#fks`002ovPDHLkV1nufEBL_t&tTVr7Wf~vK*nSm4s5c2^sKM-@XKm|bp3P7v_#2P>> z$pTdg67*zeW6Ne`VU=QHVqySEfVAqdv$5xKv9pLXe0$CC>-%T8ga#`Mi#X%=Hw?dj yeq%6FkpfF_0kH%~`_FHm8O*ii8EiBp7y$ll609+29e^?np00i_>zopr0OSW3&;S4c diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-focused-2.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-focused-2.png index d0ed1884187b4f4392979ec7d0994ece9abd6224..48085ae8591cfe4008072dd940193155207f01dc 100644 GIT binary patch delta 146 zcmV;D0B!&00j>d%B!6{DL_t&tTVtqNd)pX@HGo(Wh`E878HgDefW&+tZUf>tAT|VI zL69Uv$Ici3+qOUZ-?;hVGoU~fRFa#ab@`G1-5W0c@7@KLd=Awq#jyR%z5neikN@x4 zbQ!D@YOE&1&tHH3@458kf9vw2|3St=?KB1e51C$wTSL9T01E&B07*qoM6N<$g3Iql A{{R30 delta 203 zcmV;+05t!u0p|gbB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001q zNkl(AE=T}+hgKtWv~=0s;QQk7!(^Ya@68;8u`51t} M)78&qol`;+0D-y{$N&HU delta 100 zcmWGf23?jSDCAx0}CtzuTHeZdw(O+owG|42*0HsT0`#2~HP(22{`B>FVdQ&MBb@ E06$YCiU0rr diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-focused-4.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-focused-4.png index b9d310c9103991a26764dacab462ca493ced76e7..4996c1820d71f6aae459a0b854fcc283acf7c830 100644 GIT binary patch delta 63 zcmc}|njm4t$jrdNpn5y(6p&&L@CkAK|NsB;Bhn{;TrN)+#}E$L%X8O-xS>N=;0uEIgTN r160KC>EaktaVzP^|Nr(54U7z||Cs*ip6h%Elw$C7^>bP0l+XkK9w;8z diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-focused-5.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-focused-5.png index 2b90330e9d275a10e7a9b3011a3700362bfa47ae..cca115eede54adedd72902afe3f4ec93cf2e2f88 100644 GIT binary patch delta 58 zcmZozmvv4FO#rui7pwpP delta 99 zcma!OWSpQ9D_PUnLZiu$(!l{0v{`njxgN@xNA D*()MX diff --git a/AppKit/Themes/Aristo/Resources/textfield-bezel-square-focused-6.png b/AppKit/Themes/Aristo/Resources/textfield-bezel-square-focused-6.png index 427e771b22bb2c48a3f0f83bb38d37cc1ce8b253..9a5f4d793a0f52604ee66dfa447ee3c2d88a0a9b 100644 GIT binary patch delta 141 zcmV;80CNB30jU9yB!6&8L_t&tTVtqNd)pX@=XdOU@xNpB$^VCMzWx9E&%gf+KtW9) zZg1QE?0?_pEC2g9Uj|EpB&2{izH#%T7u~xclAS=EAPH_DHUi>WpybQ89nb%Rj0H(B v1F;ZPG66_;0Pz9_pe#(12Wl+HP7?r;bze}03!l;e0000zk|p&p2f5-n~pN5ey7QOhR+J SP1$!d0D-5gpUXO@geCy_Ul#fR delta 104 zcma!TW1OIpBw6AbQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfkDI5#WAGf zR?-iC7N6&Gb!iE=N0jmL!B!6;AL_t&tTVweB=imRsH{bs6Sbg$;$Ici3tJdD055&d{Ai@64 zm;d)}x%$6t`!kS48xU(UbOKfOZoc}zd)Kr7jhi1n2MWdku_OaXJ4hu|uo{RBftZ^C xYGxZ$B}h;Rh?zkW#vn6+SPG;PBnZR|050KQ6*KEUg8%>k00>D%PDHLkV1irhKQaIS delta 190 zcmV;v073t&0onnOB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0001d zNklF=Ot+7NzB#%`23fc@o({>`V~2B2EUFT fDEVj1+|0m`u}G-(0o{fQlA&@&=5=cpwxJHx&=ckpFCl;kLIHu$$r7C#lCZ?wbr6#6S7M@JC z0V=Zgba4!+xRqp4^yEZ+n|c1dKk2_dK4xdWyubdx#EgIc|M$;5pvEnh%)rF)@%43m mwq>86pRZ^8$il$H!%)j==v^^i+W}|{gQu&X%Q~k7#wGyI=rU9Q diff --git a/AppKit/Themes/Aristo/Resources/token-center.png b/AppKit/Themes/Aristo/Resources/token-center.png index b2249fc568d1081a28cdb539fdb04732f3ebda74..7628390504ebc35997fcce81c4598d74321a7f12 100644 GIT binary patch delta 101 zcmV-r0Gj`k2Y~^QBVGVVNkl+(If45}?je$iNS#5d%3AzC0ygZ| z^uuh{tyo7n(UXB}P$npBlm^9TMv=|_(b5Lh>qg_W>;T;he=08dIJJ|v00000NkvXX Hu0mjfWm_xv delta 893 zcmV-@1A_d40h0%iBYy(!X+uL$Nkc;*P;zf(X>4Tx0C)j~RL^S@K@|QrZmG~B2wH0n zvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4S&Z{q7i9qd_rpchyaeF z2|+X^Rom=NBnCl)bNPGc*m@6vTUNt+`**T;t(wxdng@jaK;TE3*($K_7jX(%5(0=k z-=QhTbO_($*z)X;IZkMl5$Pm3xkbkDT%plY4M}%UrP7R`-;xo0_`v z;5)_TnYkJs*VD-3b4^}+mDF~VS4Wntd3wB>>>5ApSC=v7f;ErCbFlmIEnk()mnn=C z#p6};>VHdwby_hu-=A!MJ3Znq&n~srbFGPsH&&aMXZ>nO`|hf|ljc?VPhR!${AbO? zW8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`= z%+gee_kY4FWHg<*4sZI8+sFJDLsC-LCD&z3 z7PFaEV(E6+nbRF^9HBWv_r#}4Ws~}^@e#27uu}Q?tWw#2P8!yMm-=tOy!}PMc#DYu z0CoTga7bBm000XU000XU0RWnu7ytkOOG!jQR0thoSg`xte})^czW-I30jmL!8Gi%-003?Vb^rhX0CGu0K~xA^EzL0sgFp~K(GRYbJH24B*YFB^ zVq>hf6+DEX5(8pCQ%s83zUD!V&`?p)Ak-l0pI2&A`+ch;5U*K%9o9kpnu!o{+KamS zUUDKp$muBN=Eno^Ud*>~8_n;92x5Lteb;yAWRCE(f$(pCK@%i3(-ER9761SM07*qo IM6N<$f}%D-a{vGU delta 225 zcmV<703QFV0rCNm8Gi-<006`fzKZ|=02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM005LpL_t(|+FXxK3c@fDg%hdhqTLHFa*bReC-!gUR`3vk1e!qTRui!1 z(+0$W58k{t%rH_2v94?@ugXJwi+3Tt_x?%%XgsoRxhbTSADaHHewwCxDP?xfodAv3P7D|!gp1aC4`@6x`S<2?*}7?O bz6BTnvfE<7`hZv{00000NkvXXu0mjfE&yOI diff --git a/AppKit/Themes/Aristo/Resources/token-close.png b/AppKit/Themes/Aristo/Resources/token-close.png index 497d69355e3df675ff5f8d8b2f7f299f8a1bfa10..b638f50456ba511cbac2d9eaa1e769af407eabe3 100644 GIT binary patch delta 158 zcmV;P0Ac_80j~j&8Gi%-003?Vb^rhX0Cq`4K~xAG1;ITIL|_z#(Wkhd#&=7dL?=2? z*@IPCkYq9|@Kdo1olsNA6z`k^L3%%Z(kH*KL;$}x=^36ux;GqR-JFXgolD&i!Mfs_ zCFz>G0t0(jX&?7ddRGjhbWC}hx5p$A!6~W8$fziB2skN*kr(2GKR75ieH918+W-In M07*qoM6N<$f^R`Ri2wiq delta 234 zcmVeSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM005myL_t(|+ANPf3IZ_@g%k0wSSu^Z-XU0dy&OmoPoP+>w@4SZ&?#uy(!cN*}P2!xcR0wERBhPl!1Nbj0L4{n|18*ySO5S307*qoM6N<$f;0AI1ONa4 diff --git a/AppKit/Themes/Aristo/Resources/token-highlighted-center.png b/AppKit/Themes/Aristo/Resources/token-highlighted-center.png index a6c0668ebf14f9902c19536b107b3eea82780098..fa948b831a6832618d2ba08c3959e9c505a24ecf 100644 GIT binary patch delta 72 zcmbQl-o!XTnS;U8)5S4_BYLtGv$Dx~`4vaz@2`L0)zJ07G39^b7Q;V3PaZh(_1Tkj cHU$9&hR|N)SF^R|moNZmdKI;Vst05bF)=l}o! delta 861 zcmV-j1ETzb0g?xhBYy(!X+uL$Nkc;*P;zf(X>4Tx0C)j~RL^S@K@|QrZmG~B2wH0n zvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4S&Z{q7i9qd_rpchyaeF z2|+X^Rom=NBnCl)bNPGc*m@6vTUNt+`**T;t(wxdng@jaK;TE3*($K_7jX(%5(0=k z-=QhTbO_($*z)X;IZkMl5$Pm3xkbkDT%plY4M}%UrP7R`-;xo0_`v z;5)_TnYkJs*VD-3b4^}+mDF~VS4Wntd3wB>>>5ApSC=v7f;ErCbFlmIEnk()mnn=C z#p6};>VHdwby_hu-=A!MJ3Znq&n~srbFGPsH&&aMXZ>nO`|hf|ljc?VPhR!${AbO? zW8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`= z%+gee_kY4FWHg<*4sZI8+sFJDLsC-LCD&z3 z7PFaEV(E6+nbRF^9HBWv_r#}4Ws~}^@e#27uu}Q?tWw#2P8!yMm-=tOy!}PMc#DYu z0384ca7bBm000XU000XU0RWnu7ytkON=ZaPR0tiBDNkl5M}HV%BySRlE}=;=Ecautigz` z7^sd3DE2R+tj~u>Kxl%bjJ&jIvDB@~X{ZlClE-IE5I${A6JG z_2(Z0Trt#YrjX)RH+faPCBm}mLT`VtF#P_{$nfvqe+D2zQGd(?q&VXnrtg>5Ff;wa z$j|WW?|%lk#f(tJP*Yh#@>>EVl(m=t6;fyZ^^XZ8kLn+&VvwoqQI!+s@hKQa{A3da za~>b^gsItQVez# z0mb1Z-KYOa8GoxVFmn-hMqp0;OlC>_h`*fTggxjSmEj{OufO!SfI8EEMivYWC_x9r zyg}J@TmFjbn*L!IW?(=IX_QC-nQrMD=_IOZKIyKsK-e xF`rXtQUn*jpaU~2yBfB{&j@uWGZF^z83B4Tx0C)j~RL^S@K@|QrZmG~B2wH0n zvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4S&Z{q7i9qd_rpchyaeF z2|+X^Rom=NBnCl)bNPGc*m@6vTUNt+`**T;t(wxdng@jaK;TE3*($K_7jX(%5(0=k z-=QhTbO_($*z)X;IZkMl5$Pm3xkbkDT%plY4M}%UrP7R`-;xo0_`v z;5)_TnYkJs*VD-3b4^}+mDF~VS4Wntd3wB>>>5ApSC=v7f;ErCbFlmIEnk()mnn=C z#p6};>VHdwby_hu-=A!MJ3Znq&n~srbFGPsH&&aMXZ>nO`|hf|ljc?VPhR!${AbO? zW8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`= z%+gee_kY4FWHg<*4sZI8+sFJDLsC-LCD&z3 z7PFaEV(E6+nbRF^9HBWv_r#}4Ws~}^@e#27uu}Q?tWw#2P8!yMm-=tOy!}PMc#DYu z0Dk}pa7bBm000XU000XU0RWnu7ytkP)=5M`R45f~lD|tMQ4q)H?OU_iXf)YFz4(JP zM$>5FVR3N9afn6iM8V>kv$e1gYy?640XAZJf54%&SZizJwKigNoM;F+B}S9%z8^QU zy5X5PshSp#hm}8%&7k`rDU#5TXj#z=&Ja4}PT4k5wB0zEIGFU;o;gU)`C><|cl97#{P= zbsGZBKq(FQ1M?Vk&Uk0i+jLR`-d)uKUrK1Ugu5a9>dNO=whKw`){Z~t8F>dH-t`H$Fa5H=h&9>O?Gp)5I|C^p&yF)tO5dE|(T>-G6$=%)E#M!*JA2m7uT0Jz+!&GIgb{&)I;o?j;}oXO&)m2> ze;o)#L=K#X<$qP_W#CRthNEXDW`Stn9;qtFRbpd=L3j-a{|jRwf=vTKE{)W=6JSs1 zz2)G3bm~rU)&z6?#-W^@9_K8CNsE53`x)^6a2CWIVY}|*-NxG-_W6ST2y8^@E6KaCRwVitP+asU{xWBMh1OxK~X=KwR+5Xw7RTehhyfs delta 1311 zcmV+)1>pLG1hEQ`BYy(!X+uL$Nkc;*P;zf(X>4Tx0C)j~RL^S@K@|QrZmG~B2wH0n zvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4S&Z{q7i9qd_rpchyaeF z2|+X^Rom=NBnCl)bNPGc*m@6vTUNt+`**T;t(wxdng@jaK;TE3*($K_7jX(%5(0=k z-=QhTbO_($*z)X;IZkMl5$Pm3xkbkDT%plY4M}%UrP7R`-;xo0_`v z;5)_TnYkJs*VD-3b4^}+mDF~VS4Wntd3wB>>>5ApSC=v7f;ErCbFlmIEnk()mnn=C z#p6};>VHdwby_hu-=A!MJ3Znq&n~srbFGPsH&&aMXZ>nO`|hf|ljc?VPhR!${AbO? zW8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`= z%+gee_kY4FWHg<*4sZI8+sFJDLsC-LCD&z3 z7PFaEV(E6+nbRF^9HBWv_r#}4Ws~}^@e#27uu}Q?tWw#2P8!yMm-=tOy!}PMc#DYu z0Dk}pa7bBm000XU000XU0RWnu7ytkP=}AOER45gNlCf(PK@`T{>`vloavX*f8W2H| zt84=P6PBWtt+h&OL69KE&PJ>hQfMHcg>qFA6ofQhWpikg93FcyCVQ@Tx3|0VX8hiA zdtP9{2amTq`}@9m^JdkZwe_|$+~O>4e1HAC^{TnG`G<&{1nP-U&p)*}9z-@g{Aq$8 z`<;I8`2NPzl@CfO54@eGy}i(Rp{?opr7M;C)#XbUF4xy@KX`UmKoLyCx}Pw4DN{63 zG^46&@nZd~Blqyu%99qrZ3tA+lE=)HWlTw8XaHdlDVnXFTbQfXRsmO#s&Mz%Fn@_a z(%^XjQIF@Sx_Ey1=DpSH0DW;6LGE0@QY~_n5t&m9{_L6g8(=gthqVA@5xWZco_`JB z{Qtt_eAu}qfHDzD)@%%FNnpgjwQ@0&@c}MxgE%H<((bg4HeBYc$d7xJj)q?VPj0cq zS&?#v{C;4gqwc#goC`3GiEzB5BY&M7k&U{|?bk1Muqb`zKb4lb{tFyRdW|}VLHqk- ztdEe==NPsuBf_gCFA1HB4}J|gt+n0vZ^RYXLtOkD+9iEQJTx{Q`U}mG V8tlGZ05t#r002ovPDHLkV1h5`g(3g| diff --git a/AppKit/Themes/Aristo/Resources/token-left-disabled.png b/AppKit/Themes/Aristo/Resources/token-left-disabled.png index c3ae314d9bbd8e3f2ff6f411a3c2466d499fa6f7..de6f5aa516e7cbcdc56d1bb07aa18e6d69fe66dd 100644 GIT binary patch delta 279 zcmV+y0qFkS1E&Iz8Gi%-008VDKU)9*0PaadK~xyiV`M-8Mh36GWtWSvZ&&5rUhtrJDr>xETL2{AXZxkGjMLXprXu%CV$Kd6n>%3$%G-yz44hQ zCnKitn$sF8SPWS-Q$0cu>Nq4TyL@z)$}=&cJCK2Q;TAPheiUJ#cNjRUoy=y*h_W*< z!G$5}S=&=J%SA-^7@0sJ43%VN;9y`W^3tgjljdjVU_k^dGf)Q`17Bl=r~|tia_E4h dKoDpO0FjO;><}L+Gr9l(002ovPDHLkV1k-jZfXDk delta 462 zcmV;<0Wtok0^I|U8Gi-<002fQ_s{?U02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00DnVL_t(|+JurZYr;Sj$8+b=glK9aMx=t1lnzdX?wvZ=C3NcAP3Y#} zSO~>Jw|X0sXGNPoMfIGlmFK-V-d4pWgQAov%K1b96Nru8cw_p#gUK0VKi1Zf$E`DU|u zU$57SJm7CI*5%Xb^lhXUu^gNkN=F8Xk6qWjwQc)SRn=3Hd@VVuLL?Kv$+rLl0K78g=)<189RL6T07*qoM6N<$ Eg6DGE!~g&Q diff --git a/AppKit/Themes/Aristo/Resources/token-left.png b/AppKit/Themes/Aristo/Resources/token-left.png index 2293aa0e7b7c2ddbe6d5ab11accc531a04546333..009452c87a3d6280a77c00706bc4cccd1e339bca 100644 GIT binary patch delta 442 zcmV;r0Y(0j3ey9SBYy#!Nkl5akk@#v2e7naIJ;?ZwQ@q``=; z7^sd3DE6;=={6q$A(08vVxrPQ{JbpOoE%IjieU=-R_xAJke6*17ZDQRDs}5W+&{S3C zU}wXtm=&bBW7VM-rn>5!OiWA!6?3;PJMhd@UxSmG7{&FAcAYlT)>Pr-Ai^0X)7H(@ z)zOZS5Ef*>ntu$CJ(y6{=c8$4xl~g{o{5E-8K+`!&;c=T{?v_I^tCliMFja6Ai
Nec<`vvYHCuwW!ns51tT4WRJj3oh=85EPSkU}oo1 k!4Tx0C)j~RL^S@K@|QrZmG~B2wH0n zvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4S&Z{q7i9qd_rpchyaeF z2|+X^Rom=NBnCl)bNPGc*m@6vTUNt+`**T;t(wxdng@jaK;TE3*($K_7jX(%5(0=k z-=QhTbO_($*z)X;IZkMl5$Pm3xkbkDT%plY4M}%UrP7R`-;xo0_`v z;5)_TnYkJs*VD-3b4^}+mDF~VS4Wntd3wB>>>5ApSC=v7f;ErCbFlmIEnk()mnn=C z#p6};>VHdwby_hu-=A!MJ3Znq&n~srbFGPsH&&aMXZ>nO`|hf|ljc?VPhR!${AbO? zW8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`= z%+gee_kY4FWHg<*4sZI8+sFJDLsC-LCD&z3 z7PFaEV(E6+nbRF^9HBWv_r#}4Ws~}^@e#27uu}Q?tWw#2P8!yMm-=tOy!}PMc#DYu z0Dk}pa7bBm000XU000XU0RWnu7ytkP%1J~)R45f~k~>QSK@i9H_BP2SXC8OCoR3pf z1Q8Jn!NSf$6k;QapmrkI*lA%WiYTZccA}Mqf{;cV8zG-SvGD^a_*O(nqS4%KoH^WZ ziCLI??EL=!o!MQfSS*stA;Ew-X<&RdJbyAZIjscLq%6}8Rt2PBz_*UhhGV+1W0?s{ zkA|5VRH)>2216IzK0cpoX>MArHS}1dCM0o(6Al%W;J>Bm+J0)Vy|e4EwXs&m0+v%mah&qTQ7D|zm4(9EXe6x4;D1Rf zSV)({GG(mS@AE-3ZtmYhI8(?_PH2P7SXEb43K+ksV{_uTw$-iCu{3_{pZl+T!4;sW zGQ2R)WwRF_xld?Ma_h!Lydhu?_WbSc=Je_1oqreXGDrvnj72&J>+|V{=aR_4PH3jp pF9$;HWiTXBfcHd*P>6y5(l3Gy)vub#yNv(<002ovPDHLkV1g%`Yh?fc diff --git a/AppKit/Themes/Aristo/Resources/token-right-disabled.png b/AppKit/Themes/Aristo/Resources/token-right-disabled.png index 00d52832d0f14fb90095dc23268df62dff2e426d..86cbe135e8bc19e74586ef1badac0418288d8da1 100644 GIT binary patch delta 296 zcmV+@0oVTW1GoZ^8Gi%-008VDKU)9*0RKruK~xwS1;M{cm0=tJ;OG6mcMue`+`0^* zizu9&Z0Zi0+X5-UrMn2)1P3?&(5y=Zf@DZ>>~NF=3aO{>yuV-1(|`H(`o-qz(%H!X z0LJZd`1Wx0V|N`LfKguMIDf|Jbngv1p!`mXRQ#DletrDzvmrZkGa;c^mO|4sA%Xv#T7;e*P?b9X0000eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00ERqL_t(|+JsZhO2a@9-c3>vTCnj_@G%5mLMRlU#A9y}v4WQ#JoV-& zU{CfSy(!YOUP_@QClLan32mCtke_DbOx+DlEOlVmW%iqIet(yaMx$@W*endg;b1U$ z?Dcv+AtXZ~C83sOr2u5U?{6H(FD>zV*l7t}CG)*zl?Y&;FpMc)N`w>PL%ov6U z6^@Fc5LH#rbbnpH0E~?6f51Xfs@1AotJN+sRl%<8>CkU6z%I-3IWqqX1|S}%7@cdH zccU!4hKvKrLFPD)Ns=U1A+>#AEPlOS>Kr}v#s2U!zj7Q3O~rooDC zAan$b=43Lt>2|wAo@XLhx8U)3`~{&6+qT~|O?v{H$3sWxu=@#cjK|!Y@nVFs@^ASO ZU;qXVCv^Y5?neLs002ovPDHLkV1g?T*mD2? diff --git a/AppKit/Themes/Aristo/Resources/token-right.png b/AppKit/Themes/Aristo/Resources/token-right.png index a213fe09d2995be1185af7b5aaa2c2ecc8db1034..d7886f5adabdc19ba62d9b428d0ff3dfd04f8990 100644 GIT binary patch delta 495 zcmV0w85Qd+*xrw605~+&1@IMIt1s7eq68sZV z(4`hBg)ZE<5ew3Vph6Y9kU~L=8*yQ^5M5M3Y@^qtH!&Yg^VQrlhgYi0T2qs13X3r)bx%oqvDe{Z^0r>oUQGk*%ga!{{Uu3oz`^;|?e zGt(jXeW7li2wuu#cduFBGkS^4*y=pbxlY zH~eP1WvzBMs@594pcn>U@^5af-k)EI>+C140RHQ@`7PILf3AhWtEacGKL&Q=uX}(F l9)SQ8akj?IB+}7q`2{J{B!G5YiAVqd002ovPDHLkV1j-oX9I1hWc|BYy(!X+uL$Nkc;*P;zf(X>4Tx0C)j~RL^S@K@|QrZmG~B2wH0n zvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4S&Z{q7i9qd_rpchyaeF z2|+X^Rom=NBnCl)bNPGc*m@6vTUNt+`**T;t(wxdng@jaK;TE3*($K_7jX(%5(0=k z-=QhTbO_($*z)X;IZkMl5$Pm3xkbkDT%plY4M}%UrP7R`-;xo0_`v z;5)_TnYkJs*VD-3b4^}+mDF~VS4Wntd3wB>>>5ApSC=v7f;ErCbFlmIEnk()mnn=C z#p6};>VHdwby_hu-=A!MJ3Znq&n~srbFGPsH&&aMXZ>nO`|hf|ljc?VPhR!${AbO? zW8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`= z%+gee_kY4FWHg<*4sZI8+sFJDLsC-LCD&z3 z7PFaEV(E6+nbRF^9HBWv_r#}4Ws~}^@e#27uu}Q?tWw#2P8!yMm-=tOy!}PMc#DYu z0Dk}pa7bBm000XU000XU0RWnu7ytkP>q$gGR45f~lHW@dQ546|y>oYsVv`L`s)zoE zpnstUAA1V=Cql4Cl@P&)UV4dy@FA$cA|FB!N_r6=(uCCq6++#bcAed3cO7ST#+`eo z@0rzgjXCh;4(EK%k9*IE`Q`Pp)@CP+{C}mzx9{e^EX;XCl(6BvWTN!j(|$WNZp({p zr)D?Z`jhd;qo0Kk61?fB#gB3`kwTEPBpsgw$x+>H9vqgZ#vVO*@qdEST9Zb)(1Hf? zIdS*SNKqS_oSyrz1NT=Xi1U%8!D!kf6oW80S;NJ_8-<};(}1sV9Vj(vFcn{g#eZO| z6UygvbaSY9Z{pR$C@71oGc7e&?h|+7XSiOtW?d~5AL3I%DXdT|)AG3-Nu};1X!T%p z%`{6XG9+&!D9@x7&zWU>Y0dL>;S^Eq%(8aaq0`Q3wLg|QGhe>t2h{dY)&cjnm3`9mBWL5y%-9Mdyx?@!US)nrjSU6ui0n$WcDTJc z16K&e7cd&|A`HO4jaE{1YW3Z%&Dq75Q(UzJp?Uf$q`bgS{2+|oMk}%_j{UQ=_H6m} z>=GcJli}WTsnzeL104l>4affW@%hvD2p&V+I)c!&TNU5w&IfUFHdo@yoEqyA2tWM; XDbpl?Us#Gn00000NkvXXu0mjf%r1<; diff --git a/AppKit/Themes/Aristo/Resources/vertical-track-bottom.png b/AppKit/Themes/Aristo/Resources/vertical-track-bottom.png index c43104a3efc6f68fdac1feac2ba46858a4a7fe80..40f02fb255a5b4f677758c80b0c70c7887b55224 100644 GIT binary patch delta 84 zcmZ3)m_9+$kA;DO;fEal|A)9>b&;Kv~UpwsiX@B{D{C~*m07f(QKmY&$8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08f zWO;GPWjp`?07OYdK~xAGW7@oV^Z(PQPyfGu{W_Qi@tOYr|Nje!8IbT_reD8)9sK?K yHv^Je*R=+uq$D^tb0{K9;kr9)78&qol`;+0KXa@rT_o{ diff --git a/AppKit/Themes/Aristo/Resources/vertical-track-disabled-bottom.png b/AppKit/Themes/Aristo/Resources/vertical-track-disabled-bottom.png index 5ff3530fb6cc119da908a9b812d2c366421d4303..a5624bf6eb19a19a46b7e2b49ac88df229ea498f 100644 GIT binary patch delta 84 zcmZ3*m_9+$kA;DO;fEal|A)9>5=JS^`uO0SOs$KqX|6lUJ2l>nEZ|?`v me3zfQ%CE0W_)+ooat%Y0lML_G*coeZ9?elF{r5}E+L?IWxJ delta 152 zcmYda#W+E-o{fQl!Oi%q1CWv|ag8Vm&QB{TPb^Aha7@WhN>%X8O-xS>N=;0uEIgTN z161VW>Eaktam(lEZr%n19@YcxuX!F^T{$5_adW^y2F<^osme?xntt1_M1`lhX|nDu z-*U|%x#xHDNoT>rG&MExoxj(uYVUY(|ID`V21bT$vO?B!E0*&t0vgQV>FVdQ&MBb@ E06KX&W&i*H diff --git a/AppKit/Themes/Aristo/Resources/vertical-track-disabled-center.png b/AppKit/Themes/Aristo/Resources/vertical-track-disabled-center.png index ca474fce8b0fb205986a8f1f14fd96068a64b957..4afee484a608b723c572b819e60808161cc0eae4 100644 GIT binary patch delta 55 zcmb>Po*-$&!oa|==lhxpASLAK;uyjqn|#aW^OrNP9rjeJF{rVyT@Jjn?f_7h!PC{x JWt~$(695AP6B_^k delta 106 zcmeaSn;@CW#=yWJ_Ali#kdiEMjVKAuPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_( zRHWeP;uunKE9uUj%FjNWoSbZOa&m3@@%s$+RD5h=R5-v8BFC{Mqo-0HsFuOg)z4*} HQ$iB}J&+>T diff --git a/AppKit/Themes/Aristo/Resources/vertical-track-disabled-top.png b/AppKit/Themes/Aristo/Resources/vertical-track-disabled-top.png index 9edaf4fc2c5391e2296b6470b35fcc5a934a700b..e6945d7cea37edc31fbadd4d3ad162fc2a9d154f 100644 GIT binary patch delta 100 zcmV-q0Gt2E0e6rYUIYLD0HN}nzyJUMK1oDDR0thotQ6piV%Gk9_1iKQ;RGQ~c7~t& z?>Je6RmB;&7``zus<7~~@H6l*urhpSVqybQ5Xi*H0D}PR;tDL;G~N9G0000%X8O-xS>N=;0uEIgTN z15}jh>EaktaVu%fnl&O19zE(xN=v);@AvojSM%@h(@ho>6Y~=g61tRz diff --git a/AppKit/Themes/Aristo/Resources/vertical-track-top.png b/AppKit/Themes/Aristo/Resources/vertical-track-top.png index 96fdefcbfc1e4a6416e01426b745b94836ab5524..caedc46216921ebdedec3a2f7bb01050533527e3 100644 GIT binary patch delta 100 zcmV-q0Gt200e6rYUIYLD0HN}nzyJUMK1oDDR0thosg&lL#_aKT$G0pN;rT+Y>o{fQlf%|ueH;|Gnag8Vm&QB{TPb^Aha7@WhN>%X8O-xS>N=;0uEIgTN z15_04>Eal|A)CBv&6+8Bd3pD4T)Xy7*roZ0&!IzyJ}+Im^zW0WPj5PyOxQ1?lA*7t zc#uIPf#IUVK3-vceSK+rd;8`E3lx|;o;`k?oR*ZFoUE9Tn(BJcr>Ccf=Y<4AORPYn Tz;auVV;DSL{an^LB{Ts5(^WuT diff --git a/AppKit/Themes/BlendKit/Resources/dark-checkers.png b/AppKit/Themes/BlendKit/Resources/dark-checkers.png index 838362cf07125ad4855555977e141b151f13d90b..268f0aa15e6315f460a7fd95366abfe3ab4bfe4d 100644 GIT binary patch delta 49 zcmZo>^q-)jE#~Rs7$Om#eBm$y&y0ir|ZQ!2`45gF!8v#_RMga@lSTsK4uOBhL(xU3r|0ZTn5y@;OXk;vd$@? F2>=u4BdY)a diff --git a/AppKit/Themes/BlendKit/Resources/light-checkers.png b/AppKit/Themes/BlendKit/Resources/light-checkers.png index 83499084f527444f7180658cfefc0dd462eecbc2..816a4ec3dc2eacb5944419dc72b641e853340f98 100644 GIT binary patch delta 53 zcmeB|4w|5>&migP;uss3xFh}t1385?uZ_hSItf_wghye&ZUHx3v IIVCg!0M8f_Q~&?~ delta 3469 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 diff --git a/AppKit/Themes/Default/Resources/horizontal-track-center.png b/AppKit/Themes/Default/Resources/horizontal-track-center.png index 55e49f11ea0441f4e033774639613cbb9ecf7428..a76c7de6d882a85c6c494aeb16ece6b39e785b8e 100644 GIT binary patch delta 7 Ocmb;louD$&(+~g)F#?YO delta 42 xcmWHonxLX2S>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)n=li2>?BY4bNr!E9bYlb zxNI_iLtkN8zx3#FAiPMA^$V5?u6_48<%r|Rls@e{T!n0fhdP0*eEX8Gi-<0035XT;~7)02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00AvYL_t(2Q!#Kj37cLpk zQ4~>QeD?nRTT$$1~WKt zv5>Q8{cM_sx^%9iwry#<-7cWR3=Ui@T(B2@!b!t0&^V6N_dN$09qtGR?);V3VHh58 z(tf|EX_`35=z<_Pz*#;kwd=Z%MNz!(b~^&d=rDuxdtv5^anE@D0U6!m2t@QR Zz5(nx$002ovPDHLkV1m$oqOt%0 diff --git a/AppKit/Themes/Default/Resources/knob.png b/AppKit/Themes/Default/Resources/knob.png index 5d527f87385881cbefb5c31866e7570434b220cd..6630ef2a06031fd361896db3ea5fc491ce2dc77b 100644 GIT binary patch delta 278 zcmV+x0qOp~1EvCy8Gi%-008`alxzS10PRUcK~xwSeZf0w0$~(@(OcNL192-NF_N+P zZ-PuxWKcn^96bwG-F2l=+UP|?PxqPPCjVR#K-3YpC%3RfpJ75I&6R~+nfYLzHGhU6x0C#U9OF3D-! cmjC?%I**Q8XAf2k07*qoM6N<$g0aJUPyhe` delta 432 zcmV;h0Z;y>0>1;08Gi-<0035XT;~7)02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00Ci1L_t(2QouLvXG)TUK@Dv% z7+ea4LIYVe+*hmBQxF7nJRT{IW1ha>@9A(jum-PItDTTVL)~$lYZ!(UMGaxF`Z6nxm?nGK4%t-1p^HpGRUIAvTgf191dwRnb2r7V#eb! zuh8HjgDj48Cy0B!9{Ik{c%H}H_VAEFmS0J{z@x6~Z>?5~#4|G8ZkJbR@Q^{48!DAb zN|xnzu~>XD4CBi*O|mSDP(u@c)YddD_4f~ABjs{ADJhf57^@r2Xg}v a{fi%L=`N4k(tqFp0000hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)n=li0RTKU4;KIc diff --git a/AppKit/Themes/Default/Resources/vertical-track-top.png b/AppKit/Themes/Default/Resources/vertical-track-top.png index f4e1ea68e3e074ca55213a95ae87aca9700c01d1..ee188af9c6a4c316414b5573ed4c5f240e67ce29 100644 GIT binary patch delta 8 PcmeBROrD@J(bFCP421%^ delta 43 ycmYf9V4R?$Bw6AbQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGSz0Hq7wi^GY?Jx diff --git a/Tests/Manual/ArrayController1/Resources/spinner.gif b/Tests/Manual/ArrayController1/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 zcmZ9LdrVVj7{&VqshtJRvGo(=%;`~7@Ae`I8YAPAL8h2yxx;UJUA4wD0(XxIGg63V$K%kjar~SW3&i zE$Mm0)b}GsR^czIG^)|@T^Kt~-;x+r0Fa+9^X<(+n{?N+UCm51#cTQbXp+>U*tbq2 z&$vO`+7?v5ki}R2eF{clYUqk3;n6#AGDI&~N?;g?WT8jSE)f(8=>IN34=e%T@@e05 zkJT(oJh_V3D!$^)Jd4*c+(74ELw*7Do6!tJ}49b*qZW1Pg5rupnc9ZiEsT)3YE)YTezXtU};4A*g0wO<||-E=R6;rMc z-_pV)i6nh>UTukQfD+S{*P9Z*`vM?K$7)KJF?u&84=9prByw^-7nU7$?==6qDyB@T zbZZm0>!VzDZP~~6%ct_{R?=dPf7sAy4`WU+01N>rP?XuKl=S-&^p-V~rQay-+%La6 zp4h%uE{n?Su_rzu4E#sipPfD7uw%SFIO8-i#TDCX%*Bsg>Z#?ywF2VYLMG)j?ouMm zyZ!j505J3$z3QE6K24p@vI;g?gRGYyJBR zo-qxh@xBViyv>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% diff --git a/Tests/Manual/ArrayControllerRemovingFirstTest/Resources/spinner.gif b/Tests/Manual/ArrayControllerRemovingFirstTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/AttachedSheet/Resources/spinner.gif b/Tests/Manual/AttachedSheet/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/AttachedSheet2/Resources/spinner.gif b/Tests/Manual/AttachedSheet2/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/Bindings/Resources/spinner.gif b/Tests/Manual/Bindings/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPAlertTest/Resources/spinner.gif b/Tests/Manual/CPAlertTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPBinder-echo-bug/Resources/spinner.gif b/Tests/Manual/CPBinder-echo-bug/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPBoxTest/Resources/spinner.gif b/Tests/Manual/CPBoxTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 zcmZ9LdrVVj7{&VqshtJRvGo(=%;`~7@Ae`I8YAPAL8h2yxx;UJUA4wD0(XxIGg63V$K%kjar~SW3&i zE$Mm0)b}GsR^czIG^)|@T^Kt~-;x+r0Fa+9^X<(+n{?N+UCm51#cTQbXp+>U*tbq2 z&$vO`+7?v5ki}R2eF{clYUqk3;n6#AGDI&~N?;g?WT8jSE)f(8=>IN34=e%T@@e05 zkJT(oJh_V3D!$^)Jd4*c+(74ELw*7Do6!tJ}49b*qZW1Pg5rupnc9ZiEsT)3YE)YTezXtU};4A*g0wO<||-E=R6;rMc z-_pV)i6nh>UTukQfD+S{*P9Z*`vM?K$7)KJF?u&84=9prByw^-7nU7$?==6qDyB@T zbZZm0>!VzDZP~~6%ct_{R?=dPf7sAy4`WU+01N>rP?XuKl=S-&^p-V~rQay-+%La6 zp4h%uE{n?Su_rzu4E#sipPfD7uw%SFIO8-i#TDCX%*Bsg>Z#?ywF2VYLMG)j?ouMm zyZ!j505J3$z3QE6K24p@vI;g?gRGYyJBR zo-qxh@xBViyv>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% diff --git a/Tests/Manual/CPBrowserTest/Resources/browser-leaf-highlighted.png b/Tests/Manual/CPBrowserTest/Resources/browser-leaf-highlighted.png index c786c820b968e2cb41bff93c97a70a43c9880ce6..5b9e80e37e33181df97da53ea57f150f8f5f2741 100644 GIT binary patch delta 167 zcmV;Y09gO90=NN?8Gi%-002su&YJ)L0DnnDK~xAGRl%VO!cZ87;qL-W!yt&&;H4S0 z8f``|zzeah39=*1+^P?2#^AUoDUE zq~tH` delta 288 zcmV+*0pI?(0k8s)8Gi-<007{T1`q%M02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM007cSL_t(|+H{b?3W7iohG%s>h2uN-@7$Uqk1*+#Wc;xahwgxj|Rf=Fp_7+Sj0JBqBMtgb&sPdu;PU2y{_wvck}S` mJR!siU?1wX{Tb6!fB^uOw4(d3xu`Ax00003{|R diff --git a/Tests/Manual/CPBrowserTest/Resources/browser-leaf.png b/Tests/Manual/CPBrowserTest/Resources/browser-leaf.png index 196afdcb6a787696eb4661d732a7b638208ede44..d6a5e1d41f48793c0ee012c4d85e51a2ca755c8f 100644 GIT binary patch delta 165 zcmV;W09yaS0=5B=8Gi%-002su&YJ)L0DVbBK~xBtV^A(q;$c7qdjIv_skJBxAqm<3 zclvMfU;m5xWMyfnkjsC+|6c!{|6Bgo|D!QqSqm%_0EB-3z5l!XxB72(NJRoF6!72w zfBlQ|Xa0Bp7Xk|f{cV4G`{e(c|7u{fy#Dk(dV1)8@qbykjUKOe|Ihj_g6u2+Q|~=3 Ttr9t500000NkvXXu0mjf@N`lL delta 305 zcmV-10nYxm0l@;08Gi-<007{T1`q%M02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM0084jL_t(|+G0>vRxVOfQsVjl|33pR%&4cQ_n(1*;r)*vKc@Zp^QZ6b z-MjA?&;X;Yt?hqSR#t{@-@Y+?|Ni|eQ1N`A;*L9a?mUGna({7g`On40#Q>CG`1$iE zSTPX)1+o|a{{6cfsQ4NSNF@^!69XF?8v_dq3j+rS2Lm@ZH#1OS0#Ku}s;X)j3$ooH z#f*%M3??QfF9QMso){PyoCFI0VnI^y&(zfPMMy}<6BQMe%|M}5Kzs`%#{#tGubrLU zv+(fn2U1c}8!Dlak5Rn$`t|GGz_7>yVi8>71Q1{VrbmW`zn_P=00000NkvXXu0mjf D-PDCY diff --git a/Tests/Manual/CPBrowserTest/Resources/browser-resize-control.png b/Tests/Manual/CPBrowserTest/Resources/browser-resize-control.png index c335460deae102bba94f03d14d3be69da0aa1f8e..9b9e50587f94136e65a2fe3962978f7b1cb2eae3 100644 GIT binary patch delta 39 tcmZ3)SUo|7!^zXdF+^ix^29(ZQHD@{)p;vsa&|EQfv2mV%Q~loCIIGN3wZzl delta 78 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 diff --git a/Tests/Manual/CPButtonKeyEquivalentDefaultTest/Resources/spinner.gif b/Tests/Manual/CPButtonKeyEquivalentDefaultTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPButtonTest/Resources/spinner.gif b/Tests/Manual/CPButtonTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPColor-CPImage-description/Resources/add1-32.png b/Tests/Manual/CPColor-CPImage-description/Resources/add1-32.png index b6a1a6c6736db7eb8424ba295d05148dc058a1a0..c8c07912f6a94bbb994da98468aae30bfe9654a8 100755 GIT binary patch delta 1535 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 N002ovPDHLkV1n~Ani2p2 diff --git a/Tests/Manual/CPColor-CPImage-description/Resources/spinner.gif b/Tests/Manual/CPColor-CPImage-description/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 zcmZ9LdrVVj7{&VqshtJRvGo(=%;`~7@Ae`I8YAPAL8h2yxx;UJUA4wD0(XxIGg63V$K%kjar~SW3&i zE$Mm0)b}GsR^czIG^)|@T^Kt~-;x+r0Fa+9^X<(+n{?N+UCm51#cTQbXp+>U*tbq2 z&$vO`+7?v5ki}R2eF{clYUqk3;n6#AGDI&~N?;g?WT8jSE)f(8=>IN34=e%T@@e05 zkJT(oJh_V3D!$^)Jd4*c+(74ELw*7Do6!tJ}49b*qZW1Pg5rupnc9ZiEsT)3YE)YTezXtU};4A*g0wO<||-E=R6;rMc z-_pV)i6nh>UTukQfD+S{*P9Z*`vM?K$7)KJF?u&84=9prByw^-7nU7$?==6qDyB@T zbZZm0>!VzDZP~~6%ct_{R?=dPf7sAy4`WU+01N>rP?XuKl=S-&^p-V~rQay-+%La6 zp4h%uE{n?Su_rzu4E#sipPfD7uw%SFIO8-i#TDCX%*Bsg>Z#?ywF2VYLMG)j?ouMm zyZ!j505J3$z3QE6K24p@vI;g?gRGYyJBR zo-qxh@xBViyv>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% diff --git a/Tests/Manual/CPColorWellBindings/Resources/spinner.gif b/Tests/Manual/CPColorWellBindings/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPComboBoxTest/Resources/spinner.gif b/Tests/Manual/CPComboBoxTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPControlPerformClickExceptionTest/Resources/spinner.gif b/Tests/Manual/CPControlPerformClickExceptionTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPCursor/Resources/spinner.gif b/Tests/Manual/CPCursor/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/Resources/spinner.gif b/Tests/Manual/CPDocumentControllerTest/withNib/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/spinner.gif b/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPFormatterTest/Resources/spinner.gif b/Tests/Manual/CPFormatterTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPGraphicsTest/Resources/grad0.png b/Tests/Manual/CPGraphicsTest/Resources/grad0.png index 1127a7b999807c57a7234643d2158ad359a7e5b1..be4980e57800df991fe131d0a8cbd36d070c7f9f 100644 GIT binary patch literal 2620 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 diff --git a/Tests/Manual/CPGraphicsTest/Resources/grad1.png b/Tests/Manual/CPGraphicsTest/Resources/grad1.png index 41a9fab6b95a91277b692f7fbbfc5237777e9d39..cddc4d30e4aebcd1b8fad8052aacd93a415388ae 100644 GIT binary patch literal 3934 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 JB^%!k{vSgj72^N^ literal 5182 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 diff --git a/Tests/Manual/CPGraphicsTest/Resources/grad2.png b/Tests/Manual/CPGraphicsTest/Resources/grad2.png index b8f140ab531d3f8f1e19948a15c57dbaac6f1e58..78a0a9effcb33d889771b4efc58d3449036936ce 100644 GIT binary patch literal 4060 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 literal 4371 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 diff --git a/Tests/Manual/CPGraphicsTest/Resources/grad3.png b/Tests/Manual/CPGraphicsTest/Resources/grad3.png index f1c5ad690ba070b1dbc02d5ef5fc6ec6e8abb48b..4992261c7886c5c9352a7b32bb9e87910dedc940 100644 GIT binary patch literal 17150 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 z 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�J<)eZ&z=)b}*e}LNB^#A#9;A8JG-rMc! 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 diff --git a/Tests/Manual/CPGraphicsTest/Resources/view1.png b/Tests/Manual/CPGraphicsTest/Resources/view1.png index 6539a91a8b69588548061e39a5733ea4dd106c96..3f141bbbe29ba9e61079a1b83c22c85cf51ec59a 100644 GIT binary patch delta 109 zcmZ3;R6ju?or#%&fq|z^ixWt32Ka=yK7956z<~q*|NmdWX4nN3H1u?F45^5Fd&*Fd zK|z3dL*EG}mWn5Fs$yCSGbcw|-F&$wYu2(%7_waYoiXRVv+K4=Qon$j89ZJ6T-G@y GGywpFcPdo? literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^i-9|6H_V+Po~-c6&?0;aSW-r_2%M1-UA9eERGJDit#G@OeS8tJJVUZGkt0H zgJte6!Hw%SZi7OKF?B3#mKqi?J#gGt+M%_y&8eL~0 zYuw^78Cj!PCX$UntAUn&eOi@Pwa{rj12co#JGR}2cb3ltdWXT&)z4*}Q$iB}lA~_I diff --git a/Tests/Manual/CPGraphicsTest/Resources/view2.png b/Tests/Manual/CPGraphicsTest/Resources/view2.png index e8032bbd3aa61679ae7021dec606b65b712a7e49..f889427feacf385c8cc48a00830cd1308d32aa0a 100644 GIT binary patch delta 141 zcmdnOG?#ILL_G^L0|P^|-Tjq7N+`f5#P#8;|8L*EJ#gT_|NsB5UAy-6>(|XkExLiS zZk{fVAr*0N&lvJDDDW_B@Vp@-(8SzSpB-`Ipu6@0!`We`sXY~MHV3T?(VFVD6brTc dWk_(`iv*QTQ|3MU3N(?y)0NH7Wt~$(699IUJ^ugz literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^i-9|6H_V+Po~-c6=n7Ohpx^%aY{g{d0pba zohPLqJY5p?T4c?fVolXsufN`|n{zSmzWXzh|tEXJljWN#s8+ UbnD+4pbr^5UHx3vIVCg!0LXfM|6H_V+Po~-c6&>_+aSW-r_2#0ZV1t1G%fT2fW{wBa%s@is^b0Qq6>0VMoLQ7nukkG6x9^FU?MWa|Iibf@0WQ|cv vJdrhan;_W;v>IsXuj0}>g$teMGcYqu%i<8anp&s~^bCWitDnm{r-UW|p-XAq diff --git a/Tests/Manual/CPGraphicsTest/Resources/view4.png b/Tests/Manual/CPGraphicsTest/Resources/view4.png index bb20a6ac6d99a47af0130217fef97af54c1bd823..116f0f531598fbc8e8d90b9a19d0c598a7126cdf 100644 GIT binary patch delta 154 zcmX@Yw2E2`YW{U}*v>Jg{FnGH9xvX|6H_V+Po~-c6+QEGaSW-r_2%+M!KMHK*T8EBnRE__a2@!UEWLp-*jk~| zfNSH=|IgKC?>CN~$@VosRq~mU%k8IMC*NznYx4Q$<@@*KXPeykTlVL}QL(u$v$lA2 z!;wkmL@^|!rh7>V2`zDrLP97Sw|GoO)+m;VqEX2gS!2`^PlSzI{)KyfE3Tcf=;pO_ m*-JC353DQfRIJJnPGGRrl>QXD$E*$LV+K!GKbLh*2~7ZUt%V~1 diff --git a/Tests/Manual/CPImageViewAlignmentScaling/Resources/box.png b/Tests/Manual/CPImageViewAlignmentScaling/Resources/box.png index d6d1141bea21a55b42af3b350da8eac69bebb072..163e8b0fed7797dfcc6c90af5c3653cba489c3aa 100644 GIT binary patch delta 68 zcmbQl6E;D@j**#xfkEY?)F&Xt9N-h;%E0hLM8^FKkjv-k;usmdKI;Vst01w&^%>V!Z literal 1554 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 diff --git a/Tests/Manual/CPImageViewTest/Resources/280px-1730_Homann_Map_of_Scandinavia,_Norway,_Sweden,_Denmark,_Finland_and_the_Baltics_-_Geographicus_-_Scandinavia-homann-1730.jpg b/Tests/Manual/CPImageViewTest/Resources/280px-1730_Homann_Map_of_Scandinavia,_Norway,_Sweden,_Denmark,_Finland_and_the_Baltics_-_Geographicus_-_Scandinavia-homann-1730.jpg index 1a7cc6a4bca7476ce77ded40f80967b4a5e7d6ac..1de63f87a26c6b97fd7d92f6978b00e4e5721441 100644 GIT binary patch literal 28937 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 QhWPj$XIV!?lQl^H*%&OB_W%F@ diff --git a/Tests/Manual/CPImageViewTest/Resources/spinner.gif b/Tests/Manual/CPImageViewTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPImageViewbindingsTest/Resources/spinner.gif b/Tests/Manual/CPImageViewbindingsTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPImageViewbindingsTest/Resources/value.jpg b/Tests/Manual/CPImageViewbindingsTest/Resources/value.jpg index b4fc056fc1a0235f3dfce54610e6fe091ea853e3..6791060caa0b772e3d2d54598cfe31245a237e79 100644 GIT binary patch literal 5932 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 literal 8521 zcmbVw2V7H4^X>@=y{mvCO#wlAQ=~WPQly36Lg+R0-V_i^L=XW5lqv!uO^OtyBOpkX zDgmT}1nC0#pQx|C?|0vOzkBcIw|kzC01y&T?qTPRa077w01&z&JW)OX zKr{!+ulW0Tf|!^I#HUbTfFKsaV~3ykDjwVZ#Ku2326{>$2OldH!qLVK#33N&v;CXg z;cxh73?Kvaql$D#qMQ(H_*&?qJnWrZkv|kahySAf8}t7J-CTXaoPRVHaHQ~d(boj8 z-1yubQEGa>@Kc11vOb78KzWC!k0M@v0mQ4mE`|yq<^ceL6ZR+-!=HQt=^#e~IEd*% zxt)`by1_4bkh`t64v0Zpf-DygO}rmGrvu@w1lAHb58^3Dq&j|$!FZs69rCI&i1|Rw z;^?dP%Rf}Z+fN@a|KTUdQAr!bpdTp8*+xSb#Ec-0LwV@o=K^DfW+7cw@pFOxp>3W% zy1!z8F1ovFPR^#o9$#vX72TtNvE)FMHN6ND0Q0cHQr)BVBuY4eBS@WXl$Zw=1!@0_1A zEdAnmz!+dcFj25e!LGq%U{_!g02@pWCJ&Q^T?M5QFsa`W=>9EEHoyT`0wewD#|!WU zXU4~21SsBT^yU6-!xn|IazgZ?H^6BAWa;ro5Bm9?F&MMQ-zxxkgBAEIJO01dsXe6b z^luH@5UkpKfTBGF(D`rmC7dH%Bpd?AQNoEo_Jrev6X0hQPykoJ^+!Z*U{p>&R>J!? zkN+PzyaSm&fDJfeK%NH}>tB)nV@2)V?=$|<;46WQ)!xwtqWJzug+_$dgocEk3FQc_ z{9}$k9{*7#Xd<){S`V#()oxFaH$*!h`2zV1UM@Hj{fJJ^PBOH43K|gfmQkKhyTZ}!|zqRwI3L_D;PJ@ z2N?i9I{-k*!!r=&|%# zAl?oDzUlpVzCq}F|Hyo_06=CPJhS@#$V`0!pvW5l7{va_xWO}#E)xK%FC%p$MK$Q#jl=@Vp{^002h`INbLv9PTI^^gjUrZ(VU1AVN97$sPc- zwD6}sKmrg#PJjnB_%Oi724MsUe_#O6fSmn}^&s58I0OI?>jc1laqwq8zTwYW(E8Vv z;3>gxM#od=Z(M?>;>H0bfB@ehKSlxqD3k~W1sgFTA&iKGn1lr1Ny#Y5Nl7WlNJz-3 z$tftQz(z_=LrYCXi^q5;cyrK-2nHjfA|)ZkGydNi?kzw|0+aw9P{?_JfEEI!h2UBM zRxlGn@J$E*vh%A!2%s=RB4RKma*$9-0}w!@bHFXVr z14AP?xYP(cq`iZqle4#vub+QFU{Lgpn=!F*x8ffpCOu4kl#-g3m7SBDm;b!rMOk@8 z2X2F$^abpW2Vi{_hft`v1!8cVd6?8UrYx5ODFJw16CNbeI*-4g4=X>p_5xc^97- zdMAY}$M>$Vc|k+fgcMN^K~1i*{awU0L}V~kSf#Z8FzN|sH$~_ZU8&^7Y-xweQ^0lQ z|I*depd8ci)PV9f;W0C5`r?P|K*7AuhSh@B$%`h;mIX7K%o41-w|Pq}J+qg?o9fDq z_a2^un^~+A@5(CUfRk1iLiCQFidm6NcG=m72Dfm8ebuUTKfg6K$*?rspfl9K5%9f@ zLFKFNP|kqZFpQks;-gB<(gRtCwNCcjkUXz8i7*0fhWQ7JwLy&oMxoj|?`o0}ghmth zgT+Ta`W`Z*9uSrsS`HL-$LeD*+|ETry}-;J=U4j9o2D{Dog{=A+3&RcVd-NGhLx(bj6XeEj3lW74b7$ko@97LO z?(@kp&kBD^`IvpW>1cgws(@AJ_B7vRtC)w*Yab>ntP&lx1Y1>OCVDO;%$(MxQYZ7; zXM9_Jlvl@5TWF$HxGWjk)X-mLw3;nvsqA$ufW22b^Z7(C<||}rZd_Gh^yRP+6j9P0 zL_IisW>36iS%GV)C`3x^Nc)Smj>KGK4-$UYYrRB(bxPB3HhZgFCFzPFQ1JQ0gxTmt z-V(Fy6*PH>S9ybvCMD_v7OmEAQ;p8Y0jBleZI+FVw=J$HZGDUCiFo+r2v} zb((HUsPl_A3vc4_U) zq5DLQm%%>V*RR3Fccox!S+!~bjKY(91wXDo#*nc zYUlP|E7y%_Eo$}0vgaFFMe{F=iMGifW7qaardT*rxoU>(;Z*nIX5K%UC9g*J6k^HS zgQE8acAjG?=hpa}_`j`xy2&V3YkSFMMd#xKj z#AsQ({F-$Xri`X?L`^Jfirx~el!_6NXj@`N%jjs=?Un@g9iOsVHhNrnHaXVY-T3MC z%#e)vS}Vxj<@Ay(x$S57ft(D zNgx#aBxt5#V#6W!>99bW%T4$#o%i*H6Msw~&#i4rn_(K8xqajaN8iz9sb7BEJr_DJqb}1ElpTOl(@jL2 z#dbh1)SuO;H18w(Hjk(K$n4=;J&wY_GxebiEv87$K< zyLKNXBB?iIcHwiLqIZUHW{K=dY|w2EJMv!ChtQOK-1#RDFsA7`qJ2=QbTV zJN(k}jz71UngIgHn+`Xq_Vw~v#hqm*-NGf+&UkkuMD~QGxdh#9 zkKMKqY`NT7C*LN~$J!A4K(04vziTEo;@rS7H+4J<-J};L)aPscX06G@6FZ?}nn~5~ zCd{p2q3!!_8e12K<7=ZwK8{;Gtdw1dELX#<7-mh@XBln72NqByGr}$R$nMbIfxp8~nG(ZhA(+K==rqRtkg2C`=n`Q172qNPWS=ufl3 zg>-D_`ZFc9n8R?s&_wO2*k*@n-mb9=CCfhYG%7+DbJbiE6ZH!1r8BN9T^EheVb2Xs zd$1UCTYFCAxpYEe{9I*9ItF>o9l5e(!8tT2tZ1rEr+uZfHE_6bW>R)c{Hl*Xv)ZKv zd&9-H#|sb9`U2Ue`sN8WbH^9UE##Ez0^h%pcza-ARX&;A)p*+FhFiJ%to*_oo@92p zxR+8bL2bFSatz~p4hr#_^%_gBTN$^YZ%U6(S>~ke28T*Ezr_J$t99)88s)Vrz0b`f z(URBP6B7rWIrteF-dAmO}id})8GC51Ujw-qdg_VlGbwHUt4s{idQB) zbzL6cDg8*#*t0<Q>K^dBr{^Y zlNtuxi5BzpN22>iKDx_)(B^GA^v~uCD*SLe#hx&>be)Im)Nr;|zK>leMn>E$p;9m= z?T(0O$UuOHZi=cG?bgllSeA%yU(M%6YGWP+xK;-9uAS8-CgOeG?Y0LUSr#=f&l!G{ zr^XR5sY8(ugZt)(sAFM4K}!eEDzHQuSLhGYYd;9D8ry~WVymZUawQ}%3mu=eW;d4` z1=&|#Nt+lwF>q;57kDGLCzqMpzsMq1)1TArjUoNQn&i<`Z#pnD7jAz(*pvFSa0X$( zglT^Bk-B=_M$&+j`+}Mu69}Ab-B`{X$t|YpBG-$GfF-UYjE_!B|@%(wOsRO!Uq(C!3C`ZAE81 zPSz&8rPqy;V;aiYc+}kR$Z8|mxxK)|BN--V#pkeH%o#l+ndVq;dL+1irpSSMUX zYb@I>|JTOOiiXOE9%wOtfLjb?T{E-xXo|A+ zgOpd()75Nrds=sGt;u%!z43?eXJ0>O_CL3@kP?a)G5Lg%Uw0myI_*+~OUp<(~MpjWN=z=-{yMFXeX#ae!}dXwZo5E~`Uz)bz<$>F8dTL7$86eg+1*9UPIy zOjx}>WBePuo^aEAa(2=Tk!%vA2HJ9qg`umoiXF)q0$MR^~< zFBZ_#yp|9Xk`~mfbbL9dPIN}gCM9Myia6J&L7)z;9a$ov6sX}juA+kjENjSRG}`sb z%!*}~&%Uvr4ROl|j$RDCi}d8)%WRcpvqk25iK?U2P;Q@w6->HpDf4X7&>0g;VWZ6 zu$n=l{-BT3S~2Y$3B|n|+-B8;eni}hBE-isR9vwjVY&kp2>zDQgaC)QtalB^rE%*sb1KURjC zEqz=G=GwaYxw5^vN4CE|IGv%ruN~E2T(17C&PD3#I44=RyzSl1*Ro5~GYv6&ZnKke zGpbFYQmqGC#YgwjgX}iX*BPF`Fy*P~$$t=$ShAvVPM+ci-(L9b262Fc1>6eDTpr%i z(7)SZA@ZK>b9DsKees8kYy4ywd#{>_JCN<&cdV4omM4!=rO#!#_}$7|-Y|}7sL-m8 zaj^GSDE|V`w=qPH_9jPkT-eoc8NQ@vpE#tzqCak)-a4B3{xu)JI1*yuDpFe9QpA)9Z z{g_cJv7EfKjl-il|JC-vh>dFsl&EyZdGO{2LxTD}s&-A+J?N#p@|%{F-WLUX?oSv# zyExv(n5g8muDV*gvz4YQ);pPmjE^|*M8DY zemYdt%;WSt_#$Ol8%jOHoct8^YX32(Y+L>5hsoSu?!??3LER5^Jh$$kmcm4V&UG+X zt)YJJ;+rKs%bKqL;AAiK6v^yM{@W)c;c|g_<=GAyynU7F1tvSmqR)5geanu-nan(N;L z=Tz&1Rc>Rw-yT#ryM<`xddO{lFuCC_`|OpnZ`Eh2ilr|I{wLSMC+IX-V`_QSm@CFr zC6@c5k9b_$#xC<8x?wgA?s{k<#*s~>auFOO7WpoE%Th*dyq$eGpvy>!Df}@)E~2PM zu-Vi%((3$&sS|QFG^`zP7bli(8yB@a^?aoJ9;L)2*V9GboT{mpWOlSmCPp3Fq|7UM zuPQ_|P>K;eot0e)nzBS|lcBtN5-B`$tWAX+qVgyegJYFqXoKizL=Rl3hJ51#>14Ho z3{QK;cI*R5#(LPBEU8`%t%;l>^S~!KfKJ@_&1F_{-`mMo>?7JTzly(?OP9aVi7I_Q znP@)J!mK3fICUoS-NOm>I?(sBkj+Ss5-&ZNf7}xly`R!}%##nM)`Y`yEf- zekb~uIN7(j@r`PS_V|G)noj_m?@u(P+!@ zK+0|orFD_Fy!9R#t6RnanioB%BLdefCU)iy-=?)^OukPT{NAU&khm1*y*WEv{vqj2 zwdocqKT6VJ_(gr%Y#ui>-r}N?U9qE5K2HXH?bS+MPZe+YiP2LF(9NgU+G1LwYRuv4 zNLTh~X^H`rJ|RNx4^#OpNrZRLSaQ7PF&9l}itnW?HDg*p2LXqU?1%Bh)&~5Ym{4b% z2Lx|Qr6GR^?Y&3EyW~L-0RD}P@V~|sWat_-mT^04^tRRoZfq3&Yo`~_5I~Ur3(dcN zK+)WZqC|}y$I@rpoPTJZ@UGR@;0A$E;8W_`hbGf2_2LHN$tuQNcdIz!JeA!8bY?1E z-(`6;)5=D{=Wp$`cM#5VpbzhJ^W{}BxjSb89^H!6oUYxg5AHE` z-}AAogL;l~5;)!{et$4R~A?{&z+d4MhMr7K3HOLBM?hoCmtww-zODJ$&T=^^YX6me+w_QS96%c| z+nhn6T6Htgc%*c5yy@)?nX0M{G`L?CO+plA(R7?UCA=C6Eke)Fb1ST7A8cQ8X`Ui_ zQ&(#g@FWVQe&#|$;znkqO+-1^!V&&|m+ zU5wW-hK5jRu4zGyI{wE(6L{AW{MBDfj4651!j(OWO|v4T+buROYNIZDN8A(6e{XXT|4I48yl5R=XaMs-Ymlb zcOALf&@_T49f#3d_i+IB(#nVxxwXBNE!{1yrrgOE)y-@L=fI`Cp_lg+9h0pyQWJ4N z=?m1MHTFh6jnjeanXi?P58}5HHVQMht#YlRG3FumY_eGyQPLs{?N&6ttVzrLs`VbOEPt1aF?#;ql(Vw)Z(Mh-JZ$I@-O_2eHbP@#DEE%$ zYq1VyFAHg}BA1(hL6Skzsq4zX|F&BPfm*Q_880Zgk~1ey9dJW3%)=*61v(vl)X9pV P0VE-s|NfUT1ULFWl>Eun diff --git a/Tests/Manual/CPImageViewbindingsTest/Resources/valueURL.jpg b/Tests/Manual/CPImageViewbindingsTest/Resources/valueURL.jpg index d766dd08f9a024ff06ef1e8779e8c7551a1e95be..84dee2cab072ac62546572d5790a0e93e0e10fbe 100644 GIT binary patch literal 13193 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 Z_git8EsRr+pK#uOfjdyS4ft65{{Uh!wxs|7 literal 16158 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 diff --git a/Tests/Manual/CPLogTest/Resources/spinner.gif b/Tests/Manual/CPLogTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPMenuKeyEquivalents/Resources/spinner.gif b/Tests/Manual/CPMenuKeyEquivalents/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPMenuRemoveAllTest/Resources/spinner.gif b/Tests/Manual/CPMenuRemoveAllTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPMenuTest/Resources/spinner.gif b/Tests/Manual/CPMenuTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPOutlineViewCibTest/Resources/spinner.gif b/Tests/Manual/CPOutlineViewCibTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPOutlineViewTest/Resources/spinner.gif b/Tests/Manual/CPOutlineViewTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPPopUpButtonBindings/Resources/spinner.gif b/Tests/Manual/CPPopUpButtonBindings/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPPopUpButtonTest/Resources/spinner.gif b/Tests/Manual/CPPopUpButtonTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPPopover/Resources/spinner.gif b/Tests/Manual/CPPopover/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPPredicateEditorCibTest/Resources/spinner.gif b/Tests/Manual/CPPredicateEditorCibTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPProgressIndicator/Resources/spinner.gif b/Tests/Manual/CPProgressIndicator/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPPropertyListSerializationTest/Resources/spinner.gif b/Tests/Manual/CPPropertyListSerializationTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 zcmZ9LdrVVj7{&VqshtJRvGo(=%;`~7@Ae`I8YAPAL8h2yxx;UJUA4wD0(XxIGg63V$K%kjar~SW3&i zE$Mm0)b}GsR^czIG^)|@T^Kt~-;x+r0Fa+9^X<(+n{?N+UCm51#cTQbXp+>U*tbq2 z&$vO`+7?v5ki}R2eF{clYUqk3;n6#AGDI&~N?;g?WT8jSE)f(8=>IN34=e%T@@e05 zkJT(oJh_V3D!$^)Jd4*c+(74ELw*7Do6!tJ}49b*qZW1Pg5rupnc9ZiEsT)3YE)YTezXtU};4A*g0wO<||-E=R6;rMc z-_pV)i6nh>UTukQfD+S{*P9Z*`vM?K$7)KJF?u&84=9prByw^-7nU7$?==6qDyB@T zbZZm0>!VzDZP~~6%ct_{R?=dPf7sAy4`WU+01N>rP?XuKl=S-&^p-V~rQay-+%La6 zp4h%uE{n?Su_rzu4E#sipPfD7uw%SFIO8-i#TDCX%*Bsg>Z#?ywF2VYLMG)j?ouMm zyZ!j505J3$z3QE6K24p@vI;g?gRGYyJBR zo-qxh@xBViyv>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% diff --git a/Tests/Manual/CPRuleEditorCibTest/Resources/spinner.gif b/Tests/Manual/CPRuleEditorCibTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPScrollView/Resources/photo.jpg b/Tests/Manual/CPScrollView/Resources/photo.jpg index a57b108fab02911fd6097e0f3e1acacbe93d1783..26652ba36185be9b1e53ab256e6a8f1f66acaf25 100644 GIT binary patch literal 26217 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 literal 37959 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 diff --git a/Tests/Manual/CPScrollView/Resources/spinner.gif b/Tests/Manual/CPScrollView/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPScrollView2/Resources/photo.jpg b/Tests/Manual/CPScrollView2/Resources/photo.jpg index a57b108fab02911fd6097e0f3e1acacbe93d1783..26652ba36185be9b1e53ab256e6a8f1f66acaf25 100644 GIT binary patch literal 26217 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 literal 37959 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 diff --git a/Tests/Manual/CPScrollView2/Resources/spinner.gif b/Tests/Manual/CPScrollView2/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPSearchField/Resources/spinner.gif b/Tests/Manual/CPSearchField/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPSoundTest/Resources/spinner.gif b/Tests/Manual/CPSoundTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 zcmZ9LdrVVj7{&VqshtJRvGo(=%;`~7@Ae`I8YAPAL8h2yxx;UJUA4wD0(XxIGg63V$K%kjar~SW3&i zE$Mm0)b}GsR^czIG^)|@T^Kt~-;x+r0Fa+9^X<(+n{?N+UCm51#cTQbXp+>U*tbq2 z&$vO`+7?v5ki}R2eF{clYUqk3;n6#AGDI&~N?;g?WT8jSE)f(8=>IN34=e%T@@e05 zkJT(oJh_V3D!$^)Jd4*c+(74ELw*7Do6!tJ}49b*qZW1Pg5rupnc9ZiEsT)3YE)YTezXtU};4A*g0wO<||-E=R6;rMc z-_pV)i6nh>UTukQfD+S{*P9Z*`vM?K$7)KJF?u&84=9prByw^-7nU7$?==6qDyB@T zbZZm0>!VzDZP~~6%ct_{R?=dPf7sAy4`WU+01N>rP?XuKl=S-&^p-V~rQay-+%La6 zp4h%uE{n?Su_rzu4E#sipPfD7uw%SFIO8-i#TDCX%*Bsg>Z#?ywF2VYLMG)j?ouMm zyZ!j505J3$z3QE6K24p@vI;g?gRGYyJBR zo-qxh@xBViyv>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% diff --git a/Tests/Manual/CPSplitViewTest/Resources/spinner.gif b/Tests/Manual/CPSplitViewTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPStepperNibTest/Resources/spinner.gif b/Tests/Manual/CPStepperNibTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 zcmZ9LdrVVj7{&VqshtJRvGo(=%;`~7@Ae`I8YAPAL8h2yxx;UJUA4wD0(XxIGg63V$K%kjar~SW3&i zE$Mm0)b}GsR^czIG^)|@T^Kt~-;x+r0Fa+9^X<(+n{?N+UCm51#cTQbXp+>U*tbq2 z&$vO`+7?v5ki}R2eF{clYUqk3;n6#AGDI&~N?;g?WT8jSE)f(8=>IN34=e%T@@e05 zkJT(oJh_V3D!$^)Jd4*c+(74ELw*7Do6!tJ}49b*qZW1Pg5rupnc9ZiEsT)3YE)YTezXtU};4A*g0wO<||-E=R6;rMc z-_pV)i6nh>UTukQfD+S{*P9Z*`vM?K$7)KJF?u&84=9prByw^-7nU7$?==6qDyB@T zbZZm0>!VzDZP~~6%ct_{R?=dPf7sAy4`WU+01N>rP?XuKl=S-&^p-V~rQay-+%La6 zp4h%uE{n?Su_rzu4E#sipPfD7uw%SFIO8-i#TDCX%*Bsg>Z#?ywF2VYLMG)j?ouMm zyZ!j505J3$z3QE6K24p@vI;g?gRGYyJBR zo-qxh@xBViyv>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% diff --git a/Tests/Manual/CPTabView2/Resources/spinner.gif b/Tests/Manual/CPTabView2/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPTabViewNib/Resources/spinner.gif b/Tests/Manual/CPTabViewNib/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPTableViewGroupRows/Resources/spinner.gif b/Tests/Manual/CPTableViewGroupRows/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPTextField/Resources/spinner.gif b/Tests/Manual/CPTextField/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPTextFieldHeightTest/Resources/spinner.gif b/Tests/Manual/CPTextFieldHeightTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPTokenFieldTest/Resources/spinner.gif b/Tests/Manual/CPTokenFieldTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPToolTip/Resources/spinner.gif b/Tests/Manual/CPToolTip/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPToolTip/Resources/test.png b/Tests/Manual/CPToolTip/Resources/test.png index 8ebf637898b8c2068c0de261b06fec204869da31..9d81a30e8f561d7634fd95d095d65ca6010da08a 100644 GIT binary patch delta 2344 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 diff --git a/Tests/Manual/CPToolbarTest/Resources/CPImageNameColorPanel.png b/Tests/Manual/CPToolbarTest/Resources/CPImageNameColorPanel.png index 85f94ee5833ba1f4a1985ca7dbb52d5535c5d3a1..527ff1ad87655671f82464f31667ae435b15a7cb 100644 GIT binary patch delta 1761 zcmV<71|IqD4)6_-BYy_BNklSS}QyGe*61>YoGroxW#YR3rE-F+JAg8*TwEaoBl$XO~$cE zCp)8LQr9v*sb&1@laD`l@qgtJH+%5NcTQ~2b@9FGpxV6i-cPnR-}#CD-ip$zwRQn6 zXKC8ZJK343$;PSkZ-z_7)xRqze(uD+!+-d{KwmiYvRi2T!r*}2|K&%wyIa=|4rdOu zEhG-a0uYt}i+_h9M4++!rFL%N$e(@{E!o)-T!GPGT|gKdG8}Rg8G$tn3lAUcFW&y;`9ELz-gy8MVOg`b_?~jxozT>^~h`Bk4T2RCwGLRWa1ImE1pa6wMVUZXl z1(uYE4u3Tkxxke8{FX=7RGsQ$PaNOAwB5Mc2E4~vUIQ=qO@l~a(A(qftq#D?+DB+?cK949r~f?%{# zy9{}wE0Z>$ZFesV&^dTH_yq(O0t5k+FoVXFy)tMlngThV z48jnC0xA{)pduh}z?WS}U_l|s0kBvk;NT!|00)bt08$dJ5UJSpkt0eM;Mbu&1#uI+ zRZto0Hr>?_gb*0;ECdoX-H-?bPMO#MF@FUuGUhQ%Q!s;MksbsA66GW3!aNR@tPHpo z!W4R15C%|j!FRjW1iA~B(twFkUWOxMBoUG(&_>Y2p@SsD!;;{jv=EDuOJ>2_iflBSnfPMU&x?;gRE$W6{hk#ecO5 z`n(E|Z?rn^uDrKrj83~uo|F-T7lCS9P-z#EwZUma#XufI&_cOwq>7NlXc9CD9vLAa zlaq~3fPO=TsAINX|Jq;`qiWWvBm%z#cpY%O0%QWTA#Z`(02x7CK$1e*hDsCRxA5E! zN<=7PG%5WIm}E8?3Y0!3Uz&aK%6}8XPwvhAG`XjL#jx!_pum&hI4Ot-Xo9IjUWc>> zQ62IKiWb-wm?qc;*anVhpk$MP0Z#udKG#}|E*<>RD?d;G6*x3E_wGyFb$8U;AfRnQ zCEYit1w|8*I`|FHb#OXe>EaBM7?KX8O$Zy1Hxa!B$RNIWW}#nu^5Dn(=zn+jO#D<0 zsrz=U+_Rba7=kABwxG8OJ#`4`;MG7kK(ryW-5b-FKwkuXEeM-1kih5=ufAA2on@W3 z_I~B1uS54E2f&4AUCRj3-{XaJDd=niJ^#`@VT{@n*w``0<)=dmDo_KWe+RU3ZN3w#SEu)?*eN z+V6u{#3r*KI*4ij{Q|~%U{INVOwXP>Gc!~10`vQ~K4?Aj!{h%-N`E)8H-eTOS_A4Q zw|`^j?K1dQEE{XxYBYc6Z8{hTQg>uH908bJnqOE*qvT9`CaxDtRq5LcmlN~-@4kBJ zbszVAKC*N8S74b3o=@rr_oC6Uh?kIuBsCr>xi z*Zw*my#v&{*OX?tc3OZ4NN))Os=$hJ?E}KnMdC7H4Y&#{mit?RJ|s8v00000NkvXXu0mjf DizvE$h5UEBMZ*Us(# z-WdlIUbS`h&fPn6e&_tpxp$TcA?UmQ_Wb_&^|6s0jE&}=rjfKZd9p3h1nF8d!u4Rm z(EXQT$4(7CcHz7Hux|tH|J6&k!147ZWZ{Z0}#)^Uys5y*}1w z@!@l#7?v1BLgvE~(kOz(#4$P|p$=w|jpb+G``h?C7k}UQf{AGG=)Pm~UjrRFJnRTg zr}ysJ*t7fgzMjbiqJ<^^aE{PPvon)(Ex|{Gd_v@cNGKo^&=z3VP@Z1?WN2z=^!Ox+ zXxGuZPd21~?J_YEPv5Y0P1}#Q_jQk=tkbiQs|rwn#b)YTM@%}cv;@K>SdOSh4Vs}6 zjnQXxbAR7Y*4)&6Q;~`A>1F>4^zeNr2ikM&z#X^sZ}?;!asko+q$#zF;7}SsTpD0d z5hj#Lm=2Ucb`7dih34rzO|Ux$?p|NiiU%He;nso6AQmQ1?YwrtS3Epr}Z z2Im%ha(Q&~Foi_8Ns~7svlurxRe$1UjdU(E^Wi#BCV?LQM@JXy$mk6Bh#waV3y0f^ zl<fQJ&gM9i*|W!8za2AaiJ8Maa(31)(J zha1P$>HXYw!>8Bv{GjW{&X&zf@MX23;4sz(M+Hz@;4FtaI7=yr)zY@iVShajsE3DK zd~a9qaG8WrM!jjiOOKu5riH^+9eteRy-qOe~qDhogK^i&9(-nXK zt!cxVfl;fc()rLiKp+9;A@1?89wWQFRKf8tjFegpOMl=i@1s|?4gZC=^BZ<{?d_*I zKaD;QNFHMj&K;PAh>a{GPk*Ex(}I9n5KxP3Roq*^yt|!F{k`%*6xH9o>(D=bst(oV zeT*)CL@&js-(#=-ccA;WEp+K3+PI7e0SGFYEHDmdteU>t^XS45jza_%AuEAQIy>q0 zXD*$Ms`ZFW?U8SMmA`%6aFIlOqFD?IH}~$?NVSq9%45WwMWsDK`+v(IHv_dsB=P~V zjYXmk&ma2d`LSkFuV{`jxbMiRFJI+X{#g0b`d?btI_v*fGb_6{bmwb*9qpSaDQQ&u z46E}v-Dfb?i50PcYwVdRYcR#QG?6)V*$yOC2%VZ^J`3)^k z82;yVzu2`-cb@R|#eZJ2*qGbA+HeX^Xm)mZo$}_H@?5DDHiD7bw7<|S7j;{lpA3@U z{QA_Vud9QO)NvTe*A`gKl^}UYJ82W5Hz5qHWvAPF&5d@)?oK1QHlZcY)BROV96Mze z&m|Vsr$jvZ!BY6@`*V%6xPKvSQ*|a)(;ZF?fWq$u!5}`Z%2`G^_p-N$pE*Q_&?VS> zcKyAeuSl1HO^`;fn7rODFAX&F~Gj{3B-NeEDYsWn*&1{7R$$ a2`~UHpF4^1YHlt70000JaI diff --git a/Tests/Manual/CPToolbarTest/Resources/New.png b/Tests/Manual/CPToolbarTest/Resources/New.png index 058a6caa45a0c9f650d225cea4b6e56c756b5a5f..2ca371152ed836c53047310d1dcf00bdec112e22 100644 GIT binary patch delta 430 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 diff --git a/Tests/Manual/CPUserDefaults/Resources/spinner.gif b/Tests/Manual/CPUserDefaults/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPUserDefaultsControllerTest/Resources/spinner.gif b/Tests/Manual/CPUserDefaultsControllerTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPWebViewTest/Resources/spinner.gif b/Tests/Manual/CPWebViewTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPWebViewTest2/Resources/spinner.gif b/Tests/Manual/CPWebViewTest2/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/CPWindowMovableTest/Resources/spinner.gif b/Tests/Manual/CPWindowMovableTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/ContinuouslyUpdatesValueBinding/Resources/spinner.gif b/Tests/Manual/ContinuouslyUpdatesValueBinding/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/FF4096Test/Resources/spinner.gif b/Tests/Manual/FF4096Test/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100755 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/FontEnhancementTest/Resources/spinner.gif b/Tests/Manual/FontEnhancementTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/FontMetricsExplorer/Resources/spinner.gif b/Tests/Manual/FontMetricsExplorer/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/KeyEquivalents/Resources/spinner.gif b/Tests/Manual/KeyEquivalents/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/LayoutTest/Resources/horizontal-border-0.png b/Tests/Manual/LayoutTest/Resources/horizontal-border-0.png index 31cafe20e7b435e83a4e3be017642790eee55cbd..7bb1d11980d7072482c490cffbbd5acd7f3fa294 100644 GIT binary patch delta 193 zcmV;y06zcJ3EcsZB!8qyL_t(I%VS``4a9+1ABf$7I0lH*uqhG-Vt=S4Iz|CnI22(h zCZsS8+3GZ66=QW{adC0a&6_tbeE$6T{eK_;DU`#eaKnZT>;9twkYY1zCjR^P?=LpR ze&~uHKYo1sKNbK|oPe(Q=g*(ta4E)c?|&R%RPm_dfl*9SdO9X4r;wBfNy^;>%Z)Ez vzI;ShOj3zNQdviGDN1trjH~321t|sqJXw8<)=ETu00000NkvXXu0mjfvgB0@ literal 1236 zcmbVMe`wrP9M66@YP-XUKPSRMin7gJ@?P#P*Ti1C>*Zo^>}tI`^!!8CT=K4$^^#nZ z)Juy_I-$c>)PKZd3SI|d*-+OFrB1M|Yjw)zL>P)7g$YB%X~ln98LKbtT~#Ri!$9)h z_r34u^ZlKdy1O3pH9pWt5QHz$DW>q+gx}_dZTQ=fUVI)eJDqseNt=16EL(_(s%8$6 z30>|*DI}|d{a>P1g4mMRGFc~^JSZrpPRpJS?dm0rCWzK{wm0IBdZ;U-4D~6zO0~C?UKTg~$*M{0iUz$w3+hg5hv@AISm;7{D@+^~10bUIt?Sa>u>%%%4T zV$;@y7|pmpDluO3++38RBtan{MYjGvhrtj*SV1| zUfuP^R~If!^w?*2oU2wUl^}h`nenDGlau{dn|vo`Cayj)pGn_ndS>yv4-PH#?>Tae zUi#(AsduODp5A}oTR{Fy>M?E}qrcuhzkB)m(jPyWKA&&paG_8*@yN}FId=cW7xzu( z=0_hr^yzaSzf-NwT$-Joz3t-RUtjKgCIjjuWfAr#DTH4C#U!B+~fUc67eqa{f?fae*^3&t2_Vz diff --git a/Tests/Manual/LayoutTest/Resources/horizontal-border-1.png b/Tests/Manual/LayoutTest/Resources/horizontal-border-1.png index c4bccc2b49afa7b5e7bb5c9e43e5d519eb8c81ac..674c7f7f842e1434c37887c7751fa9a7666990d6 100644 GIT binary patch delta 50 zcmeys9xy>gN8HoJF@z&JIUymzBl&>aAND3j<$|4D45?=6GZ!7)(Zm1*p00i_>zopr E0IrA-{r~^~ literal 1008 zcmbVL&2E%H9H;fWX=CC|PZOGWa$$yDppariVX>P?ZMJLNXlTTn`V)_WafCq=|QZ;FMkOby~-|zSTe!I8(Y;EPyiX=&EogKd`)+O<- z-@PrqFAoPF#PX20`+T2{_zW{5xiK9Q&`I$D=@J|tAATj9l5}H~^!mIXKDQ&9D!9TZ zWtt1NByDb$IgTcTgCRLcGDrUT@skXa*pXl9Aq;bmjFX)cM)ps3d(p`xvSNAbDcCG+ zA&?S|L77go!Y&4MIc>6jCag=1$xhl^^v_4_UYZ3>HreL05 zJGsI>Z2cSewqaSWt_8+6w3=qykQdzee{!Y@XVj`W{%V%`N_1egy=;APxEvmmiHTui zG!DO=yJD_u*hL*ol@Otd4Jfc>_K_cJH4qy?ZY$uS#d;#sB{O`-==byok-Cb@UL&?dPh zsdp`|u2ZYF7Db^9rh*Qn%Gk#Cr^>1xb#sD$4g?hnqJIb~=gJ|{`qJK2g|a_r5_KvtiR@N;jHX@=KOGRYD zP{vRSDVeF`*HAY>)MfSbh&v(=h?-^4il;*tjXXvZM0cc^SF~~Dk}4Y0%`o-r$5$v) z&xENbLNbu^F_hE$r)@MeolI-f76B1g#XqKF9$8U(oQpm9;Z4K8W z+ff7K+}+xcr-;1~AG38_6lFrPv`GV*ZbAxE_zRuUGa`Up075=RyGpVK0nwTqqigLxGdHU@RuounE&~6;nesyE?X8#bU%Q zuwu+cifh?v%bKWlz+ldDEhlH?$=Fbclod@kJ=rVIcC-?*^=DBgZd(Sqm0wZc#XboB zH|`!z5TYSA&h-Ex!1r=g6`T1#Ib*OhjMp6hYL?m+?m+Lj)B0H086ITfiLvo$Tze~r zr}MV9gcMB|zg4rNqy2TNOfJ={?Y@S}S10#eJgU>=(#vXd@%B>R$%_AynkBhawc)DI zPj1{%x}cmI*k74#O1C~fue80mGQYXG87Y^4`sN+p`u^*~G=1!gv$L};%azEbpH~;} zxv{st{+E^am51j7f8kXwmxnKQF0Fur_3e?F=N?Ta&mWL0!m&H&7Z$FoEqAScbb4`d zvGojq(Jzla()Ie`_Thnd*M7M2{ATHa*M@&zIKZ^4Ei*5?clYV*8#mY2%~IAkw{~7x3#)W4h;S+!Uv2pIn%j<;v=}Yqcorf+1mi?f$rMd5wCh?8W3#Crq ygP+VjedKK2xgP@qaQWVuJvXm5F01>A=27C!Lr*n!lOOK&{yvG`q;$S#^wi(x?WNcN diff --git a/Tests/Manual/LayoutTest/Resources/round-border-0.png b/Tests/Manual/LayoutTest/Resources/round-border-0.png index 530cb048097ffa44d6f2b52abe994664d0ebb00f..c0212f026eb289ce82a07e2c4260dd7adca5f47c 100644 GIT binary patch delta 147 zcmV;E0Brx#2(JN)34a9+1ABf$7I0lH*uqhG-Vt=S4Iz|CnI22(h zCZsS8+3GZ66=QW{adC0a&6_tbeE$6T{eK_;DU`#eaKnZT>;9twkYY1zCjR^P?=LpR ze&~uHKYo1sKNbK|oPe(Q=g*(ta4E)c?|&Qs0PrA|U6Kc-X$$}W002ovPDHLkV1iEx BKpy}A literal 1106 zcmbVLO-K|`9G?oJ{2(KWiojtciD+luo86st1~*w}c5=ZrSr^()IXm;z!JQ9hp6%+T z^bn*6k1ch`ZWR$~6k>;pq)doTK?vb3im(oyjKJQgYX#z=ftmL)zu)iweZ8~eTy53y zDvF|NQ*BCytkuE0Z!h`Ydr)j7%Q2kH;V!2K7c~!23B$=FI%R3SD1$U(Xy6TMrl>tV zW;Ta&>2^tXELICJY{_y7o1&UqO0K5&BTVN}uW84b?@ymGv}wed3(+)4yE5uC+lD>V zHQbTahx>KWU|P=7%_WHlSO{x$$tu{sREjg}x)Rw3*BnEyLvVkb*>EbC?xbbMLv)k{ zAsq;S79b15kytEthUNhT9N;;~hhR(!^AZ5`=ED$cp3x&^6m`=UImMYij9rQ2ip3&Z z46}~c%Rx~T0}Y-J5k$xzvawbQ*?vPsK|#LmnJzXRn+_DUyfcX74Doa$1j|jQw}fqf zGf^aETuE~|$O6u?g1FYvKF**&ZfuM8vqLW8GRSuZJ)P8}r=db7x!c)L03_Z>=RK1Y zMJp(dK4>8ur<6ED{;-B=NB}kg2xActW*AV_K=1hFY7pkN(XfIIoR?0 z9G8~6qI6o*O*=RT<=Kc-0k)s)y++o%jF1rVCGKs g%=Gj?zN@CLn>smtbg|*;mx*A?Q^^kHVQcs3Z_|KkfdBvi diff --git a/Tests/Manual/LayoutTest/Resources/round-border-1.png b/Tests/Manual/LayoutTest/Resources/round-border-1.png index 556c2e8f6f9e23203e67584bc73526258c451883..0691ca75fc45c19f8dbc07c5e9c738d2bc0cb270 100644 GIT binary patch delta 47 zcmaFE?mIz6Q^eE7F@z&JIUymzBl&>aA9kiWEDSq(B%fzFb+2Op0#8>zmvv4FO#pWm B532wG literal 1004 zcmbVL&rZ}p94?5)AY8m@I7~{y$!%x4yHnawNolvTiAAz(;vRRlon;$nr%ng9a4|7n zy!a@-0Eu`t@d1oi4<301r^^;KAslSd&YynY_xt~0fA7WW^3!ESQC7RVeow9o@_qF1 zf&6~{`0Gk8Pef-R4%k>s38#u1vk?W|lpN9?CGpvtuXIaM?v0cFKn%i{cEnPRR2Z#H zbIDeet?e==(GeA3L=Th9QLip8RglDv`nny$F!$&r**)j<;C!ziogYP3tZqLCTcs@p zQYr{2)8nkLOGlmQ+HzlA>nfN*#F3+3J2eRRfyX!nZ4EXeh#|m8L(P_Hn$Lg%5!9if zBcp*#yJ^@Eg88FLYdjv?JwKS+k|#%<2$9>mKAldrX;WkTP)C+!RT_rTkcdWcmI+ce zvSPhf@M#h8Bo_(GK&41V>_j-K^z=G}G!MfY;jEY^N~TONNvSV0lV$GiHdFznH})%@$fA&ApG7Ar%|zFCRQX4Xlh}r66Cz}` zplLw7iI9b$<@*5+TsLT9->5Zi;~HMj_B^wN+eUy;2e}xxT`xcu_HoPeteV@+3PG}n z)^-zVcg}6z$+bOBiD10X*m2zf`x7QuF=09I4%#3jQIb{Xsyx@x`jjW9G!8gR!7RUa za*KV~`Zw+!Y+0_11MfhqX?CzW=f?k&GhI5PSIzNPv(#6z1FP*#>&wH<@X$<7440$v z?YlLQW3|@x-G2FFG#n0hqs7N7lck?;!IzDN4P|jfdB47NdU^jMtLCrU+4Dc`4B!0* D;+QbL diff --git a/Tests/Manual/LayoutTest/Resources/round-border-2.png b/Tests/Manual/LayoutTest/Resources/round-border-2.png index c8baaba5ba8d4d3ca801be0176000d7f320cdbd4..380bc53c501f261cc305b282f621bf8299377c29 100644 GIT binary patch delta 148 zcmV;F0BisA2(ST=B!72FL_t&-(_>&@U`PYv7$9~BVtpVMXTSr}uwZ{67A96P3~Q01 z7(+uE5m*SU@;?xK{`~p<&6_tb6c-ow;85%bSBwlcY}l|4hXz>;#sB{O`gf|=+Du@^8j#|`A;z_h0^1s0xk{T%=LmtT3{IywGw z#(+kk;VE}`KE$K*<*GeDZ7U9+KMMw8l@WNDnjrRO{78*+{1&gu&dIgNgDn+0o#VHi z8aGCOMnViS0!-OZhCoIFO7~^6+0TFk5fq^$A}NKkYFbhu1g*t0YoSw9D|)eIi%B_t ziqb$8#d^Ii)YAe9Cq<+vO2Q#YDW;K%=6q_#DL*>ZX3%kDhi*V!;)8_Iw8$*Y@yyfh z5WK)Jc8L9`l_-`nF*XAc2~hOBB(5#(h*t0$H+I#Is&fGrD>x#vq0Q=1JJklW+`ZdS zqR6~aFNQ8FiaDbbd)C7~E$KO)eGwejQ6cJw2xa?VR)TUrLJES4t{3HEp-@cAy42>_ z4J&CyMbq^`IU^Mj8bSqG&J?sFQe<83(=?@xE%^~OeH*v!y3B41TX-i{)k17i5>^SB zX?MWL6rm)VA_34wGr%xy*H7f6JloOgICQ_lPBA1N*vhZ!?qVPI{XgzOSy2is4tWqN z>Fkiqx3JFpiWGi1^zv>{Y)dG_d2K^Xh(?&9Ln@0$z5oCK diff --git a/Tests/Manual/LayoutTest/Resources/round-border-3.png b/Tests/Manual/LayoutTest/Resources/round-border-3.png index 80c0a9116733e43e8d7ba740eeb8c4d4f50eeb0e..89c9be3c726d2882a79bf5cda41d7c4977ad75bb 100644 GIT binary patch delta 44 ycmaFK?lnP0P0-WDF@!@lIUymz!}<9CLI#GMbCS=~*D9`I00K`}KbLh*2~7Y;><+&G literal 1001 zcmbVLzi!h&95yPTs;E04hLgJz`_4)1+Nx~({_SnrAV*7{xX zUAKmNVtK$jBR-%LKEsSCUP8wN^fG)*`UEHEuP(`sqO48Q;fRl-XHHBr4NHtxWrbiX z%Fb?8;P`}aFeb-o?yBFvd{sf3xa!Mx1f#+y)3kfR$l&5&7+;*kcB1Y+0Xvl=1Tw-g zsIt?%bShV!>pEgDuXPp7A^gNu7fy|$L*P?JKwE>27@826NJGt*Wm%7b0TI-pp(CS# zET?HW5Q62S3TrHxIQ<}8+7c&MopN3{x;~rDv{_T5>{v&(ZA%TqXb423JkL3<8hN=@ zD+HvBSz7Rv=0GaqF+Jn1Dm-0;kQGsMEu5FjM2VE?6)tq7K|RZ4Tyu2E`{a)sE79ff zydZj?l=O_nq8^j2nk;g6vmpr--Z;-$DvE+n0~()YBzD?H~xv(DTBk85p(3Dz4#&wlBeLBSff!JkxA@eu!){Fk8NF*W6xSa-7GcwwnsO zOK#^zuH!R;Ib}miPwNgioKjB9DJ_6MXoCpHX)e#QJd0=p!qV3y2^r16Jiku5!ai*M z8~46x+n$KS+=q74>X_=1oBU7Cbm5FHo8zx$sjox_%I$UQi^KKskX%d*6Ql9sNAr;! v%U<9Ot8e4v=%^d-tzBJReYkvcN4b4p!9Ul2z5n<*lEc^Q90Z^CkKXUx8Y{KWoUg>~gxJ{l z5lC$8h=GNLzres>U}Qlm=QJ)LRUNQo--n;)dB5Kr9z5FIxVNEc+Gc;B4Ai<-zqi)a z_w8c%T`hNIZ!Cv=Di>5R%}@A*fqq7h*nrXG^u<@UqiHv$>1Zs+(PKB}nL%reQDuc< zYue6kRnU0OB$%+HH23r$pFZm#O+5W+H-b?Suvxl)CfM-oU=*LtV<*vfAAp_8RRS54 z6ja%9Ub>a1FLhnDudhuVEFp64=@(9oqeBpI!9dr5tr%hmFfvfPW83z9U_k^;Xqm`r zA=_oF6wGa5&?Vmor{~VAur_jnlk7*X6m0mN1dNWJxG^2A27C(<|)5 z&cAW*VaM@R9C!~pZM%o{6*u{xoSDiQvu=*Rnx(l?9awKKTVEY6hlk~AVuTuvkKUKt oYOL<`i9f2oO@5u9?>>CBrrlg$KmYme{j+-H`n?14Vek3t-#tq&4gdfE diff --git a/Tests/Manual/LayoutTest/Resources/round-border-5.png b/Tests/Manual/LayoutTest/Resources/round-border-5.png index 454b517cd028d704a7bce2d7ea5704ee629882e0..3a2765ca85ab88394da2e04f9afe1596de274472 100644 GIT binary patch delta 44 ycmaFP?lnP0P0-WDF@!@l`A0vqfq}u2g~<%kHj>X5#(xcA00K`}KbLh*2~7Yxqz)ng literal 999 zcmbVLJ#W)M7aH-NrWaMIB8mqO>*caj!2E@i+ z;71@fBtU|djTwFfe}I8=8W)hN4p_49!_V`)->(n$A8fAQT~`!kv%g0Ma@~;c%G!1L zT{DNfa=9aVBXP(lVor0WxDg*S&`;%L zC@7PYw6IG@UFh0!UtQ}eSU|+Fqng=EX(4DDvf6Ge z?Jl|Im0a7)85KMqa(+^Gz`>LYUQBrgyu%I%Xc(u}xhl_jw1nmHGZy(dPrxF-c6^C_ z*#0-}F19RJ#(}%gYMDK(F1gYF&@U`Rv9|8W4I976)S;-5c%e#52M4_)!&$B%F0 zQf!8OV literal 1137 zcmbVMOK8+u7)~83qP7S{!S^A`U1%pcC(}7&LPuws%(MeeEz`lN3$b~e>4Y{9lT#-x z_}qE9;7(jA!gb*T1(&)I%LT6}2r44tLKlLrq^=Z%deY8RFBBIykeu_M^MBv}&iRqy z!LGGi)^Z%zRT|PNY+V<>YgV)G^;^w9*s_@x#^|V5r%gQ|T;B2w0!ofPK`KPIW{y85 z{T!F5+to2TRz9eho+Ie7ju1IMLvvjJfymd*NkV}^CTus$f4={K2ey^vYw0p9`zmSJ zL$d)HogJ>4vy-N5@dx&U{zzd24xu`ToGCX{qAb72tFV21Eb?Gcg-&MqC8x&9BS7^6 z0@4CZnh-;Pk$_TtnM|e^NDx60N+ObyD5In#1wznzcxElI>Pkf`wrnve%QqlHrU?^(g6vyV?vI3C+OvsqMKSX4DODnr3s2x^kd?Hpz=uHPEt4DoT8_aU|dqc4z^F}!o z*sLh}l;)Y!4smHo%ku0-uxv|#Xdgr<(+4vW#QPAE5tKEph>Q7rF@-g$&9M?z(jbHd ztm3p(M5uuB7^m}U5y@D?eX1(Au_ZU8x@(fQU7Oi$VF!MTRn&m!)C;PfH`VTdk%mXT zu;KYY9ZiF>ZrW}v$K_dyRwIFZf>_1CbHHML6?+Byux^X^w;H zr_Uq3gMS$tqViB8wPoku?>k-|>HqlW=K0rqy1ObHHYJSVGhBju^=$W{=lZsK{1Ye@ LhPB%RBF@z&J`3FA>j|HcK$6+@HhD&{t&-XW*{$l_FPgg&ebxsLQ08CU4 AqyPW_ literal 1001 zcmbVLO>5LZ7*4T>REu8qG)%#ho6KZ)CrxN<(_~{8np(CC?y=cqwmY=R#ANEG1wp)d z@#a6!tKeDCqxcuZyT^h@L2kq^r*tQ~`s9}Xs z%OsO*MOj-fvoJcO0u1Q^OKo`e{v!k|w&A08fP&1WW43jg)4kK3esp>mnK4|y57tUc z3M5p7piGX^!YXYz)wSfly4E0=Ld2mBXHE@*UEuPZg0_kp5h4f>tm0SW@iKo{Z7jbnDA=EJtY3n}59qbU&c3dBu#3L=&HEV7+Eku|` zw6@En-5HnomvSvPr=j3^pYx--19rz;@M6p};O@0S5JoJm&Q*D4(RwszPiXAtJOR`E zTI>S*sP%8$o5VC783)-!X4B{pIOoRylQT^^qgBoESF_YtvIDE_dF#u=`S8$GPE0OG z1G3lOtFi2QPQUyz{Bd(}`^LtzSNn0i{ps$)t$pR|yTzx!-faA=hOgV%@!oFkKmQFS CU^3SL diff --git a/Tests/Manual/LayoutTest/Resources/round-border-8.png b/Tests/Manual/LayoutTest/Resources/round-border-8.png index 4396661b203ee68099b63fd1541a0b9cbf9cccdb..0b963bc30052f76417841019c5c899bbaa8a2905 100644 GIT binary patch delta 147 zcmV;E0Brx=2(JNRtv0S+L?SU%q_2dGqFl;^N{S918sypdgJ1EJUng zEe0e&v_f2p{ef7R0Sf?0#saZB5bFc6I0Fs<0D~5mQNV~1whRCO002ovPDHLkV1h}b BJ=6dI literal 1117 zcmbVLO=#0l91l!I)ag{jsRth^2!6DAFI|%+tj?}kw}P3Yt5`wAGrHRpP?JX=?W@A75rduyt)jV+sKSCRIUGOZXs=F%1^VUTl-0i4H%HG1?JZs)kB zvRx?BqP|x(i4!wIOswj7jLmWF9aYaThcE>tJYc&i{>!6j9@tijKakL&?q%?x-Ba^% zf33G*)`m>Q;yZSO_NvMR983*Rb%xzQt)}={U6t*_Yk>!|5IU6N=bS3)eIP@83=%OI zHK7E7gkmV(Cd=|JAVLHMC<;i7B3X@#Dukf^@XVTTmDRkKt=nR!6hBC*rwT%)Qi)aK zG2#yhNKuqfLlmP75e-INYE+|c5NRlAI52(Nqc(9tsA!bP2u<QRm~$Sik@8w!EU8+D&=v!WQo z8Zk#4?9!Z;;@O{=Wm_slNr;f#24xXSNrV&x6-~=Z*>pM^mo%}Vu@G0(U?PbmMM{WS zgt|~#k`n1m7AcY@wPi9&gPU^$YPcqD*tMD6Iybo}SIzj?pu{f_GTi8ZzCl7sFi1R* z=}!RNFl{$Hhvk`zR>Qu13|m>BIAAuvs=a`H*!FMSosy!YSsYR)RN``%#Mimj|Kv*s{tdi%ph;c)vC{>QQmda?gkZEQ>~#m}sL`+SS+9@^T{aEGFyVyplF diff --git a/Tests/Manual/LayoutTest/Resources/spinner.gif b/Tests/Manual/LayoutTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/LayoutTest/Resources/vertical-border-0.png b/Tests/Manual/LayoutTest/Resources/vertical-border-0.png index 2d240a4cd4475d0eabbab4fdf9ba5fcf975ec194..40e77ec2e9d51d74a51e4c20adcc13ebc61d1143 100644 GIT binary patch delta 213 zcmV;`04o2`3Go4tB!9R`L_t(I%VS``4a9+1ABf$7I0lH*D8MmLbM&F+5)Fib*q=hn z31NSzJ$Qi@jU9oGwFZkra5_kMfE)tDLdcH6nnsF?i+gU~ym{gC=g;r|Qvg8vLFRzW z!{Hb|m_y{SDcG=K!@B=803dU5I7k-c7&B}k^6%fjzqD`+$WGk+{QNE~jxl9`1`&$H z8;$f4J)`2Fp2gC!KHl(Rrr>^C)2L=yl8ZVm`B!q;zfk0d)#BrMxkg7dk z$v)>l=l{O{?&F2w=K`B{Y@#SCkQt$4QFXFs_%%UOE4ws9FZ2_&Q9@unC%?l6z{lqE2EDjNu90l<4Kl zS81SY5`7?+hj}}VEBa8~!6WtIl3Jfs1&!YGEJ)TwLSSG|0X1XFbj6xPukeaw?;o=? zSW)pNC3@AVa=rl4mV-fzfngQ$5b%gWk!U;~e+F<6K^Af>;=(8{MmP~d(0*uQ&C$li zqMU8pB9cT`JkJ(cwpy(+)d*ub6D$%0!RO$(FwqFRGp481!loPQFv!?d9o_bH%LG27 zGG9o+n=1kX9Oci(R>cnmvn|>r# zOgmWdET?2yQ=JYdR4mVOE0zt?BQcOyRNeGtzdWna%Gl9g#ah;}46u@4QD4VCjQ%(7 zL0%A2Bo2NM3Xyn*r`uTV|KyA%&ai%S{Hs|yN2CM&?ON*-VQqM@NhZc2qmlXS`P~%N zMdjpFsdjrzn-5%Xmb*`6ny24t9=abm_VR`Yo1cFDc>b}_cBFudP4UQns&zWF_u=+g z^}^ZS_Xa58`yD42l8xT3E&=@2`}W|*T^G&=d#H~O^jsfJ_03a@i;J)5y3Q1f#h;SN zWOwWKuixD`wdKn*(rbyyZ$6af=H@QhiAsMcdOmp*$ER-Hxx2jl~*|?~g{K zv9o;c;+tQe6r+E>e|X3=&F;|F!nf#$z4z}f9DR59zB7l8KG6U-9^Tyf^KTFC6@$Ux zwwIpjJNx^kR;yM2>hNsjTHh9KYk&VcAK(+)1_n+o?!VG}eBlW5#nRGJ?uAe9z}Wzp Yr;hbXS7xpi>i$0_ml>8n8XSG&Z!pxFt^fc4 diff --git a/Tests/Manual/LayoutTest/Resources/vertical-border-1.png b/Tests/Manual/LayoutTest/Resources/vertical-border-1.png index da68cd1a563918b313e72cf5e16b6ffef2291add..c64825c354917e370b39bbbe9289659076d3950e 100644 GIT binary patch delta 47 zcmaFQ?mIz6Q^eE7F@z&JIUymz!}<9Cmkb+jax*kfPM?{X{Nw}!5O})!xvXWab7&U5Dp-Pq5A=of-x5S>YlW}duw2mFqNVrsKq-L3kJ!!1g9%E05(0(RVhGEUmyNKPduVq*$=2|1#DN}~CT3)+^Xl}S7p@?r4I3R$9%%0?-Z zOrRyHy|Jl5mce3 zBCUZ8OV=z2!Sa!XS{_ZTzUMEs#L1SYoM)D*&So=ZrYkHzQjuwz6^EuZghiv6r<|0H zwAic}JX(Z#obi~YpkgFrcFJv8czP8=k_Evvaat@BB~qrABvX+B)g-CnT38pnPye`a zqjfQuXH@Oef}Q4}sK;cp28-O?E>sx`Z>;BeEQ&%-JQkiNH03?dmc<_>iX#i6Er^iO zgoXz37D6V1rsw(CcN|~Go>p_*ghiUEXUJ Gz4{H)i#2rs diff --git a/Tests/Manual/LayoutTest/Resources/vertical-border-2.png b/Tests/Manual/LayoutTest/Resources/vertical-border-2.png index 35c673295b227aaf8269b98f0508ae398f7e6de2..8e830a47e59d55da9e1ad100c2b606a81ea0feb9 100644 GIT binary patch delta 218 zcmV<0044w43HAYyB!9h0L_t(I%VS_*U`Rv9|LFj**$c!B3Fv}9fByVNONadW_3H-~ zha`d=F=prz#l^)v|Ni~^OACj9%+1fw@5163Q;=ii zu*Kho4I9?c!Z9FoaikYn1}N~yrT`Q|H*em&@a4;wkCZq7q*EVc4#+$l4)J3^0>U^H z(F+SPpaHD`a)=fK4xlwy9D*EW{xo)kKhz$gfjAKB1F<_0$5Lo{EYuu*sJU1H00;wp UfA>zZMgRZ+07*qoM6N<$g2)17IsgCw literal 1246 zcmbVMTWs4@77D#gWfxKgwS{G-b4T```m2V9Wg6zO|~JHQOz-k z=XH4;7NM-pJboFbFf3TnN@cfPct}u8os@kY($g)3#<0`@&ytl%=;C8=Tr<+djdzy` zTvOA;!^r|&utYea4bIwdWOk^e%uXu2N*s6qPk90&(4i~io?bN^!AlbxyaL+$#}t8Y zsJN49V$-Q|VHg)p8{$cljwv)t<18RSJi&2XFV4__rf7x&Obl>BoDpamZ#)FDW~&vU zDCHWqkd!7ST-OpPs#dF!wK!?o;}qa|-sfPL7}AJ2GlnaBF~jL;GDy%-Y|U~t)4+X3 zdCZ)0(**K#GX&i#6t;*Br;#X>GRl)J3Xn9V>wa7t+KyX<|G2TOwo{t1AXS8pIb|!T z9+jRZ80GHvhI~cjjd0M`P*LQnWGYiSG~B$DCeRJ3YN|kkJ{kZnL30ev_5r{HnwO*; zo6BT!aaLlQ9NS?5!*eX1%(2Nh03Zu8ESt=TIl!|Ln-E35iOn01D;o-I+SQQV1~z+J ztRUJ@c1^ovn$>0p3{RM@=}edwE{-Jef~;tUFZ<=$j8=lSHVxIBZR+?&eg$nC`*h;J zaSyOOpGh(~c7W#NT$UvoSoQzpj6%*(eslb*S(-my-nc%XqM#zv#Du$ICx ztR<3{G9~ZpF?DowQ0Wh@udkoE+^>AFy87aCkq-}>{{gVl@p z$M1=IkE~t)a^w-=+K2OdcfGx1xrM*hcK(N_cizbc7O&qEiw2mbrKMUA%Q3;79fvZV z>A9P~9Tvq)%iZ1Gr@ol}^tHlE?4Hif(-(=UmaESn@9zz+q*j^x554iuFW-N%a5x+e ze-n*HAFWoaKVKET{pqW>&fJ~yti=l#j%agpf90$7z{>0U>QNbwRJ!`khF+LHS%3M) za4&~N_`u5Xu2+9-3q7{$=&}CDxe)cl+5K4dWP8W_=T~-9^~lV8vE#eXF#FloJ@YN# pzP1y`25#P!sK0+y2nDg$F6`7|x%JZdg>(KNC!ZaX-W(Wx>TijBn&bcg diff --git a/Tests/Manual/LoadTimeTest/Resources/spinner.gif b/Tests/Manual/LoadTimeTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 zcmZ9LdrVVj7{&VqshtJRvGo(=%;`~7@Ae`I8YAPAL8h2yxx;UJUA4wD0(XxIGg63V$K%kjar~SW3&i zE$Mm0)b}GsR^czIG^)|@T^Kt~-;x+r0Fa+9^X<(+n{?N+UCm51#cTQbXp+>U*tbq2 z&$vO`+7?v5ki}R2eF{clYUqk3;n6#AGDI&~N?;g?WT8jSE)f(8=>IN34=e%T@@e05 zkJT(oJh_V3D!$^)Jd4*c+(74ELw*7Do6!tJ}49b*qZW1Pg5rupnc9ZiEsT)3YE)YTezXtU};4A*g0wO<||-E=R6;rMc z-_pV)i6nh>UTukQfD+S{*P9Z*`vM?K$7)KJF?u&84=9prByw^-7nU7$?==6qDyB@T zbZZm0>!VzDZP~~6%ct_{R?=dPf7sAy4`WU+01N>rP?XuKl=S-&^p-V~rQay-+%La6 zp4h%uE{n?Su_rzu4E#sipPfD7uw%SFIO8-i#TDCX%*Bsg>Z#?ywF2VYLMG)j?ouMm zyZ!j505J3$z3QE6K24p@vI;g?gRGYyJBR zo-qxh@xBViyv>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% diff --git a/Tests/Manual/LongBindings/Resources/spinner.gif b/Tests/Manual/LongBindings/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/NSBoxTest/Resources/spinner.gif b/Tests/Manual/NSBoxTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/NewTextFieldBezel/Resources/spinner.gif b/Tests/Manual/NewTextFieldBezel/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/Nib2CibAlignment/Resources/spinner.gif b/Tests/Manual/Nib2CibAlignment/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/Nib2CibBaselineAlignementTest/Resources/spinner.gif b/Tests/Manual/Nib2CibBaselineAlignementTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/NibAppRemixed/Resources/spinner.gif b/Tests/Manual/NibAppRemixed/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/PatternFillTest/Resources/bad.png b/Tests/Manual/PatternFillTest/Resources/bad.png index 3f4d1a2441803a8407d65fcb8f689a42dc8017d1..9ac10e07ff3903d182d4de5125d0cab2b93d3679 100644 GIT binary patch literal 9730 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

xxP^f+Qe`im{u9 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 diff --git a/Tests/Manual/PatternFillTest/Resources/help.png b/Tests/Manual/PatternFillTest/Resources/help.png index f7811563d536997eef606de1703813962941ffac..cc50183472dc866f78c5b52dcb1c3d46bfdc7715 100644 GIT binary patch delta 1220 zcmV;#1UviH3fBpcBYy;*NklzA{M?2U;zF&;}~2YMp6KKr0EzV(@%W9(!9-3;lU z1;5|_WW~bTZI1_@TDG!jmD_or!zP3vlLT1>=n)|4IUqTm%6`{BI5~Lg#K`s3#VaAZ$U_c%cv?}f|uGhVfgfbxunF(0|a+2a28dU`zn7JJ?xPQx@d7#olCYU z$j!+NA#ZLyrYGi;F|;A!f|g2bREcYV<_aI2BebG(jw-` zLWnz=J2SI|1%Rr8)-WftQ?_Yl?cGn>F>)b_x7&7O;erx=Pm__y4ipr!M~2NVVJ@GX zWq+QW$zp9GJ}!cIP;h>+JE}!z|g7Q zac*enB!kQ<3FgH8L;V;S?#E0z37Lz+JQgEwHqPt7$!PC*f9U7{^B9^Uo$cz`8;*>I zC-j_Y6a+Se*<|hy0X;6zLhD1e-V2hIFOG#L4jIo>25csE;|gD;^-V`j-3mfBA7&EFMkHX0Hfg zObQ`xkp84+lDKBp5+ljkuDx9`f1`gtf5+cro?vi*w4-%>>#>e~9cQ9L(W_IJr_v0b zx-^xJhND+I4s@JpZEZcqKFe iB{f*N+Nu}N2lyLLNAzg00&-UX0000&w) z;pAV7<2{lj^?wWu3=HiG>hXAvSohYv_Uz$~dT+}?vsh%%Av4^>0Lug5BmMwnC4ks+ zBHiZ?%moI19eMXpDQBhDs zAfBM$EHfYzP4yWM$(kdRSYqH-O}hC<_XJkIIkU91w8(Bp?yY&Txv|Mv!Sh6r1qSWb zLBoZ-X%c%QwdKMmc)m1dvjy4mH%G7K&*EdwQzw$zB zr?0x#y9r>M4r_+vF+rf&${K7m&4HZ3c9Iz|{ohM$0vuEB%e1(?5W~qiZ-aQG|Z}j3D zt9fTK_^5zbBIX^ixGS!PFF9BQwO83{%UK-<(tjqa0#fK4%YsoX2E+!QLnf&2Y9g*O zJLGwq>VdF;ky((|8OY7!p~~hcCp;btxy))dn{splW>*1e6}RiO6jHrOlxYD}9Y6T^ z95@}#@LAUnu!;LJ86=WMq6`NDYHKO8nh1}_&M+87F^|K8dK7@ehy(X zPJf+kQ=R;H@i#CO7$J+LmR22exCb4e8BL}}}KIys$drOQUk&H-!ku>L<8!R1xmCW)w;jyVyDzXrrS*CDFKa>u1#1v;i z(Cq8)zf`q6P+bK=j^h>CM|jG05SIW`+uSL zx*y`nm?{ymB3XzzInLmjYa_lp{$Mv1aG1hRppAWd`NELZUM0F4-F7Ay)c%%<2_D$I zuV9^O4k$?!iK1Nt>U?`@Xy($-7wGyMBfRZfD)w+GA}80PMU@u2!ECmO6apnoEq+1M zQ0+EWOA2)uu^bBz&3yjNhrz4E{(qlvDF|AnsRN~lrRmwJwY&Ew6_X*CH9OR=>pHWgVO|XHswgr^f>EPc23;;mW?g{ECWZ3`!002ovPDHLk FV1myEgVz86 diff --git a/Tests/Manual/PatternFillTest/Resources/pattern.gif b/Tests/Manual/PatternFillTest/Resources/pattern.gif index 60f6609044a03c626500fe81f74d64a2cf9922ee..6004e749e6240a059345a4a89c3415aaf3b0b51e 100755 GIT binary patch literal 309 zcmV-50m}YINk%v~VK@LF0Pz3-X^?48c29z-f&c&jEC2ui05||306+r&RE~)P?VygB zG|(EKv)6Q!X#f~0j97l$Rf=O7omvc=ZrZJw;(ngWi>Z7WVa`Y7xo#%p5tx89pShrN zIh#5sx~-9$sAj`MC?ZQtMjsLu88cphxpQDP9=Nl+bxvEnho`r}N9DFgSS1Iy_Xf5I zhF3Uw)o>sfxR*o+k~C`&cW=6=$srV{o+G=(Qnp=CA*9)m@ z%d4@Yieh4_^B1bzf<@cu+c6tFvx>b%U3hVQqwTOs-1&&DT?y^|Q;a@-K9xS{YCKJ8 zuT_qGU5$VHrUr$1vD{(76=F%iW^VW$+#s$2Hwo3g2@AIlo)d}=>?VK{rY;T!77fq2 HC;$LE1~P}N literal 323 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 diff --git a/Tests/Manual/PlatformWindows/Resources/spinner.gif b/Tests/Manual/PlatformWindows/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/ScrollviewTheming/Resources/spinner.gif b/Tests/Manual/ScrollviewTheming/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/SmartFoldersDemo/Resources/SmartFolder.png b/Tests/Manual/SmartFoldersDemo/Resources/SmartFolder.png index 85e175cb06bc2ce986149ea6b08ec0de360f9a39..4fbb6684629b91148eec3bfe9bf13ce42f23bcd0 100644 GIT binary patch delta 1507 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 XC__jIv6SW_00000NkvXXu0mjf$Tl!5 delta 653 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 diff --git a/Tests/Manual/TableTest/BorderTableTest/Resources/spinner.gif b/Tests/Manual/TableTest/BorderTableTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/ColumnResize/Resources/spinner.gif b/Tests/Manual/TableTest/ColumnResize/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/ColumnSizing2/Resources/spinner.gif b/Tests/Manual/TableTest/ColumnSizing2/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/DragAndDrop/Resources/spinner.gif b/Tests/Manual/TableTest/DragAndDrop/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/DrawRowTest/Resources/spinner.gif b/Tests/Manual/TableTest/DrawRowTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/Editing/Resources/spinner.gif b/Tests/Manual/TableTest/Editing/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/EditingControls/Resources/spinner.gif b/Tests/Manual/TableTest/EditingControls/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/GroupRowTest/Resources/spinner.gif b/Tests/Manual/TableTest/GroupRowTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/HeaderCornerView/Resources/spinner.gif b/Tests/Manual/TableTest/HeaderCornerView/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/OldTest/Resources/spinner.gif b/Tests/Manual/TableTest/OldTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/TableBindings/Resources/spinner.gif b/Tests/Manual/TableTest/TableBindings/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/TableCibTest/Resources/spinner.gif b/Tests/Manual/TableTest/TableCibTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/TableTest/VariableRows/Resources/spinner.gif b/Tests/Manual/TableTest/VariableRows/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/ThemeBrowser/Resources/spinner.gif b/Tests/Manual/ThemeBrowser/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/UndoRedoWithMenuUpdate/Resources/spinner.gif b/Tests/Manual/UndoRedoWithMenuUpdate/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/UserlandNSTest/Resources/spinner.gif b/Tests/Manual/UserlandNSTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/layoutEphemeralSubviewTest/Resources/spinner.gif b/Tests/Manual/layoutEphemeralSubviewTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/performKeyEquivalentTest/Resources/spinner.gif b/Tests/Manual/performKeyEquivalentTest/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/predicateWithFormat/Resources/spinner.gif b/Tests/Manual/predicateWithFormat/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/resignFirstResponder-CPControlTextDidEndEditing/Resources/spinner.gif b/Tests/Manual/resignFirstResponder-CPControlTextDidEndEditing/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tests/Manual/sizeToFitFix/Resources/spinner.gif b/Tests/Manual/sizeToFitFix/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tools/Documentation/logo.png b/Tools/Documentation/logo.png index d370088a7d36fe39f6d2f712a095d78f1d07b701..dc90d875f63d84900e2cd61f0488856793cd54c2 100644 GIT binary patch literal 17840 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 bvXlM~BH!B%qVk{-00000NkvXXu0mjf15K^9 literal 21235 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� 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 diff --git a/Tools/XcodeCapp/xcodecapp-icon-working.png b/Tools/XcodeCapp/xcodecapp-icon-working.png index aeb981ca56e94a5faa68050fa10e75ad8a73ba0a..149ab622c0cbfe2b03bbe84ece7eefc1ad3fa591 100644 GIT binary patch literal 22277 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 TFx?}500000NkvXXu0mjf+gdwB literal 36293 zcmX6^15{=2+r8PwoVIWA)s}JzLK# zaba*sVPSt%1d88nB;bL8Xy?_Dk?_@*w6FbvnC@Z@z36ohB!Q9% zlm(QKlCb}U%}cRlY+kPWPTjulZ8~3iy|i*-K<1=P$7krsdrrUlaegk;G4hav^VUP-vSH^LmuDx#E$$EEq^GXuTfAd84b+91Z_+u!H2N+@=TL30A84 z5ueH=iChTEpPBV{8m#V$|IR5TIfz6%D6cyQyO-CK{$%On!10pV%L)EC4iohgEo?4u zMwMeMc{&g%f@7`7{28r_r{UTa5&B@8 z{-+k>7G||Jd}YOrh>(m@$hmQ^)^5VZ#xf&@&!nVCBf@Y{pbd>1UNoxSboyJmlO^ln zeUp(AM@VhajE9%x)Qft@9~PJz1-;;n+5{);&Y1a{BKUzi&cbF(7?t{`mp3GDBpT-2cNw%zOSD{lb2_RspQ}b^|bHu z9~US5_W5LW-k@?5)_P=Av~a`v2ZT2&*}JAdO4Q3i?yII!>%H}}!R{45^`3AbahBp` zn$v37=%V(jw_im;Xe}XB`lD8Du88Rcd3$Tq1Jijm;eAWpgGxEUxd*GgXRqtRq7iA1X=j;wg9~PI#gz&oiE|ey*sx;pC z1@#M?IApjVqk;->zKicfGLKcm65@MaMMdN^QX_KdVQNt|14(2juJ5JFa;#Fi?|_c@Y2J&>efO9?{)L{qP+{QP#(v>?^^?L zJnlPqdMt^CxhLJn!eNkM$h=Pifve%Mf~K_6Jd{y=*4zPKL9TaaTXSNrJG?b-Xab(Q z-8WmUh^G?7kH;Roak|)z3LiKEKTq6S#_43ssCD6eQT7bTMjGZ^PzuSn7fs1F8JIJl7x0L9^&qHj|$kW%SUh5)w<+GP5 z%Yss+nr2dZ#G)*kRufNhaz093vpDTR#OHbbhi4dAW4- zOHc+Z!gR$DBQ@>SqslT^+hh|qC^o$-N5;U033lG#eIcR7@lU;Vu^CPy{@}OMs4pY* zi7whBHY(#*75EGB*5dQ6s}I?F^J}`I@=I2!s7rDpG8LM@S}VfR_ji?bUG?IDSxfy1 ziJN7I3?G5L?6}?Mty2>R-01)af}rv2*CG$U2}Sj-5MrXuSVo<#IW?8aBDP~Qsp6?d z`e{{_xf-bb{@k^E!xRo(OqfNt)qZbnN&nJRxM>v?X@O41|@77H`O? z1aJlihMny5I^oV-v=ms(vurQ=ZRH+G4yLh6zf2f1xLz+xMjFWjumpP0*QPGutAQM{X)^C{>H@Npi&lW`*MV#vw-+8d10chn|3>RlHSoBo)HmZhydV3)73#T2Z`3j%{E?GM{gP4B^jH0TUNN6V3~42rVw zW-?CS%C`CFJ91<9_7px)d@WTZXnLmPh|vGo7W@Ru0Y7&rzHER62_kzSb~`6N63j0w z7=6@QJP>m__ZHkvcd+#SVrJdjvG}O@c{`<{vuN*GLP-?o71U!b-*K4f9Xm=?lQ4YK zfitjdmSmpRopU+-qE&O-lCyM~u9W-2Y}d98O>WHo)QaXDhPqi_yzW6KQ~KZ48gjy` zsJ5NFO6}W+{cd{(xi;T|2v7^kyShlo+>ST9!>|7rDOO(s*z6-2LVb#8iG( z=9*(C$By!nTKr`1-%dqL!Y@83OWev%nz1)2Hx!Fxn~U;OJ&rA9VclVA(7eBATs8JV z7$?mwXxm^ZZLh5Xu>8CpsP}_cx!yxGR19*ySKqof)Im7ktR|)KIqe3fa(HKFX9KFM z84!_>3Q9|dpX5bEASx;=XXodG4-d@=oF|ym`Mfy(I4x;o#yamQ2y`0GHE9UvW(w0h z!ojvm2F`x{l+P5OcCN}3qPkdB4ldY2wg04aUXKM-DeC;Du+ zM&j42qlyH_nF;=TF3czhnc`7=zFn+agi>}y?5_P1wzSa>1**H5d5gj4G~Q@)U2gb+ zp1T4+x<46|LMF)phv-5ClRWaSUMqH z;`sirn$gNphiYFZWGf>`g=%u%_hZ9Ce@S!iBX;6Vty10SVzm+HgxT-IJKKHJGn~D6 zk%_gs`~J@$Az_$ImI|X31}4sd-G9aWXUbbe{#Ld9M-lls?tJ_Ptg*h*3{6HS6(?W) zuKI{;`i)e?I=AEugNcx1uLB4!&ZuwF72Ye}*<;wJ5NU2dpN0i??fqWy8#-`3R71(7 zxbEjw9H+RCKq)?qR=@sGb>D0b1{5oDKkCv7N^8joEu1RL#jtR^DMAu{*$Q@CG&wG% zRUmDv_y|7o9qJZnfg|oaruJfE||@hj%Ld1A{;m;JU~v@$^|A9l`D z?m&#e^TIqsG9sd(hX>BZ z#l`W-NpF|WD-#pbwx_K5P%@2*!;XZ4S2?M6)%$U74a0h?*X^-0A9_f5zW$w$H!VRw zW7VnGiQsohY-0kJkI$v78<#Dx4r`aOar~{;LyMYh-@ngJ7CPP^lbl;Nf4#LO)YPyJ zCo+OOZx4;uTO7j&jl;!@V8i+qF`??{L=wp@GojVg62=eWM@{3Ui{oV}9iOg^I&OyW zm+Q}*b9;9d#wo!DNzo%LZ|I&25ZJ4D}`zW&>tUvN0l&R7_Xq12+cr(Hg z^uzzSsA=AIi(bS^Wxsr?30s=Tb~3(;(QupmJW=pFt%wvSMWfSgL5=#tDDLCK2V@vp z)F3Ky*w^v88xc_wQV7+G3Os=fS?EzybP*Ae1Z0m|(c@Ar3c# zUrbIrD%jgmY^t8~u(r7D?jln7JXSPL5biOaV+&8DTbjhaA%!;+k?T!lYAzGC<4yyB zBBSV5_vL9lWozZCLKj&DX5SzD(4fiI)9D8K%Ac)wEpw*Q0V2zWX!g zB86(%^5wvz>2_q9NOQuSZ$yHsx`g7`#%k;_l`kkece6AMJ`)+9$`5_@{0XZcKiA&c zFWbg%Sh29Mo_b*T{r6&dr(mZfNYNw{RTsG;kVstC;2_10 zNFlGk+Htq|C(`>Lr<9|OV$H(K?{vPrkAEK+a=)x1z z)y3b?*tnDHb=liwyM`E1CNpxgH@tVsnD<#nF7-C4lgdcolUR(x9la^z7cNc~yF6Ab zCHf5(26?Z(h=k53o5{j4G~?zvFV_*$$k~~d|7`~a-w2KqwM3cb?(QzXvJxREC`htc zdBl_@)MfI(NwRbqut%(h&g89e_@go5Fp|D-~b zB+{a7ZEZE*k8DdVGsX9Y<+f)_wO$liEsq7Fr=drY;@5>Vby0P4duWR0v|n0Ito@ef zw-UHdYW&_Si{zdX;=Cb~DCLBKG!ZU{M+yd#!pFx4hk(FE^+%^TWs;DW7q8pJYDjOd zP?n0g66XB;e12miR^Hn_m6C>r#oxAyipbJDUpx^QT7~C3vn@~8yC12XP2VF_V)KQ! zqIVu_xx8GYW$=$W&+6>tR2oyhX{-v8OQAEg?xRm+b7Q!=x+-F}Ptzqx8d_SGnS!(_ z3~5vPfLb-PxoPJ-F;W+OdTJ$`!2(76ek_4>LK`Z0+4-pdyX4Qh$rn?JJgbu;AA~8P zXF<~+a1HT5&sf2t`|4+i&+P{e36ye(ZU+Nzfh~Rkr_Q*JCF%tgE2iN*xp-?|u^F_p?(@ z@u|2Qx7*6(ZXzG{BuH&GtnqP(Liv#1p4>F%2na6UH~584Y6Iy4x|_<{VlrJ=yJV(f zCc12=zV^fkyw3whzgnNBrY7w1RC?z|xUjIWgh}iW1!_!TGcyW2JiM9ZTUeISSRmsM7Z z=;;yCe*1<7A0nGOqevYLfQ8jn?Pz>X$iu{lFe1<%SJCT4%6;{?v)*m_N#;O*w{T&^TBgQ=nLfQcSSc(L!s&7 zt+XN98ol;K^(j>ql_1vX?-*)oYU0rjgOONIhn(FJ_h(D^&-n`r3uP4*fpp^m3)8>_ zFq;hJ7Z(GqD(k<3`_lGy{P*{FN)m8EI_&-xi@X@%;*x%5j+*|q+u-?Kg7zKTgGSeA zk=rEBbw|Bcm7zD6I4SHtTZj{(xfS4Lq_S_-6*f9c5brLJw7nL~-$S<@6IA=AG^~E$ z^k>2K|Evz7>iFh4jgqJ5JdA`=lfi5jd)g?(weiJM^5=V}AD{KJkvSLkL$3GV(XyHv z04;Fn&zXdCt~)^3wO?=$eD|37PanGWQ#9gBjQGELCQ6EyL{D8&mRV9zRW)hOc$zy; zA(Og1KbNNe6ArI3o!4531GYPH&iuqh0wGp_^?5uiSIhb6-&gBBxcc3NqCa z2VfvgY4-ncHVWSzDv`%F*!RbEXOGABt(b2$9q1-Q(E)|j)jiHHIpH&Z{seBcyRZFM zf;=)cB|pEkl-2cZoP|;@GuUx&Xs0Itf)ZrE)kRpJW#!$7m4%6hw5VF7v5Vl{UoVyWLCm zC3PmhPn#T{&+Q~<@2|upT1#8u0pl83qux!Y4IgXXhv6^YZ;^})9@o7vv+L{8w^O_* zN4Z`MKwBONLyh^k^|I860moEb2E0`Vq|6#H54e z7mLg1oqB8XL?*WNxZID}ng14XJA-bzjw8M7bD=o|$c?wDww}i`dkgf}eQ)jmMZ?Kl zX;DcDv}o|ojuEgX|8Nqo`{e-fr6%XS$Y+zobjla~`Xi0U&uP`VCi>>@h)&CP8UBkm zNtz~DIXOAvz13aErSdtE4qP?}8kU*n9o1`=_2!d(u1k7h3zZssOWhyrzCbAM^uiDi zP^9SwMlrO(va_?tlaH!zTQ}l@<#%-vZES2*8^r_!fRVj@HQ)G`$Z-N6EhqJ!_GdRh z{f!Ff1$%YI;#6aCUoiu@e=PM|zl62jbbfXq(9_fZn{`i5Pf4WE(IX&-VhN*4N+{1) z8xgv@--~I|e2iu{zcIY+ZW;(&@6nw9ma1vt?xuv^^Ep1{#mr^;NZINB{l{%BEZCYhLq{4Otzo$-egYVKkhTsl7z;)~{aj(NR-*|F zVP8{`rVx$Gx32pwjZU^~oB@P5TZ1-PY8w~Rt z8a*No|C=rrhD^wU-N|4!6i0k@4AmGI9*!CzIx{olZ#JH~Gk~EmFqZP|1~_h4w_o;E zs8u=)Vrk@;m%}}7dNFd?t_A~;9r=raH*+eT7Py!a;_tKJ>R-P^4Gi*%?ix~s55ABZ z0l2xz!^FaZDxE!(!%^R=|L~~DMo9}cbrCUD&Yg>!yvoP>u`o0gdLoMx1xUtlQBnYE z0uNwR8)B6rNB6j|=~Ow)Q|X>&5(sv6zwQ3qDK6OY{r)(zIC!>LCBl%_pU!N;bbxs= z<9XHf>osAa+uj%^3|z-Wg~~sxXMZ<lA*7|EPF(oFPD;4!m+woBV!*V_ECl&m_b30!Sh*6-RRM1L4tK+{r zQ8_HT5$~i%+9;^bz5r^S#k>FB^(d0i!g#jRfOvn?QR4i_1M-)_DEuV!p;Gk)V zJ?eMPe9N2Rx!cnNa%#<1LMy1C9g4;^0Wa)278|APVi;$krKM$Z+!gh{i82^Sq>ynK zCUiI4>hfv1U(}I{v+fT?TK;VW0qg`%w$H-~FwK^Xy^oDa-#t963XV)jQYHg3IOF|#?biM zsZ*qlJUo^qy}2B=LD-Tp+RjPWvhdT!hGkR@4>hj}tL^TL^8C-HOsv4T5sDN?rDIMf z6t~va@bcwX6GQuQV97L3IyqgJo!%LUtjYxNs32!Br4 zFvWyeG6sO_NgVy}D?KzcG(Z~|4qWcuaM7YW$8y_`O1QNTN-lpLAmcwDrLX^!S@JbO z(mw;3?xR6IW@g1`Tem7SuJNb|Ut7P>YX=hp^vb`<3&{@eY&sI_+YHdXU3hHk;O-Se zlYGiGPIXKo0f@%2#*!c@IL9`xwp1F(5_D#5zLGfJbkvrmFlAo@MESiHv)s|-+)IDS%#pX zn;D$ub8N)<0!6gb}aHfKq0_k_S_2PKt|ikK{6l zDHc#sVQFtajKJ98Z^MD0rZ&62%#tjL6f$U1`bWx)i5pf-37|BXxVS8LJv?_pzC;gJ zFbaz)DeCFPc*v*AcXLG_bVgcYF|)E{MDHYz9yragAp!IZhni{w#zseeTX5u{F~E_G zr!fvQ`aR1Gn_dHFUszLv0;~un<2SSw0(NzYxcf|i!m!Wg&+e=_zNC_Mm{T`2-Z3Ki-XE4m-tm*1Dva+nZo|@Gyn^* z2gDChCb(YD>zRH2Mt5z!9}Ke&)Cjyx*qdj29Ukx&%^oAxx-q7W7XT-J<3RubXlOW$ z_!^|>*fYKEomz_{s4*4?4|~fN;vGv?OfhB-cs+0w6chjk%%Vm6B7d=N8~`fI_I?JG z{}s@7p4N}}!;%#ER}`Pqaak>>KjkQsI2PE@BY-fuLvqo8oEoC;_*lN}&U2f> zO}m5->z_l9c*~qHuNSW}^Yar(93=+^dEo+7a;ZOgqoEqaUWXnx@zdRJOBH^e(_u+< z1Y#N*UqZveW)~MjZ8)Nwr?_F}sHV@~`^ns88EN=A{#Y;n{rMj}%(#prgyMo|`wa(9 zxhxBt`KBNzD_Mdhz#qU9ziq?Zq||srsZdQUy0i-u+lD&&59jVQSpyoRMOc<-)QjhDO*2V-|8YGWzf`HJ@_|()>nkt6~Htvg~MtX z_^{Wl{MwryXY7uytZsu}()Xfovfql8r8KEWc=rVXBl8F|aZ1MQ#*)6?={f;dLtI_! zFH;}Ne<^Zy#>(LjkQV^_5hV=}i^48wYGbaym|U{eueMK3OVNZls@{}dx1h;?M&#?gm08Yx~i-LqinB2lQtl$^xE5Fazn}r%*EC6EwJV;r2d9T6;i$Kv7n}FlE%1JfBc|>#mCa2;itm$;JoJx8-+JAAM6DXHdY!t^AfAQrK8PvR z*jx!GXJZ^-+5P5(A-kXY{^G4m(VWd;i|%fRLhOFM zEkwZM0t;etK9tRNTm8WWOfv~P0WqBGAA=dTFpmUiuG_iqyb&3m=gYN}GbblT0Fm*% z)R&`R%^HLnBmPeZ0TBLPi)iq)&!sch*{^zsar$P%%k|c>vN9%M4j$cCC+Pxc<0iIF zfPoV+iFtV$Gr&gSd-qe}_qep!)O9ktZGyl*S^n1qma6p(&Ho{tE1xSb$LE7IvVI8s zn)ZV_Pkq^A(9G6ST*~8y8{+0+kx?XPDrVdpXLB+&3tl0{t{p7cs8pe!f z>nk_7Pf$@E7(N!%WAazDa=|)Yx9j65)4u&xL3S&G6Gi}m4?Wj}Jn;VdX!7~-4wU0iDIUTI7Z+gu1h6hr zg)g5g!|&TTTmY;s*IUG`geH*x|CD z&g-YWIDDgMDm0dvp&DQ1)geh}r9G-vlj@oNa)KoU!YP^dF4V zWeD^59t+S3p1&H7-DZ!K&atpbmJloaWMq;5ISq^0^M6`RUzRSu z{Wv|IL*h4XT;5~}vv*WbyoVsIuTuTbm52y0XVuVT@`Z|)U9RY{^U8Ffc$74gtJgK$1h)cRf@71D#x4;V&;gB@=^z;UhUw zukZ)nW!I}6my$P~P7@-YwafO*=IoRrMKsixy(46&Do7HZ`Cz&>0%8=6d|Q{FK{4I@ zukE-d7Be#S7SkN%r4<#%2V*IKT$w~OfHv^41^{M&<`2VA_>Kl3Cx8a%iN%2CdNuc@YAVxufz^9^D!j)CuHX}&qFNSWl zm3G;PS$z4(_Okn24al-+?p%P#>tR#eeCY4NxR5C2JzIwCF8mu=-H^Q% z{K!-qry8$QGSLEfM}VS1L`2L7m_(qP1ynZzplC_g8R^eS!-=a_>P;_-FO$Jpvvm>6 zi)zp}96<7Gk8+A0w-qk(Q+g9%dgXhYe1S9bP>jP?yG_V-|F7#vnX>+Lhc~XqPOe&~ z$tFWiY@^wpxa+Q%5trT9_c`yUgD((A%WbaTfKy`fda(Idhk2*0Fpy3pa@>0gpBe3(Sp!@OZ5*Xh6fG(?o*U#) zPtDoROdZ^JZy#=d?X_Z`J8M3-+H@JdZCt0cV*>>CFmwy+6c+^NhD%cKpLg|GfWq+J zK`{8e01n<042N-De5K!_K)Sp2_WVGT>wL;~b=lQzh>+=>8@J|s1K|~aZ}?ul#ID(; zq7}!v`AAPN&GQ3kIbZqtWncM~3@@9?6gA{`tStBATQuvnbz*!7{zk}LEGxR|q#eq7 z%;ciq~YS>KlE zNVY4I@2@#!#T^++A@#bYWO}`za*!;@Ic>)p<8bzh&>hLi@u|lsQKs0+&7|(0wDhj< z%587`Yna_1GpIpp$3ghj76teyhTFP%JU*Hu(vc z-sd>=My^L(-Zw3_hPwUT9x3I3ojzO@LkR{VaMp8G;crTCt?Xu!2E;V*kw1484$T6V7LREiGSlDi)th(aC;72)55WTSmuyG?_@L1wO3}|RM;a>bT4(D zGj>be@z!iTj~=lKX^TLi8dnm1Y(;EzUSLsmTfBwV_*_^6GzTE*jHXK$J1ptB8;vGX zJPk7X8r>SF@&bdeFF*xsM+4EW=e}Xa%YgP3FJ`xh_?&(UFnVJ#nUVA&kVO~t# z^I=2RcGtTHm|`H9lLQ7#0V<>NSS}FP!GJr(md|PTr6iFR*UqAj{a}e)mbY!cR=xSo zyo$o$LeWqW_m8;}qvxe5E?u-L z`R=!&Ey|8oi>UAD{=A8vkItGfH=v zMp_>sFw!9fv8QlUGAqG`AUItGR<~m3cJ@v}!_wBKV~1hCZ#%{AePO3r;N^GyBYP2a z3KYBJg&N)_BI?3ZyrkRvqM#x5rO>DHeg}-3qA<c95$E>tK2<07|1L(8k_L}`xXp-%L4(Oj+=#Fu!@u7$elKgX`CkvaZrt;PCw}#&5 zu>}H+-5LCq$yu&R4*Df9DL3(`hDuKv&H6@lB#&P|^fU~@DjC{*F@h4fW|-U;D%Ac- z{I-}_WZdLZeT8CCzin1nROK&MhYi~v6WS@uk-wMwYKJa$rqnw+f^IP=CS1AAyR%Ty zJ^|0<$6mUaOA&SSa$l%|I6-arNFv29%47Ua{MTNzGsMVUi$ZA?c4nhtXP1pt7@qDa zJYgX>f$p#aX#Spd&k6%?fssI3HCGz3!qcO4_IHo_bykLrDMOd5@X2RjJ~&=JzLOk& zd%pdr)fJvBKk-A)-PU|(tG$@vhewZqWog#WvYxSo@%E;~+;$bPow(B04G9gNXy*?( z%PgJqQ|Z;5qcF^UR=m<0ie37=FQ=$1Nd)!p!bO#C?@mVksYM-$9*tSZ5W$$zz293> zKm20}`F*rQ=Ct%UZGE>?8&V4VMkS*YBx`2F1g#j$OYieCdUR>LNWH=D_Hb6y9SewB zqucE?uED}zCvy4lsj?lw%_lQMmIq>eCJ<+_5$nQ($V;CNbRi?qNw&W$2|7R&-=Exp zdznFS41JwzAlW!ch*q%GTkQJlijZl`K(P+1|ek_}9?up(x2sPqc+4{tKCh>gnD;p_v1pUuyMm`k{R>M=V$AL1|e5fe$I<@dp)=RBDMKIHoUMsZV-#oi)t0ETwjG;aACCh zD}oy}yZV&ugB`ux73G77S;v#>gZ)%HcXTwR`P&AC6@xXXAYt8of{l|OztMMzNc^MT za3&KePGP;%uU*yY$o!^NGq17HEa!d&lV4JPdcp|e?o{%^RUZSDp8j*$i3!8-S0@^M zPR;$28I;J?3u4y-SBCF-c9A%g0DR=-tgr$n_*!*09Z4ophGRjnn>MnCwSzpbNW*0l4+M*=0wby488%0+}xW4%}VEEGSWKs0{0xEH= z$Ygo1UZrpKA_@O7$%`2(iXbXq`8tk&Ui(swHo2q&Hh-I5d9|T{Lgug!Z$J#44-3Sk zm!eNPowB9}qk7bZg|1xlQuALz@@0<_&0wt7lEtONDAsH)NL`IoQPVIj%>FR)7E6S+ zoOIB33(^-mQ>Xp&Lwbes&(@t{+dQcf3~9i&3uwvpnG2C*Q zjvnw7w2`>&f#xm5GlO_Cj*Y|~=Ub=Scp@p>zCd$oHeB<1R&aH--u2j#ompT?8_?U^ zTeS31H9z>No=ePCr#simRbqPL3Wy z4&3X(W#yF@Jdq5g=?NI=iy&qwk0B0DR#etR70NyQ&te@F=C3VPrOiRu{wk2AE7VlI zA>!aTQJG-)x#fjRzpjy4GgJ9)d!dee3}0mYY(J+`V|W?mEb6|N+Qb1jl*F2jz=xXC z^)enZ^jjxJr(Bxz283UvMkO55gp=3eZK2ET`lg0bO8qm|zay;6o&7=Leis7?V<7su~#6Da*d%(&Q>q3p@GR+rvncbA`KCVpU zUzjQt=wi~pCdGjSm?&ZtQ*bCy*@RRIfAA+ezBee_4(ORqRWR%B*o;-q^@;}CFR6}> zn7+i$t`A}Fq48oJOcNyGSBhxs-5(x>@i*_3$BrwDq;s@oi%XOjdGZityHfIT`XX=b zVqQ&{gwW9)LiJ#QM1|M;$A-m`V+)LN!r=|45q|x#71blvzB52S7Y|3DD`8mElha?p zJ~uQvd({8RuEC0v(Zcpv?$y@C?vWm+K*eO_5)p&kti+4VC@(-5C&wM~Fv?P6+AC!# zGuJ>F7oMx+rrByt>aLWSZiPC!>##8WQ||;_DUiK!5)X_LQ&qhd_79#wZTjyLKGEyk z%pOa(Up&kG!Lsg?FnO;RJr*#$%mQiR{l|as31_X&Gu`k$xSZi^H3~a~ZRm06##h>Y zR+$!(YsXQBk$;yVjqE#n`Jr7dNKTBRG?Q$2HDW)Tj)YoZVZmo;=r?F#(B=1(=z$VD zNy+T%BK2__U18qAbK~*z=PBu?mX^jg+P!qU3v3JThd!*z?|3!yib}(;R8zaVbRVNl z_dk8K&}Y>zuM&3+5qy*O#L^*HK)*aigve@|&d~V3)c8$jzCsJkc`>=$6rwmoZ6)kc zKXxh$ysE1=6IUr&ExgU*6i}~b#r8U@U~ey^av#T={=#HurnKg&LS3R9|7m6d)cyZz~K5kuLZ!&(pO3h9&sX z)9gr+C0aSRlWqE_gA|+qek5sNJ@a#1*@{V~6{YkDBX(!I+Z*GvAoxd!Cj=vpSmX{f z%q9+u1$=Ltn-Lhj7KdK~X2o{8Y16SgcyTn=F`}+Or)r?l28e=Vt$4Svw9srU#EZp7 z3cZkWQ7<^klfzs=6>ZyQW+q`L0&9 z*5QpJ`(%Hg)VJM{-AYqKidWr-ijpTMV(z9bX4RRu>bMPQA`!aO*}V&jFkmx#(s>J@ zf`6zY@Ba=DVuI;|l2xY^4s_pa{errE>mJ{rARsmqWn1gWa#0Ar*MT#Pog^(9pKwsl zoCKFc-jSBZ2@a{HS-+@^OG?(56mxIa1ubI8f@`-dET)Ys=#tLgbk0RCEf{2+9Zl;~ z*J3v)VPQ&%S@xD8=9-%Q$5l2l9#U$IiF0zcp11<9bwf%AMVjQI@m1&9eAKK!=SzB? zsUt6n7buUg=kSoyB+nY^%`^DjsizeZ$zP8H<*YTc^siC6FscpYoGUS<=a_4~OgzG; zNmA@V9cg;>bkJ?zz*LHCNmW41=RhJ2p!KMNBDh_89S$pI3x;fb5zXx!VB2HMG#qN1 zL*cG%l$e7l$YsO1sS2N*ce@9OIC4^QzC@}-K{o{}q=Sj611v3CjA)LUnwx&Z{_j6p znyC693peQBC%kl`LCg62zPh7L)(sQ5wZo0SdCRgnaMnV5+_q02)dkQXKt0-M%8S}^ z*y@BqF=sT@=;;4t`^ZI=Q%}6yg#5zQGwk`!DUKE__5?fTkiU~?P5WOxF4i#5(vRB9 znHGHOJ8ow%B#W9gp@D=YoVy|vLz7@7Z)TcIGT{j82+TuoI_h21hUQk3)uJjQZG$nxcQeNNKE zb|^)wSe}lQFl}Dq5VSy|oo_m62%V%XsZKSO4rL1cS9r>L=wZ{T^u>29-MlpA7j?a&RT7Eit(!R5Q%l7@(G!oPJe%L_S;j&z$Jn6X;q7q5Bi_ z+4BF6exn0)g#kx|qYYS8(tme<>Gt!$0wlrnxiuQUbdim-gu~X+k&%bBmKQ)9Q54ch z2a_cgR*;6ViK%NQk|TlGVj{H2%wt$u8@yZE>DTAhv~<6N$Rpqh{V4$J@B9*nGn;OK zSRa}#U=Yp53-hzKcsmABK*b2>I5gn8J}Ix`=&QZ9QLeLeRyQz z)JV}HJFf{69F0RCvKA)1xnFrfRRY|fz*FryQMT#mQ6jb`qoy(}Z1*4shI%oDx{@{2FZcGPFJ{om)IV9JqU%q^sxv&Wx8m+w63Ki*03 z+0d-0t`>K7ZPW#1SqHfoWq=R^yhMuBkXorTTO~L!tNNr&wF1ed z%Brf5A|;Dc*V*OdtuogEh0vkpf6n@{vU~?ID8PCqMv4Z^Ad<=-UgRyu87s&7*?_-& z(mY|(yuh60pRJ-;d1!iBWi_LhTnf<~Dbw`o!m!He5q>lPit4|hwBa!{)fGW6n@eJJ zzJ2gND;-2Drg6W^+j4E0y;;~}YftvU?-6v|@G1GoqUDy+M1s!e(&TO)?*X{DN}#NZ!s z1^`^Hs;G6te)SJ0;9bbX{Lui5`_Bms_)h_T6Hq0@0sp^oZMvh)`_KClPM#-#=)6gi zrA&|{kC!AT0c`irLDrc+*8BQHOyW(v*qh3ds);BWQCQc~P(ky}#?3TItJs|8Nu3gQ zzPcD2P;0jEPRrbPlbfS(pr(zMa=I~XoM|&jQRXfQYCt}x>Lf6&_u(l@p z168xFYcyJ*v2(T^o3hrId-eI-g3TuX8>l=kQKE22xuop+EK%M>*w?(8(o8(u0!3JW zub#EU1kCVdRaIhu`Ps_KN)ceK0Vk^i7b0mN;C@&n{xvyLM-VdloKiYc6TSFjlrt{D z+NuJ$pnPihe{NmCxdYe`+1S|f0a@nXI+T?OQe(1638VR!tB!%TuCIUJXq_FAOMwf~ zmL2}K7ZwC1r(A1|JL9m%tYrsM46UM(NXGKg;>Tjw;T0CHnEh#ix*b~}ww0d`K9H96 zMc0`WkC?)%4K6ya#oQQX3ZsdhfWpqVaMRK@;VO*nDanmSPObu1%ZVr5!88SfD6<>d zNf_fAt@L0CZwRb9E{MQ7XVywZDvhBV2beG5rVPNFD=H@!1D38y2d$OL{QY~hW&^2A z;x?LjAh}FgxVker!CbPXD)`?{WNTnS3=HCc+mZk#9UAZoSz1~O0^Bi}s1M+iHiiG^ z2Nne$--$T?%d4mudW|ehSJQTyCEpBG5(s!fYD}8oSFH8VF=EtSLh{7!(+0hK(}koi*#Yg7MIe#o*=2i|XIigfZ|WGhA-=qb;JzKK2R-Ef{maO3j8RMu%Nr zp0K0HMg=EG6@dyj%!OS&AKE0RYGo|~cn@_wVBAS+qg28@4(N#W9vd@#_-o08YGG! zz^U}M!vHYokXCiB*rlElw6o&EA?+iM|1riEE+s=Lcz>OuvveUPR7GPo z<~w1^oTkGnouHUYB-4}C;`I7>CcyTSbtK~3FiOe z(GPm*ll}t|Pb$#?(2$wx;pTbr@A4F>O~EtOR!@$aKU!jFERdJU-*lL1@qY(Jwb$Qt zh{f@+>I4>qG)fphVzbcL9xCEx6yCj@4LP=Y5V71?g-7ffQ`f-ipjW<*TW#2`iUsre zi#a6FkcqFO4bWv7TlQt9s&{zSy;!X1Cey&HC&?`De@E{uHQnzEEjlL5FcXTWC`Qe8 zH)!BigJL!LgZr)<*+3U4WcCzFdz>e` zjHWPzyTyvk=^pTg(E9h?N!&=yj73c50tVU+$t7t*;}OPoBg1<7O(#)EzjkLvPEXDp z2M=KO_V&wiG+V$425)mXN|G2iS*+F)wlsB6^v*E!O_guNkUVS35|NDWC-pD(4qo}A zl@}%?g_8%sgSj;W=IDgUgPzP#M=JM9QW9w}N1+{}88Ktk;aAzJWQT zdhpzvj%q1ctR{iaO*mE9$XdQ|MX)h3K$FXAIRIgJ?9zlj34F~s)l}}*kdI`7Y?qrN zf@B;XLn`+Vd5ZK`qByb~Ic3VML|Ti>@rnwdy(f~x`P3+o_wVuCPp&_y@cti5=Nw%} z7w+NMwr$&KY}-DuZ8U1oxUth1jn&vzV>fPW>&|!Y%^z7gYbBX=X3oss@7~Yzd)a*D zJ`IWpIXDSaY?d4BU@{dEDnMIvx7zW;WB(YOy3)`hsdNAQU^5@P<47^=O#}6}Bu1>- zGjv-`m$)ihT5I5o_r`5~M#E8Ljiq7QpuF?%zZfWFNX{A2?a?hcMf>r<|86e1gMR>H z%!Uwiz=NdiY~9&G2d9urq+Z31dR7&~0ic;ET38#lt+M^$&OGAE08fCvM+J6D?Zg7_ z)x#v*!YPyBu%y7z&1~9Ctd`;#t^lqCpohe2);V@61eRTJanXC*$o z@OljKDmj9EWR0?TW4@RszLZD=zoWV?Z|O`O8giWg=a74y(yhDV1v7mCE5tnT(LmYzL~}=cMG3ku7xl~Sybjxb4HEEI+chNMng5ZN4T=aXoI>76jWoa zpTGZHtg$>7O5|>|m~UMJ>wK4)SR1eszc(Dm>4$%^$_`fGsc5&__!}oKE^c8Z1J>MO zE$>WJg~Fp4(O{kn#DPD!=j!3@{j;nL_W$uZmqq)qu)?i>s*bfB8-jSsr5Jd4M7`Vg zvK;CS;*U{;Tn2XV_eD?*51NgKW9*p$$mU*Y^`3h`0A7FklMh6x0+TA8_8VEisL_Sc6XqT z=MLg2g3?pxl1rv$n44GAy;66-&A9rC8ws#=j!=8RW~O~e{qNrd{*M>jokf%1v-G}k zyi2?n0+?P%VI{wv&<>i6g~Um3UpWRqAz`%x7}S55GEwqOoL1b^4luy~ch(|2Vf|k_ z7-07Tlb)_b>5>SNH8!KOG#S1E;FKcGZQ6R#lA2m<4NNv9c1i;?f7;%w2lc`{#1%du`-z^2%5k?QC3`8_@xG| za^w$+#XBDjtic+8okmZzc|?3gRddNj4w(Ok!&lYp2&G&ihUejT1y3 z&cIk#xIzSz&m0YPRrcH|2h13*11cPQI8XDT4~Rnp^Ed>r-_#?jlX>6x)k46-f8xm^ z|6XZUo>{3ECKO8s!BFL^L-HQs7L1YuKn+2C7cg#79x&s?k`tj&62uh&R~VS2;gOIG zcc1OGJMd6KhE&?B&g1X9F}SS~{ZNhMXs7ZdnzlavC$|qwQX&bm03v$~gd}R^MlWAB zKWf!T20$+by(~4RT(vF3ft#MZbxLtP0(ZKEvx&1yRx8^6l?uim*uOGF|<`_GuP^!NsU4P{h)U|nlJR+0jkwMpyi2L^Vj#N=bP+-6f4xn>lbXcL4mH#<}r>7Ds zDyRT~_}{LCD%JF)qCWX_nudEKHZ(W4XChUm7PCTq3?2+DjGBQ??C%qHI|)a3=?fv2 zQiXMZi3E_9(FLPbMIPowZC*8j>|zHVrBy>1fNi|E&)sJ;K?%xuf&XX9t}&q*DnXN~ z&a`3Gr_3nN#UcPERq}n6N(#EqDk<5|$Z@XELJ~z5&B&qj(mM25V7vicNew9!+SDOg zZn(uXiHZWW+7IU>pE3_VZMB#YzBw*y@@G$^6l4sC<>kQl4X@Ybmvy;ke>Jah$roCc zMqf2P{&o*r8hX4Sck%CbkFGq~u25NJlA{WNz`f(4)dW;C0I6>SxU4Jn7J$y-z~@Af zBx_93rJkCEJ>=1#O84ESIOe&RsNLxXS5QE}<=-qhutWfy zg0O5Fb%!NoS#_960xY`nTF1i}n`VJF$Iw4~ucj=(BZE7x;+NldfnT=f4J^%dl}`G^ zRB{|48G!06tB6FcAqU_%fbdVw;i>hl6CxShxX5ZR}+xpaHhIZm3oRI7Gi~5js#S281-+#r6V&Ql4QPFlGL)EC3`98%M|g>L);F0*V1Hf{4mWfYb&iMZC!q)Nrc_;&z0_u^08$4Qm4`^P3>R6);Sy|i<#&^Ybh4B5G{lF%`QbU>TJ~qs>eU>_VjUSWt$R-csODrzwKQx z$tx!}TzPw|z%DLw7x+DV`BhmtV;4BJV@`wYP+{-2ocYn(o-CpA7BBr1z}6Fs->eFc zGS)EQ5M~&4>M$`Y#Ku7y4IG{!djsf}eCRTPN|>ll&e02sqXf2|ei2bYPF>XsuvS2& zMb55KfrSxG!M1nJXFmUE)tK3&X_Au2vC37UkCUlLuxf}yP93f(5a+=FO&?CKEoa{E zCf6@-l^*%nKkNjuZNEx6F*V0b$r$=zbG^_vj}$KsQHqy`jZLf>WBM@F6k?Ke|GRmI zRzp;V@w-4dKbdZc^;C;x8wWktCKTeirA1gBalD#zm8< z{&1tkY5iaF1uQU((K#(iQ2I4|^^}+utEglERt(f&Gi$#(ARka4u>sR6HGT^do?JP( zV@37xLk=tynZ($k0(PCxbM223D*Jb(`Nc;4!vkYf9h+laAfhNnjZ|(epU7K$e)y8i ziFoN(R|y?a#Mh3OeMxzT%aX5dqd!-YQSF?qCm*(zj2U2^ztzZnD;UA#*Kw%NyvVN^ z8ZJUtn8qxvs@cI4XoMGp7I}*x2P^pXn?Cm}2|G00Ex~LMyQ5<+%t@YWWI#ge-OjIo znplLdIoRcDlNsRefkzFn3ZiA4t5gPxtGSc?Ub-jfj+ax!2Ynh12h?YP;T_pn3J_r@ zD^r>Ky)JawN@@U|Y=?b2UnNEnTFOqPC$2rE>M*SQrPGK~n5Sai|KAzjI$J z(!Gv*0X13GBKE-&;&?w?RUlVdh(rds=MKIHu4)R}(^Vcyc`ve)qNpHDVfg#v!R05Is82P;HIo6UZcOSl(TKB<(Vq-3bwH zswQnbF$#3TXe!5!DU>d0j*5uOh94&y!$5PqdgXVkvEnPExDN~3B#}H1{jL~rN_G4? zShvQBRWrQfli=S&&mJ*cuEyB;pM5(%o~07f(r&_$C3X{7kn0=Z(DHt&bgGGBy$DxCJpKW4>^5>PemK#Fr=Cl2JR`HuoR zy1PUI_(kGA^Qa39HII{rg3;H(bZVX?Ir#R^?l} zvCj5Fyb!s6>ruS)q!?J2&(o4F<06kVjA>GEu`Ljulb*z*48I=iEPx>o!P1)~I#{VG zmudVuVrEG;em4zVu*m#_pfCRpi@?=vM-sVr>M*xaWUoD46>kQ z;w?~dV1dACwD8E#&s8Zcl25wO<9da9ogdE8`i{u&N`!G%A9XI;o#0q@^o1LQlRuN6JNddkWkj|+*gn!t#E`1weF@&dY+ zu+W!k!5~21Ik7&QK%w1pqu{2humi@reggZZTW9uhtHwR^`q7_{flq@axStQrN0M#^ zk?j=PAUF_^B}0z>Ly5U}Y<7I~>sk+!b=<7j)DO-Pi2H85dHNTd!B7)>Z7^W{QhZbv z&DH+kw877M6~;8m0W8$G;8S1iTg^aV#?iqyDlj`1*u-!fsz}?ELzE?J+y!J5REpT| zLR?(?L~~#L5wUs_sfEBQ5*!Xb;ygX)m4T%oz*>1WeNW3IFX>LOlxy((8)~%;TA_{} z&C;mSV33d4cNfpo&EOIyO(jzR)#WRwi|Hq8{=Fx6@~_YHh^|{H znk(xC*lHdu0Ts_wMdII8H{iXVhzsOKmfHRhVJ!q!_KrQW{v6*mKAQNtox=t-2dN@u zW@-#dsW499rD=4CM!apb;GWWxBoIE7 zpvZ2vQ$|YXEa8{2b|0Xl%kr-3bc^99D2o=FZkzrAv~a7vSP%@E<&F>2?>SvCph-qjg6oZuNmo0F?Y!`WEUv%KrY?s8ge{gPXNTI7{jX?CJpa%K!~Sf8u`B_aD3K)pJ?I6e;yezdt?)gc7&2R1 zI-q66<4jb_INQ^vUj|#%6&{C=6M$pbJ|idI zR90$_{!T-fgeIu)?MUJZ%h9E+OQwTOE{0&E-fPo-RoBsb@2C2`d=GdAfXl0a6V|iq<6kJ_j4HCB-CyWW<_lJlMEVCx`Zwmaw1{BZoHXyZf-CQJM9;{kdGIm?iMj6Y zL*~FnAyA;g{`Zbjlm*~PUuM4*(8VOJ09HIp+h2%k{bmLgNbzt79zpoO%#mK!)_p94 zWo8w>yv--Q#{aUH3I}D^ z>Lr1M20lW(JfoWxSD;iOPrxgYCEzjwh+AP;(8u8cSCZf(k_Mc>7N^b1o-_u#Acu*; z1|0ls|E}KM+{hv90WU?ibXxSW1^a$G6?l+qDUy#al1au>U+f1ZJ7*akyP2(%xu$uq z{(xK>J=^vd{^k(*&m|vQ7t`aS0N?HF zbcXJ8$5@GNeELt|yFcl(Z{fp z;vz6poEiF3MYPH+pIUH9*!z#A;2v)i$x42fOhxmF?xQ78!>ulQPhth&~y-%{eM6LD)YR zL$a~8TS`0o`}?O}s4Xh=f&CYi2a7_)<`)d6Yi*v&uB%~bL>y6 znuviBA_~#Qes$62TikXxR6%7=4=GR#u57l{++1u2I>%RW!4u%RK#HRkm_eCSoPn#0 zjOm>`MqEY-UrOO{a^fM_y#==W0 z<{w?ZaZXyU6*<_v&U_Se`La>Zjs^a^Had^7wO_8^NROy7;DdvM>HqFygaX((>ATxu z4iDtbs4Cro@v4JFRxfOQ5;CH{4f+p12foiLZI3rBBK~B}CNa;gT$?tC>zzKh5OEpi z)x>aMmwra%QwVS~;5gjuv?=@LIo&%GtF`yLS`rCTqSXifNkcb=C9Wj@5qEKUfO^Pk zIF%<8t6Y^GTHR3m(IqQqXcss3!wSW@zZKL z*K@p7l7r;p{F0#6Y(DEs4IYPt-u7ee>B}pK?kXvF8~(>{$+^{sK?GvTFd5uoXhG%q z@GH5Uj7$fDOhtYA;uidt!Xi50LGE)>QO0&Z$#q-jk{MYtaJdW*aw>tsS&OO|ci^lI~Zf!_BIz zTo-7|+zTJm@^8jI_w|tgFYd^9+*Z<+AmVNUDLtZwuiapTu^?2%FBx&hWZqnG1OE}( z|BHEoTNpC&zJHGC?f_^x|;k7q5Og%D?nrCoc-kDri(tY zOk3iNJ3kU{jU8gZtqK~xdX+}{Wce(vZ*7!=^#W=uIw=W})QEx53GM6&XWDJ$KA9AX z)6UqdNr`((SVpO(nuU)!vYc%TD`zHBQ#p`Zq5a=%>F*YGUuuaZm&>Goo{n&1xEG` zB2uJ4*n#DUmi@|)-;$`{Iww)R!i)QY6C1ON6~wkE-pD`mm6^+T&^)dvFPUnezs|PQ zAvJa^s2y5$ZbJy?`l$du>gV1i)Sz}#EMXOundKB;ffbR(+HtrCQ9fT?5)J7_xCV@X ziyO;;r(cpc5T)Y6p}d%SFLW7@x^Db^c5wbBGb(YKD%#GEl>ZpxUaiYc+~G(mjU;~> zA5)x#D;wO#Nddv23PAxj{SURd>qvb#Ba_yMG`qbJ^uQkpPo|( zBt79X%W-928nE_bCiwJ+MDo1^*xv8nz+nZB8?#CJ`~|&t!;r{GNP&Ax6TfN)KK4~t zi(8&*uRK%eZ9U~nfiV5IdU2$5>~%5$b^$p3H119_SM!*7F}Gt_Oi7yG3X)X=l4pYC zrF?p^kvn+uSadw9lNsn;HlR3*sH~98>glXgJH!;1Bs@6toTQNAHEyoGmD_xy*C%6- zW4m(HTZ_L^2hyT@gQK`uImXN8@4T|o-9O|MP$utu1Z)n^sli$ z9UqepsNjEhi21eErJXzXp#RwMvi_^|KdW$kxt3HV80uuhR*g}S(FtCK zP=xbOCBLt(aG(O6^on1Dli}Kmc+>^VzusyWwWOTE0;y46+!L3ac8~=cI&4UphV0JzabH}`1B7Yg3WZFBQp+Ma>Nk* zd6b&WZ$FtlPO}!~dzIAQ{{5KeZV3Z)u}ab6@2-C-wiji^jVfgareT`Gq>J%o#^ql* zWJ>JH*)G*im9`p-RYEc({dd!V?3jqL!XlARe`l*B(_#$Rp;OO|`rHqigc+Z}C6&e7 z6p&cAbr%h7GC?S3yB*s7qJ2>4jl2L@j~~)GS2ThB5_U=#+D03gSB{8AYF8c|nYu&P z#p1EFhcr)NTb~C+hJdl42&puf2oUnOYQ}p+;o2s_-9I*D|U$9&XquCK3~>8SqT z!pwivzD6tXsWV~dH|)BZIHUi#s|pOGn2mS0+rn_pR??vxZ81V!1qh z)aAs1-N3EFcG%tCXS>$i@K7S`vTQY@6{mIQr1qMMA%BfAcgtWCpB*%>z#7W)SfAo} zUBbajvy%X>jFbabhx95k${zzO{&S)J0n-+ha$EMs)#weruY#en_y}|XiaEL^Oxh?H zh=n1`*e;kT;j3i*EThjW5>Y&gqThTmdFHJ-CXF)Bo@jI{ey*yOxQ??>H#W{hS0 ze=t1F%D}_V+^NSI57Wit)Vd4B>prezj{c_bgr+)ysK3$Ir^qRj`1*D8r91xM-reur|wQ9$Ozp7%cN+HLnNq_m=3b_A)R= zZ!rmKq}L`||4OA^4($>Tl1h-6-rI?v;Uc?Ig8c=!%xC#o$5XI`^hbv{SW63 zfuzOzm3tAqcXt@Xc+kb4TC?J^l@ny88XQvyXXe-lO+*#BHaaaz-jYV9p|OBLZQi{< z_*LIzG@h1EgXSatY}K2ks>A~y;ON1(A$8fgP}{^EN(kB~8wB2HrvvpMNQ z|3G5BI?9pW=35BHAkQ90ae={pC`3-e#+1-@k$=MQ=&uht-dzyNzX4ZDleB?`ErdEx1OiMZL^+*%@Rp^>5@48aM;^eQfe+^)$ zeFXyUvav(Kte_fp4nP^vTCsxSebAFgy6)EDgmk4SeVPsq$9+~Po*4_!3f4N9jG}Yg zjvjU9(ps22zrkk^HI+~3+kI{~dxuE=jLw*yF0+OOENCKt8H(g5-*3HZYL$6GAr<__ zCzNeNFq$`GM;z8P)9`4jgPbr;V$Yk*VK)!rlrSx51;RUGF3e@)iLDm9z3a^K2__#7 z(#0~@t+H=LhgOLAHA%9&N*p*Wq)1S`kkpc{h+)2i9NB&26bZo$a)b~4$-YsSI}-t& zRptenOa64UeH~{l5(THk#v;r4hppwR&fk?GT#l5wI)zSH{4RRVcV=E67;38%SqC%e z!uCEL%GxWQB<^60dWObIOZa_KIB!L5I=k!6AyX>Jk|L^OSUBEB5T3s+GM5P75CpZX zg&@HIFXJ`}iH&cqcx=a3Mvgz$a&}PWF=@z6+~GvjJYWqDdyk+FcD#$*fV6uBM^Q6M z8UF8x^axBn&5);n%&W?C0dFQ`awf0ls2S%r#u4m%oNe{}s0A*honX6AcXf!Fy3`Os zzSed#n=@=Yp0d9ky0zw(U2vnCx`nc`LGl55<}eo(2en!b8m;QfiXG-kI^DHIt0f*hwsx7s&N&qi~2uEuHAs%?S{SFCcRVTOC)EPsBLvt{b4+pau z%&FEo{8#2{XNAMGv9ESEflN=5rXCnHRZc1`+h~Y{@8#Nh=)c_r-efaZ5*TAw)ZB!Yo zJ5VScX7JL1O3<^bgx5#STtGjX;QoOp^09aE8!4`Ka{<*xFAe0zeuC?HSHVXYOzEKve6cqS_L7w zRg<|N<2%H3tP|v=SyE;NFoEQ9%rt^s+;8#yt%+*sHX23BzWG1w5Y?W#2rndQ|Af8o z|8di$j_5zZzm=5dPjwU>?=l^VR}kduWw}w7C3UXQvzJXkJO79C*P#~Gocvy|6$iC- zJ=I!6n%A8JH3bZ`xu!=vUhr$Ez_sh#cMpIF}Xe~IDlSD%t{AjYAkbQ~6ncB+Q*lH7Hqa-cnu2{IL6rHr>5H&rtMf!$Cv3)is?P_c&P^e( zaiddx^Q$u-C(J&^Wj-4BW@YR^ikYh69Av^L#~g){aVHkx9zIQZ&)8$I zl3%$0HgJ??J<`-6tPivgHQ<*I zVbmGGRfC>A#d`51#bGRY;28Kflf%LsE?6GZlnU=x^KWGa4YeU1n5d#on+VJaLX4^U zP)_3W3`H&FBz5(b>iOq;2@=RUychj;H%u2Jas{6udYO-BMh$*wGLQDlQRH2(u z-yKTTYm*@J2)|6n7aUzPvM?>SAlWHk$SYVBVesO>ysWuATr{_l>uT30s!4;&%()m+ z>1Mh8v0w!E*VwZ+J1Ne={M{9WuICF4bS2s}cQBsJ3h$uDC_R5AeV)t-llG+2B6`7* zd_B?|zi;pAI%e4BCxMj3L@bGxu>Zo$9l=zdhNlTm_b4Fk7Di9azcEuWMVFA&E6_y5u>6j5 zL@3(mLYEn{T%$~|bE&SyFlL~{oBspxK16y?3WLy3mluuWP3c?fE&th{-WUiwbRtm= zW~oMVQq?qlBBF&OQEIy&xN`WH%)$L@{#q#|@L$aT4$(oFR|1jwKhw~vLn8z8&Uc6d zl1k0n^WICAWwPQ2q=GBsZifq}$kKs&fuIM@ScRiaff+kWJcVGB*MiNTGZDX^mSZ3T zZ=p~x2LGRqEsD?b?KA)01`m=5Y-P5{U@YoztVax_tVnCop*nTJGR@N&y;?p<9NSTn*l}jb{iXP=m#a619rz0mETX@BPEecs|z_phXC}Sd~%Xz4qw&Yj-rtY97 zlA0+Gm6~1*8+soAZ(ij~O@l5U+xp7C^2XCykQp9i$JycVWb9u5ESIA<7@A63mf>$f z$zX-?g>=%H;rT0?`HaL@kw|8bN@d>LKcr84aOE7o!KcpqdS&!qN;3T{oBFJ+ACfto z^n9HR`G`#STqrFmNDUb1=yImfsRA3Z=n0_~jK#ou9>|PukJ26XyhMyTTv*^Aa*59# z7%dbe=jM_Kh@vj26)6@AuRAh4$v|6FudWX5g>Wp8R0rW~p#oW53;PA|Bv*Bf8w(p` ztBzutpJa$_nhA$VKB@}va!;;%Pt+$+_bvv!bA~wgU9ZSCL4r(eNh=i%_`UY1e?IL9%uD!Cw#L=$Hlh`De;in~fp2Zj%ijmRFpsKZ z`pU~`(;x9;O4C?f>U2Vo%H;C#hzwcd`g0*5ZJ7^-ngMC@XIMqTdMIeoX2*fh8kd~) zBvAY137*|!3ew{&{$=0Y#MG5}h@}4#$=u=v{D_}%-g$=*y$s43f{@6zx|X)HnwD;4 zU~oBedB#v93u{P}K2QNgyEL>ziSS1q15)|}QmEV@znmlZ@@qT5 zd06l`%UfvVsAaN{G)ob-g<-*}63?2Z4CAW}B?23-fm=Ox46=lGS4INy3&Yhxr^$tN zVE5}_?L#L782K+fHiYz_ye!5KV>^9AdjJ*m^ow?;eaRkwt6 zjZ1hCo$HN!?zT0yEBzo8edF)~KLRQDbYIow^QI`-lQW<4s{xGae`%mHYB;7qEW5*! z{})a>{adcwakJm<3X~Llw9Nk8Jx$fyKD^4{w{9@nG3U28*q~2I3ntC%ntMZ~Xb*IZ2xDIgaG}+Q{Xd-VB~_?7DbBg_IFyD4 z9=Thg-I(39z-b>7T}#&gV9l1$-uuUhA@S|sXDG>t)Jc1wS6?S}g(6Q)1hq4nat0fC z3atu>)T*qUBy$ZjUy$5M>T-T83=AfhNJk(6Et zJJ3{SGGAo-mJ|Iu|9O|S;nNFat%!HP>T~pg!)#Fg^-3=wL}pK1X~}13uds^^<;jUF z)8RKqTXF=h|C-Rs?` z$!2}~-(dR@P7WuFXEe`uC^jE#XUdf<2?jWe3D;JkA;hZ(Icj8~hIS^)9n?V}Nd0G3 zl|7avxHQoBMOozCEHdvt?nc-udjIa*eFC^{9jRn;9)9`L+NpxoJ-g}${DHl4 z&;BVh5}&9vKy*g43HcI1iN}s+V5f3@Kb2rHCg>>^@b0g}^tSM=HrRc9@NDAemCxz$ zR?9iE_vZub_ zqx3Vu+T)EgZc4?RUXPgF!AX&hXP-H?F*4i%+)a^_?xXwO+2=88b5nL0eWIl0!yh>) zo7A~@=2^KC&0AN{sN+eWuX&P0NP5J;R>a zvn%&g^BFO*M({Jo4@Pteg_mOTUHkAr|;3t#BL$08P(>^dI*D)_m0=+_( zlZ*vsDCWnMHo$p21X3h<++E`0mSt5;$)H!VYoAWn!B&Ca|FW*L$E4xXpJpW!IeSBx zd=wZx1%i@^n||+k*ULE_pFb?LR8mfAu8xWKY4uk=lX(r(;>vVm4G-~WjyOhp7v*at)^+H*8Z2lkx6UIw$t6N@qww6V_BCU_>Vu! zvyPNkd#p(6ZRa}rhb3FCU~+>brtYVKrhy5xG;8L9kl)^3PpA zp6^oZ&VGVF$&s^qE+B{ObHc)13H|-)+AE_jVB{YXFYer}S`cBTAenDQtHn4X-E>J{ z-l*Px(cC%dPX5E3GhTDqn73lLE^$TX91g^)7DC*#khUF!l_9on*&(bVqHQcPenl2v zNp@m`Mz{(KrAz=ju=gdbyhUvBwqGS!a2kX>G1c6md9!=3s<~g z$yI?px34z7D>&TVBkpfwWNWc0^Hn(!n1jcM%jvUKA%dg#u=g(pN{Xy(exA_`Vj*cw zA#Vi#prQ+)Ha)`f1Z8Q<+}2T^=%d3;_tA{qi7)#pl!n|M+nG57`W(i}=&u&gIQ<@P zaougXe9`NDnN545t$cWg?gV7eerwjw_{$O2#)Sun4uXfEFKjTCH8+!z!S%hmJn3;j$dl+%Mo$ImwPFFBL0k3Honh>_5RI!(yh>rE92|*@r ztGu_oD=-Qp0shV==4bp;5#i*EUgD%EMl|H~Nc`h<&9C!;Il%Q=31dxLSDb)l;3ty2 zh*gr9PhFTu`o9sOn>Mx{C`?*xw*yC&9$87(h4}MOnCw;%^ zP@eC39i0!hfe7K}R2hG^9C3wT?)^ey-&4)lllM^4wD#bR@#MQOwiom!aQnh-%dCTF zN;-D1B(Q0_^BTeP-UKVcoe|hX${QDAr0EKA^%C|}d>`_=v6QLQIY~JQ>eBcU{L8lh z9ESFlFl7wKg9PoKHup=yyT_w=ATTri$X-C7^&O|ZVkv`$SOR_vh(Vq!^o z82B0(xgk%BpGRQvi3Q5U53Ur@$DOCCb|?3pbRpJD_Kwh|5_dWFJ^VNFv`gCx$YyCj zkA6&eE}?~oU%!$2uU|>={@g%iQpPxliS4d)erS4bCjHpOj~$v>SXkN_whvzY*pCgC zZ{xQLy_yg>Z`j|1x>@V0i9M9K{9F(d3EQfgYReW-AW>%-jr>b{JdVuyBZUfka8-J+jAvCnE$reJ;nIp6Z;lNYUqg|)Q=W44c(*qEoFUerWBhtc&Q0f;5|q1 z$`ucKN}~)cAD+Sp-Bh_e+(I4xFJf}^zcTZ*BJ~&kv{1BJ*mmzz{ncxv;FY!g@L z6z%=iB{{U$PVnB7{2RouT)wH917c9XtAe)!-=$IdSefyPPeA53y5l!vyZHHwQ5hd$ zF`xv$*8uybGCKpCiwh+bX<|p0e$5nWXkDS_gXI#2_>#Bm%RpFvA)H?(rJQ{ihuHjw zswhbJngZk9_vSC9UiHi4cH@({(8F1!VdBik8EnEYU#rDF5SqD8yqm_v#q9FuOiOzOEobBmeyZ?@pv<_GACkmP- z{C?#Lw5e;I4zz>gbf8fNtMgH{%&3)}Dq<-|+;mpQtnhg_?CADN-exD!YY*I{trc;0 zmC!nUljO+D<#zlv4z|_!6bhoipNS_FB>6AbT`yYmLm2Kdju?0;+<3Ag$>CH7yZvGE zSUYuig9J4HTYTCkB=zM_mH!GZ^xN(AcS(B7bkFs}jLQ31@MaHA#B$Jm8R^vP{{0d2 z#|-OMyPU{$`1Qyr>C0Q_^9wuecM<9C+hLJf{=h!|j-gxO2H;=F=s1~pPa%^ET?ogr z%EIU&i2=8$-ra#yo>(+IVB*Pe$dCOdIPL@I5$29Par-sAsi)D8l*WN?o#Un~^hKy( z_}gCINZaGIr~S0S7yBK;g#FK;n}}D&mdiCNNYMZv(XM;{&yK5T?DMC4=F|S`9q`5D zuI-H%c{<>aPmb``7sm5nm!M<8|EBW_H(Q-%pX!M$YncQu_w$l~<0!wYZXSK!LY7VE zc;yg~lBlA3x9qiL(jNSGFmf<1UT%qCBM~d$Fz*|!EV@ELXT^itOKMXUz zQbBqNV#&h`N9hM*8%g}vTDZY`UuRxqb%fZX{_EyfIs?%gaTL@vaNdPD-Cm^e8MqUz zka9gp*6n+{7<)G(^j;;D`(c@Gl(r4m0$lf?1>anzz2I|wdv^UsRm50dD3zZ-dw_x>5;7AzXxGLhP`Mp0pG1-+t!(lpn?3Q z;cu|EThG1e-QHrK4Y9bt0=+gR_ND`uVf|#d#Z*8=;@A9H>7UNy<`*fU3*^uD)d*6d&pm%Vix(hjGt)u%a(HMqS)%X@)qF+mBU*E{GgGh$2=<+w8a4A-2`Oqtrn$gJ)qV;_1_RK z$2$F!Abzd7e3^Q*hI-!ec6vRNTY6+*WVpVc*=YD!N4f0Em3G(Q{PH>X>9=lj^pDQD zX}ZK;xf?E??;4^AV~}EM@EDWXz3!m*l+wK(Kq#M-@e!|gE%Vo&?_yB}LhrMxdOEJh zjy}&;@~=-&jXL}dZwCv1zN2Xi2P_*}(O4l%Vo=FhSs^1gTX0zCUVkM9bGbD#5j4XJ z|7`nd$uOFc)#mqwu!}iGR-lunW68UmC$Z1bn z`^(*evlZkhWOz(z{V+jBSjD%qB(BkF@@h#3lJo99 z<%20<1B+8*|HJU$tVLaf?K8mxV~7onY8(R!ZrQ^ICTonlYZvGsa3VQgI^uA8!`ulm z^~OYZ{Qn6s3D5Q@4U=hI;&q-IXtLdC2ZJ(kSw5#Iit91Pju~q^-22b^NZ0p&@|6?H zUK}MnfWOnNIf^dAh~d!#)-5}%|hlZNvaGfo5Iyf z6u-T-3!@Axrad1Yp35Sn zPNzLYgn9bm-Ap5sFouUd-3#eulQsLlAWdjb!YO%#ODNZcde)TOSG@|+bPrh=3 z8##~3b<>nRMkJVyJRU-~-ImlWbCo*f0aydw>BH!e&oHD3vw&;Fk4a5v$ z4H63fHcX&bB9+)5sCu*%CLu3+elAf`_<_Q00lBHvehpKC(2jZSxMktEIflJ8!XzJl1rQD>JALoN#Rj40jzLy&4 zMu6%>e&QyT$VZJX)qaA9&g zO6|#K@dRy(;#W~yDw%4KO#yIcK4K4NhTCE;wVPHDbrL?dnxFmdM#bRQDa?;AqZCd` z5Bpw;psT8h-jG8`N(yo$K_x0Q+a@riK;&&cK%`=;ZU7(|8YHl+K$R8br2J1tR*970M`kdYK*B?UQ2hDtIti3;3nw%*FO2L5x5HY~*N(6n`1jc4l7^|tM2>ej|col-Q6)WYT1>v;_ zvS_`i%ltNma)uvWx|`%IrFp1d??VK9cID0i`>4zCQ9ny5j^$vRuOuT8ilQS_feu+g zN(oa!4j~bWBB6wlQX)vn5o8nvIXR460WX>)<>UBD1S^hMA`*e+5L87)jx|V{3W;NR z4{E`Aqh%#%M5IbGGP1(ya0L#lDx$eG8r2MHH5IXf2R3{}JF8DDr(}Dy+y_?5caP-r z<%0FC`hGbCG^KF;2UT&8hVioDxP3RKSlE>|g@WHnqZE6|uhatJCjvU)f}w;f4FPLh$! z$;hZVq_iA`)f^&<1|<~X0cOaoLFT;qDlr>&DOo0leCADOca*`9Gz|(EvZf)VnAWR?GL3roX+Kt<> zN)qKH8Cgk2MpBSbLP*JBq?HJgN*L*I3@IgwbU22z57G?Meqn`}C7H>x>=)hxnV4k1m0!Z}hzAQr%A0NKavcQoVkF-^`NS4I9` z{YOPuQxPegGlT-@Nk)bMjbx-H8R`547aphtm88OhCDMqFN+MecxA_k<-tN!K^c~&X zNmd}rP$e1Jf^Q@v%gD+Rq(c#;zP|t zavqR5C4x-h->j~V%3-J?2!l#PUm!Yxkq9iw(Bu$QC5v1x10|G0M$JM|vryE0uAQvq zeAVCcIe%U$@2pe{+MgD2VW@vx~`5&O8)z$fG`jcbua=zE`zH` z0Jfm@ZKo{&+W@>)IG<{kyoCJ3>JwdX zE$1g(%D)ah7&|(So@9KRKQ9A}a^YMBp@V|MlBD9AF91|408ul{xDo+a5)e&*4Ceu< z?*M8pKbZya5i>|H0V(9DQo&RHN@YLHqX@#Xido-z8^ck3UL#NtEJ#Kc!6}IVE&M1UtQZOLq8!neExSN2 zgR5lgM7#VxIz|$`qhq81DFWW<_al{jM+J!1AuG_FK&SmZ0eGbJ5ToOta!ArhXive% a{~rK@AvYDzpB<0@0000&VqshtJRvGo(=%;`~7@Ae`I8YAPAL8h2yxx;UJUA4wD0(XxIGg63V$K%kjar~SW3&i zE$Mm0)b}GsR^czIG^)|@T^Kt~-;x+r0Fa+9^X<(+n{?N+UCm51#cTQbXp+>U*tbq2 z&$vO`+7?v5ki}R2eF{clYUqk3;n6#AGDI&~N?;g?WT8jSE)f(8=>IN34=e%T@@e05 zkJT(oJh_V3D!$^)Jd4*c+(74ELw*7Do6!tJ}49b*qZW1Pg5rupnc9ZiEsT)3YE)YTezXtU};4A*g0wO<||-E=R6;rMc z-_pV)i6nh>UTukQfD+S{*P9Z*`vM?K$7)KJF?u&84=9prByw^-7nU7$?==6qDyB@T zbZZm0>!VzDZP~~6%ct_{R?=dPf7sAy4`WU+01N>rP?XuKl=S-&^p-V~rQay-+%La6 zp4h%uE{n?Su_rzu4E#sipPfD7uw%SFIO8-i#TDCX%*Bsg>Z#?ywF2VYLMG)j?ouMm zyZ!j505J3$z3QE6K24p@vI;g?gRGYyJBR zo-qxh@xBViyv>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% diff --git a/Tools/capp/Resources/Templates/NibApplication/Resources/spinner.gif b/Tools/capp/Resources/Templates/NibApplication/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 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 diff --git a/Tools/capp/Resources/Templates/ThemeDescriptor/Resources/spinner.gif b/Tools/capp/Resources/Templates/ThemeDescriptor/Resources/spinner.gif index 06dbc2bc21dddcf0e09b566d5b211aee89570f52..77b36416bd8d0215b555a9a5265e09bae31d7081 100644 GIT binary patch literal 1440 zcmZ9LdrVVj7{&VqshtJRvGo(=%;`~7@Ae`I8YAPAL8h2yxx;UJUA4wD0(XxIGg63V$K%kjar~SW3&i zE$Mm0)b}GsR^czIG^)|@T^Kt~-;x+r0Fa+9^X<(+n{?N+UCm51#cTQbXp+>U*tbq2 z&$vO`+7?v5ki}R2eF{clYUqk3;n6#AGDI&~N?;g?WT8jSE)f(8=>IN34=e%T@@e05 zkJT(oJh_V3D!$^)Jd4*c+(74ELw*7Do6!tJ}49b*qZW1Pg5rupnc9ZiEsT)3YE)YTezXtU};4A*g0wO<||-E=R6;rMc z-_pV)i6nh>UTukQfD+S{*P9Z*`vM?K$7)KJF?u&84=9prByw^-7nU7$?==6qDyB@T zbZZm0>!VzDZP~~6%ct_{R?=dPf7sAy4`WU+01N>rP?XuKl=S-&^p-V~rQay-+%La6 zp4h%uE{n?Su_rzu4E#sipPfD7uw%SFIO8-i#TDCX%*Bsg>Z#?ywF2VYLMG)j?ouMm zyZ!j505J3$z3QE6K24p@vI;g?gRGYyJBR zo-qxh@xBViyv>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% From f535a6a242482d3931d32d337f2e1d77b3747d69 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 28 Aug 2012 11:42:38 +0100 Subject: [PATCH 111/114] Minor `CPTabView` optimisation. --- AppKit/CPTabView.j | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/AppKit/CPTabView.j b/AppKit/CPTabView.j index 94b1b64e0..4ef687726 100644 --- a/AppKit/CPTabView.j +++ b/AppKit/CPTabView.j @@ -79,11 +79,11 @@ var CPTabViewDidSelectTabViewItemSelector = 1, { _selectedIndex = CPNotFound; - _tabs = [[CPSegmentedControl alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; + _tabs = [[CPSegmentedControl alloc] initWithFrame:_CGRectMake(0, 0, 0, 0)]; [_tabs setHitTests:NO]; var height = [_tabs valueForThemeAttribute:@"default-height"]; - [_tabs setFrameSize:CGSizeMake(0, height)]; + [_tabs setFrameSize:_CGSizeMake(0, height)]; _box = [[CPBox alloc] initWithFrame:[self bounds]]; [self setBackgroundColor:[CPColor colorWithCalibratedWhite:0.95 alpha:1.0]]; @@ -350,11 +350,11 @@ var CPTabViewDidSelectTabViewItemSelector = 1, else { var aFrame = [self frame], - segmentedHeight = CGRectGetHeight([_tabs frame]), + segmentedHeight = _CGRectGetHeight([_tabs frame]), origin = _type === CPTopTabsBezelBorder ? segmentedHeight / 2 : 0; - [_box setFrame:CGRectMake(0, origin, CGRectGetWidth(aFrame), - CGRectGetHeight(aFrame) - segmentedHeight / 2)]; + [_box setFrame:_CGRectMake(0, origin, _CGRectGetWidth(aFrame), + _CGRectGetHeight(aFrame) - segmentedHeight / 2)]; [self addSubview:_tabs]; } @@ -439,13 +439,13 @@ var CPTabViewDidSelectTabViewItemSelector = 1, - (void)_repositionTabs { - var horizontalCenterOfSelf = CGRectGetWidth([self bounds]) / 2, - verticalCenterOfTabs = CGRectGetHeight([_tabs bounds]) / 2; + var horizontalCenterOfSelf = _CGRectGetWidth([self bounds]) / 2, + verticalCenterOfTabs = _CGRectGetHeight([_tabs bounds]) / 2; if (_type === CPBottomTabsBezelBorder) - [_tabs setCenter:CGPointMake(horizontalCenterOfSelf, CGRectGetHeight([self bounds]) - verticalCenterOfTabs)]; + [_tabs setCenter:_CGPointMake(horizontalCenterOfSelf, _CGRectGetHeight([self bounds]) - verticalCenterOfTabs)]; else - [_tabs setCenter:CGPointMake(horizontalCenterOfSelf, verticalCenterOfTabs)]; + [_tabs setCenter:_CGPointMake(horizontalCenterOfSelf, verticalCenterOfTabs)]; } - (void)_setSelectedIndex:(CPNumber)index @@ -471,9 +471,7 @@ var CPTabViewDidSelectTabViewItemSelector = 1, } if (_selectedIndex === CPNotFound) - { [self selectFirstTabViewItem:self]; - } } @end From ff932628734f605d400f3d36ed254c6ca280e782 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 28 Aug 2012 14:31:35 +0100 Subject: [PATCH 112/114] Work around rendering bugs in WebKit when moving canvas backed views. This bug would cause errors such as the subviews of a CPBox not drawing properly as the box moved (e.g. due to animation). --- AppKit/CPCompatibility.j | 18 +++++++++++++++++- AppKit/CPView.j | 7 ++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/AppKit/CPCompatibility.j b/AppKit/CPCompatibility.j index 639c301b0..8dd1686d5 100644 --- a/AppKit/CPCompatibility.j +++ b/AppKit/CPCompatibility.j @@ -74,9 +74,16 @@ CPInputSetFontOutsideOfDOM = 1 << 28; CPInput1PxLeftPadding = 1 << 29; CPInputOnInputEventFeature = 1 << 30; +// When an absolutely positioned div (CPView) with an absolutely positioned canvas in it (CPView with drawRect:) moves things on top of the canvas +// (subviews) don't redraw correctly. E.g. if you have a bunch of text fields in a CPBox in a sheet which animates in, some of the text fields might +// not be visible because the CPBox has a canvas at the bottom and the box moved form offscreen to onscreen. +// This bug is probably very related: https://bugs.webkit.org/show_bug.cgi?id=67203 +CPCanvasParentDrawErrorsOnMovementBug = 1 << 0; + var USER_AGENT = "", PLATFORM_ENGINE = CPUnknownBrowserEngine, - PLATFORM_FEATURES = 0; + PLATFORM_FEATURES = 0, + PLATFORM_BUGS = 0; // default these features to true @@ -152,6 +159,10 @@ else if (USER_AGENT.indexOf("AppleWebKit/") != -1) if (USER_AGENT.indexOf("Chrome") === CPNotFound) PLATFORM_FEATURES |= CPSOPDisabledFromFileURLs; + + // Assume this bug was introduced around Safari 5.1/Chrome 16. This could probably be tighter. + if (majorVersion > 533) + PLATFORM_BUGS |= CPCanvasParentDrawErrorsOnMovementBug; } // KHTML @@ -220,6 +231,11 @@ function CPFeatureIsCompatible(aFeature) return PLATFORM_FEATURES & aFeature; } +function CPPlatformHasBug(aBug) +{ + return PLATFORM_BUGS & aBug; +} + function CPBrowserIsEngine(anEngine) { return PLATFORM_ENGINE === anEngine; diff --git a/AppKit/CPView.j b/AppKit/CPView.j index 8d4db509f..7160f092d 100644 --- a/AppKit/CPView.j +++ b/AppKit/CPView.j @@ -614,7 +614,7 @@ var CPCurrentToolTip, */ - (void)replaceSubview:(CPView)aSubview with:(CPView)aView { - if (aSubview._superview != self) + if (aSubview._superview !== self) return; var index = [_subviews indexOfObjectIdenticalTo:aSubview]; @@ -2092,6 +2092,11 @@ setBoundsOrigin: _DOMContentsElement.style.height = ROUND(_CGRectGetHeight(_frame)) + "px"; #if PLATFORM(DOM) + // The performance implications of this aren't clear, but without this subviews might not be redrawn when this + // view moves. + if (CPPlatformHasBug(CPCanvasParentDrawErrorsOnMovementBug)) + _DOMElement.style.webkitTransform = 'translateX(0)'; + CPDOMDisplayServerAppendChild(_DOMElement, _DOMContentsElement); #endif _graphicsContext = [CPGraphicsContext graphicsContextWithGraphicsPort:graphicsPort flipped:YES]; From acd98b5c8812e75e7c707bd3298951a396c57cee Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 28 Aug 2012 14:32:04 +0100 Subject: [PATCH 113/114] Clarify CPTabView code. --- AppKit/CPTabView.j | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AppKit/CPTabView.j b/AppKit/CPTabView.j index 4ef687726..1c201d1af 100644 --- a/AppKit/CPTabView.j +++ b/AppKit/CPTabView.j @@ -354,7 +354,7 @@ var CPTabViewDidSelectTabViewItemSelector = 1, origin = _type === CPTopTabsBezelBorder ? segmentedHeight / 2 : 0; [_box setFrame:_CGRectMake(0, origin, _CGRectGetWidth(aFrame), - _CGRectGetHeight(aFrame) - segmentedHeight / 2)]; + _CGRectGetHeight(aFrame) - segmentedHeight / 2)]; [self addSubview:_tabs]; } @@ -451,10 +451,10 @@ var CPTabViewDidSelectTabViewItemSelector = 1, - (void)_setSelectedIndex:(CPNumber)index { _selectedIndex = index; - [self _setContentViewForItem:[_items objectAtIndex:_selectedIndex]]; + [self _setContentViewFromItem:[_items objectAtIndex:_selectedIndex]]; } -- (void)_setContentViewForItem:(CPTabViewItem)anItem +- (void)_setContentViewFromItem:(CPTabViewItem)anItem { [_box setContentView:[anItem view]]; } From b33763caeb54eb36ade62306d69cf53061628d75 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 28 Aug 2012 16:25:41 +0100 Subject: [PATCH 114/114] Fixed: popovers could only properly open relative to views in the main window. This would make the popover open with the wrong coordinates if the positioning view was in a window different than the main window, such as a utility window which can't become the main window. --- AppKit/_CPAttachedWindow.j | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/AppKit/_CPAttachedWindow.j b/AppKit/_CPAttachedWindow.j index ccbf265f1..690fa80fe 100644 --- a/AppKit/_CPAttachedWindow.j +++ b/AppKit/_CPAttachedWindow.j @@ -109,8 +109,7 @@ var _CPAttachedWindow_attachedWindowShouldClose_ = 1 << 0, */ - (id)initWithContentRect:(CGRect)aFrame { - self = [self initWithContentRect:aFrame styleMask:0]; - return self; + return [self initWithContentRect:aFrame styleMask:0]; } /*! @@ -196,7 +195,7 @@ var _CPAttachedWindow_attachedWindowShouldClose_ = 1 << 0, - (CGPoint)computeOriginFromRect:(CGRect)aRect ofView:(CPView)positioningView preferredEdge:(int)anEdge { - var mainWindow = [CPApp mainWindow], + var mainWindow = [positioningView window], platformWindow = [mainWindow platformWindow], nativeRect = [platformWindow nativeContentRect], baseOrigin = [positioningView convertPointToBase:aRect.origin],