From a966e7520fe7a8bafd41904aa22e650e85b55e00 Mon Sep 17 00:00:00 2001
From: Francisco Tolmasky The class does not have a
+ currentValue method is called.
@param animation the animation to obtain the curve value for
@param progress the current animation progress
diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j
index 73fd8c0fe..2063b889f 100644
--- a/AppKit/CPApplication.j
+++ b/AppKit/CPApplication.j
@@ -230,7 +230,7 @@ CPRunContinuesResponse = -1002;
/*!
This method is called by run before the event loop begins.
When it successfully completes, it posts the notification
- finishLaunching, the subclass method should invoke the superclass method.
*/
- (void)finishLaunching
@@ -437,7 +437,7 @@ CPRunContinuesResponse = -1002;
}
/*!
- Returns the aWindowNumber.
+ Returns the CPWindow object corresponding to aWindowNumber.
*/
- (CPWindow)windowWithWindowNumber:(int)aWindowNumber
{
@@ -445,7 +445,7 @@ CPRunContinuesResponse = -1002;
}
/*!
- Returns an array of the application's
diff --git a/AppKit/CPButton.j b/AppKit/CPButton.j
index f179c2be1..f170c39d6 100644
--- a/AppKit/CPButton.j
+++ b/AppKit/CPButton.j
@@ -222,7 +222,7 @@ var _CPButtonClassName = nil,
/*! @class CPButton
- aState.
- @param aState Possible states are any of the CPOffState, CPOnState, CPMixedState
*/
- (void)setState:(int)aState
@@ -830,7 +830,7 @@ var CPButtonImageKey = @"CPButtonImageKey",
/*!
Initializes the button by unarchiving data from aCoder.
- @param aCoder the coder containing the archived set: method
like NextStep based frameworks to change the color of
the current context. To change the color of the current
- context, use colorWithHexString: implementation
+ Used for the CPColor colorWithHexString: implementation
@ignore
@class CPColor
@return an array of rgb components
diff --git a/AppKit/CPColorPicker.j b/AppKit/CPColorPicker.j
index 6bc05e442..344a78ecb 100644
--- a/AppKit/CPColorPicker.j
+++ b/AppKit/CPColorPicker.j
@@ -25,7 +25,7 @@
/*! @class CPColorPicker
- setPickerMode: method. The simplest way to implement your own color picker is to create a subclass of CPColorPicker.
+ CPColorPicker is an abstract superclass for all color picker subclasses. If you want a particular color picker, use CPColorPanel's setPickerMode: method. The simplest way to implement your own color picker is to create a subclass of CPColorPicker.
*/
@implementation CPColorPicker : CPObject
{
diff --git a/AppKit/CPColorWell.j b/AppKit/CPColorWell.j
index cc605e841..6cee93020 100644
--- a/AppKit/CPColorWell.j
+++ b/AppKit/CPColorWell.j
@@ -31,9 +31,9 @@ var _CPColorWellDidBecomeExclusiveNotification = @"_CPColorWellDidBecomeExclusiv
/*! @class CPColorWell
-
An application can have one or more active activate: method with NO as its argument. When a mouse-down event occurs on an
An application can have one or more active CPColorWells. You can activate multiple CPColorWells by invoking the activate: method with NO as its argument. When a mouse-down event occurs on an CPColorWell's border, it becomes the only active color well. When a color well becomes active, it brings up the color panel also.
*/
@implementation CPColorWell : CPControl
{
@@ -136,7 +136,7 @@ var _CPColorWellDidBecomeExclusiveNotification = @"_CPColorWellDidBecomeExclusiv
// Activating and Deactivating Color Wells
/*!
Activates the color well, displays the color panel, and makes the panel's current color the same as its own.
- If exclusive is YES, deactivates any other NO, keeps them active.
+ If exclusive is YES, deactivates any other CPColorWells. NO, keeps them active.
@param shouldBeExclusive whether other color wells should be deactivated.
*/
- (void)activate:(BOOL)shouldBeExclusive
@@ -262,7 +262,7 @@ var CPColorWellColorKey = "CPColorWellColorKey",
/*!
Initializes the color well by unarchiving data from aCoder.
- @param aCoder the coder containing the archived YES if the document has a
- YES makes the document have an undo manager
*/
- (void)setHasUndoManager:(BOOL)aFlag
@@ -649,7 +649,7 @@ var CPDocumentUntitledCount = 0;
}
/*
- Implemented as a delegate of a aType.
+ Returns the CPDocument subclass associated with aType.
@param aType the type of document
@return a Cappuccino Class object, or nil if no match was found
*/
diff --git a/AppKit/CPDragServer.j b/AppKit/CPDragServer.j
index 8ef08829d..d0fc4f33f 100644
--- a/AppKit/CPDragServer.j
+++ b/AppKit/CPDragServer.j
@@ -116,7 +116,7 @@ var CPDragServerUpdateDragging = function(anEvent)
}
/*
- aWindowNumber
- @param modifierFlags a bitwise combination of the modifiers specified in the YES if this is caused by the system repeat as opposed to the user pressing the key again
@param code a number associated with the keyboard key of this event
- @throws CPInternalInconsistencyException if anEventType is not a anEventType is not a CPKeyDown,
+ CPKeyUp or CPFlagsChanged
@return the keyboard event
*/
+ (CPEvent)keyEventWithType:(CPEventType)anEventType location:(CGPoint)aPoint modifierFlags:(unsigned int)modifierFlags
@@ -233,9 +233,9 @@ var _CPEventPeriodicEventPeriod = 0,
Creates a new mouse event
@param anEventType the event type
@param aPoint the location of the cursor in the window specified by aWindowNumber
- @param modifierFlags a bitwise combination of the modifiers specified in the aWindowNumber
- @param modifierFlags a bitwise combination of the modifiers specified in the YES if the aRect, contains
- the aPoint.
+ Returns YES if the CGRect, aRect, contains
+ the CGPoint, aPoint.
@param aRect the rectangle to test with
@param aPoint the point to test with
@group CGRect
@@ -222,11 +222,11 @@ function CPRectContainsPoint(aRect, aPoint)
}
/*!
- Returns a BOOL indicating whether possibleOuter
- contains possibleInner.
+ Returns a BOOL indicating whether CGRect possibleOuter
+ contains CGRect possibleInner.
@group CGRect
- @param possibleOuter the possibleInner is inside of
- @param possibleInner the possibleOuter.
+ @param possibleOuter the CGRect to test if possibleInner is inside of
+ @param possibleInner the CGRect to test if it fits inside possibleOuter.
@return BOOL YES if possibleInner fits inside possibleOuter.
*/
function CPRectContainsRect(lhsRect, rhsRect)
@@ -235,11 +235,11 @@ function CPRectContainsRect(lhsRect, rhsRect)
}
/*!
- Tests whether the two x and y members.
@group @CGPoint
- @param lhsPoint the first YES if the two points have the same x's, and the same y's.
*/
function CPPointEqualToPoint(lhsPoint, rhsPoint)
@@ -248,10 +248,10 @@ function CPPointEqualToPoint(lhsPoint, rhsPoint)
}
/*!
- Test whether the two YES if the two rectangles have the same origin and size. NO, otherwise.
*/
function CPRectEqualToRect(lhsRect, rhsRect)
@@ -262,7 +262,7 @@ function CPRectEqualToRect(lhsRect, rhsRect)
/*!
@group CGRect
- @param aRect a YES if the two rectangles intersect
@group CGRect
- @param lhsRect the first YES if the two rectangles have any common spaces, and NO, otherwise.
*/
function CPRectIntersectsRect(lhsRect, rhsRect)
@@ -353,11 +353,11 @@ function CPRectIntersectsRect(lhsRect, rhsRect)
}
/*!
- Returns YES if the YES if the CGRect has no area.
The test is performed by checking if the width and height are both zero.
@group CGRect
- @param aRect the YES if the NO, otherwise.
+ @param aRect the CGRect to test
+ @return BOOL YES if the CGRect has no area, and NO, otherwise.
*/
function CPRectIsEmpty(aRect)
{
@@ -365,10 +365,10 @@ function CPRectIsEmpty(aRect)
}
/*!
- Returns YES if the YES if the CGRect has no area.
The test is performed by checking if the width and height are both zero.
@group CGRect
- @return BOOL YES if the NO, otherwise.
+ @return BOOL YES if the CGRect has no area, and NO, otherwise.
*/
function CPRectIsNull(aRect)
{
@@ -376,10 +376,10 @@ function CPRectIsNull(aRect)
}
/*!
- Returns YES if the two YES if the two CGSizes are identical.
@group CGSize
- @param lhsSize the first YES if the two sizes are identical. NO, otherwise.
*/
function CPSizeEqualToSize(lhsSize, rhsSize)
@@ -388,10 +388,10 @@ function CPSizeEqualToSize(lhsSize, rhsSize)
}
/*!
- Returns a human readable string of the provided CPStringFromRect
@return CGRect the rectangle created from the string
@@ -470,7 +470,7 @@ function CPPointFromEvent(anEvent)
}
/*!
- Returns a zero sized width and height
*/
diff --git a/AppKit/CPImage.j b/AppKit/CPImage.j
index b0c24bdb9..7c4a050c3 100644
--- a/AppKit/CPImage.j
+++ b/AppKit/CPImage.j
@@ -49,7 +49,7 @@ CPImageDidLoadNotification = @"CPImageDidLoadNotification";
/*! @class CPImage
-
-*/ - (void)setState:(int)aState @@ -304,9 +304,9 @@ /*! Returns the menu item's current state. Possible states are:CPMixedState -CPOnState -CPOffState +CPMixedState +CPOnState +CPOffState
-*/ - (int)state @@ -520,10 +520,10 @@ Sets the modifier mask used for the item's keyboard shortcut. Can be a combination of:CPMixedState -CPOnState -CPOffState +CPMixedState +CPOnState +CPOffState
-*/ - (void)setKeyEquivalentModifierMask:(unsigned)aMask @@ -535,10 +535,10 @@ Returns the item's keyboard shortcut modifier mask. Can be a combination of:CPShiftKeyMask -CPAlternateKeyMask -CPCommandKeyMask -CPControlKeyMask +CPShiftKeyMask +CPAlternateKeyMask +CPCommandKeyMask +CPControlKeyMask
-*/ - (unsigned)keyEquivalentModifierMask diff --git a/AppKit/CPOutlineView.j b/AppKit/CPOutlineView.j index a2af0bfb9..d82d737c9 100644 --- a/AppKit/CPOutlineView.j +++ b/AppKit/CPOutlineView.j @@ -24,7 +24,7 @@ /*! @ignore - This class is a subclass ofCPShiftKeyMask -CPAlternateKeyMask -CPCommandKeyMask -CPControlKeyMask +CPShiftKeyMask +CPAlternateKeyMask +CPCommandKeyMask +CPControlKeyMask
-- (id)outlineView:(@param aDataSource the outline's data source @throws CPInternalInconsistencyException if the data source does not implement all the required methods diff --git a/AppKit/CPPanel.j b/AppKit/CPPanel.j index 93798d28e..72c7c9712 100644 --- a/AppKit/CPPanel.j +++ b/AppKit/CPPanel.j @@ -28,7 +28,7 @@ CPCancelButton = 0; /*! @class CPPanel - TheCPOutlineView )outlineView child:(int)index ofItem:(id)item -- (BOOL)outlineView:(CPOutlineView )outlineView isItemExpandable:(id)item -- (int)outlineView:(CPOutlineView )outlineView numberOfChildrenOfItem:(id)item -- (id)outlineView:(CPOutlineView )outlineView objectValueForTableColumn:(CPTableColumn )tableColumn byItem:(id)item +- (id)outlineView:(CPOutlineView)outlineView child:(int)index ofItem:(id)item +- (BOOL)outlineView:(CPOutlineView)outlineView isItemExpandable:(id)item +- (int)outlineView:(CPOutlineView)outlineView numberOfChildrenOfItem:(id)item +- (id)outlineView:(CPOutlineView)outlineView objectValueForTableColumn:(CPTableColumn)tableColumn byItem:(id)item
Panels behave differently from standard windows in only a small number of ways, but the ways are important to the user interface:
diff --git a/AppKit/CPPasteboard.j b/AppKit/CPPasteboard.j index 9037b1d8a..42f136e68 100644 --- a/AppKit/CPPasteboard.j +++ b/AppKit/CPPasteboard.j @@ -44,7 +44,7 @@ var CPPasteboards = nil; /*! @class CPPasteboard -YES if the style
- is NO if it's NO if it's CPProgressIndicatorSpinningStyle.
@param isDisplayedWhenStopped YES means the indicator will be displayed when it's not animating.
*/
- (void)setDisplayedWhenStopped:(BOOL)isDisplayedWhenStopped
diff --git a/AppKit/CPResponder.j b/AppKit/CPResponder.j
index 6331472fb..c85432ef1 100644
--- a/AppKit/CPResponder.j
+++ b/AppKit/CPResponder.j
@@ -88,7 +88,7 @@ CPRightArrowKeyCode = 63235;
/*!
Called to interpret a series of key events.
- @param events an array of key float, which can be retrieved by the method floatValue and set by the method setFloatValue:.
+ An CPSlider displays, and allows control of, some value in the application. It represents a continuous stream of values of type float, which can be retrieved by the method floatValue and set by the method setFloatValue:.
*/
@implementation CPSlider : CPControl
{
diff --git a/AppKit/CPSplitView.j b/AppKit/CPSplitView.j
index 89727ba3b..028d85164 100644
--- a/AppKit/CPSplitView.j
+++ b/AppKit/CPSplitView.j
@@ -515,7 +515,7 @@ var CPSplitViewDelegateKey = "CPSplitViewDelegateKey",
/*
Initializes the split view by unarchiving data from aCoder.
- @param aCoder the coder containing the archived Each
Each CPTableColumn object is identified by a CPString, called the column identifier. The reason is that, after a column has been added to a table view, the user might move the columns around, so there is a need to identify the columns regardless of its position in the table.
@ignore
*/
diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j
index 8076b8994..cf4bcd744 100644
--- a/AppKit/CPTableView.j
+++ b/AppKit/CPTableView.j
@@ -27,7 +27,7 @@ import "CPTableColumn.j"
var CPTableViewCellPlaceholder = nil;
/*
-
-- (int)numberOfRowsInTableView:(@param aDataSource the object with the table data @throws CPInternalInconsistencyException ifCPTableView )aTableView -- (id)tableView:(CPTableView )aTableView objectValueForTableColumn:(CPTableColumn )aTableColumn row:(int)rowIndex +- (int)numberOfRowsInTableView:(CPTableView)aTableView +- (id)tableView:(CPTableView)aTableView objectValueForTableColumn:(CPTableColumn)aTableColumn row:(int)rowIndex
aDataSource doesn't implement all the required methods
diff --git a/AppKit/CPToolbar.j b/AppKit/CPToolbar.j
index 9d6763fee..2d72bece0 100644
--- a/AppKit/CPToolbar.j
+++ b/AppKit/CPToolbar.j
@@ -358,7 +358,7 @@ var CPToolbarIdentifierKey = "CPToolbarIdentifierKey",
/*
Initializes the toolbar by unarchiving data from aCoder.
- @param aCoder the coder containing the archived CPView is a class which provides facilities for drawing in a window and receiving events. It is the superclass of many of the visual elements of the GUI.
In order to display itself, a view must be placed in a window (represented by an
-
Subclasses can override -drawRect: in order to implement their
- appearance. Other methods of aSize is the same as the frame's current dimensions, this
- method simply returns. The method posts a NO.
Methods that could cause a frame change notification are:
@@ -1259,7 +1259,7 @@ setFrameOrigin: } /*! - ReturnsYESif the receiver posts aCPViewFrameDidChangeNotification if its frame is changed. + ReturnsYESif the receiver posts a CPViewFrameDidChangeNotification if its frame is changed. */ - (BOOL)postsFrameChangedNotifications { @@ -1267,7 +1267,7 @@ setFrameOrigin: } /*! - Sets whether the receiver posts aCPViewBoundsDidChangeNotification notification + Sets whether the receiver posts a CPViewBoundsDidChangeNotification notification to the default notification center when its bounds is changed. The default isNO. Methods that could cause a bounds change notification are:@@ -1291,7 +1291,7 @@ setBoundsOrigin: /*! ReturnsYESif the receiver posts a -CPViewBoundsDidChangeNotification when its + CPViewBoundsDidChangeNotification when its bounds is changed. */ - (BOOL)postsBoundsChangedNotifications @@ -1331,7 +1331,7 @@ setBoundsOrigin: /*! Sets the receiver's list of acceptable data types for a dragging operation. - @param pasteboardTypes an array ofCPPasteboard s + @param pasteboardTypes an array of CPPasteboards */ - (void)registerForDraggedTypes:(CPArray)pasteboardTypes { @@ -1340,7 +1340,7 @@ setBoundsOrigin: /*! Returns an array of all types the receiver accepts for dragging operations. - @return an array ofCPPasteBoard s + @return an array of CPPasteBoards */ - (CPArray)registeredDraggedTypes { @@ -1559,7 +1559,7 @@ setBoundsOrigin: } /*! - Scrolls the nearest ancestorCPClipView a minimum amount soaRectcan become visible. + Scrolls the nearest ancestor CPClipView a minimum amount soaRectcan become visible. @param aRect the area to become visible @returnif any scrolling occurred, NOotherwise. */ @@ -1627,8 +1627,8 @@ setBoundsOrigin: } /*! - Returns theCPScrollView containing the receiver. - @return theCPScrollView containing the receiver. + Returns the CPScrollView containing the receiver. + @return the CPScrollView containing the receiver. */ - (CPScrollView)enclosingScrollView { @@ -1652,7 +1652,7 @@ setBoundsOrigin: } /*! - Notifies the receiver (superview of aCPClipView ) + Notifies the receiver (superview of a CPClipView) that the clip view bounds or the document view bounds have changed. @param aClipView the clip view of the superview being notified */ @@ -1714,8 +1714,8 @@ setBoundsOrigin: } /*! - ReturnsYESif the receiver uses aCALayer - @returnsYESif the receiver uses aCALayer + ReturnsYESif the receiver uses a CALayer + @returnsYESif the receiver uses a CALayer */ - (BOOL)wantsLayer { diff --git a/AppKit/CPWindow.j b/AppKit/CPWindow.j index 8c7aa7637..aec1dc6da 100644 --- a/AppKit/CPWindow.j +++ b/AppKit/CPWindow.j @@ -186,7 +186,7 @@ var CPWindowSaveImage = nil, /*! @class CPWindow - AnCPWindow instance represents a window, panel or menu on the screen. + An CPWindow instance represents a window, panel or menu on the screen.Each window has a style, which determines how the window is decorated; whether it has a border, a title bar, a resize bar, minimise and close buttons.
@@ -194,7 +194,7 @@ var CPWindowSaveImage = nil,A window always contains a content view which is the highest level view available for public (application) use. This view fills the area of the window inside any decoration/border. This is the only part of the window that application programmers are allowed to draw in directly.
-You can convert between view coordinates and window base coordinates using the
[CPView -convertPoint:fromView:] ,[CPView -convertPoint:toView:] ,[CPView -convertRect:fromView:] , and[CPView -convertRect:toView:] methods with anil view argument. +You can convert between view coordinates and window base coordinates using the [CPView -convertPoint:fromView:], [CPView -convertPoint:toView:], [CPView -convertRect:fromView:], and [CPView -convertRect:toView:] methods with a nil view argument. @par Delegate Methods @@ -876,7 +876,7 @@ CPTexturedBackgroundWindowMask /*! Sets the delegate for the window. Passing
nilwill just remove the window's current delegate. - @param aDelegate an object to respond to the various delegate methods ofCPWindow + @param aDelegate an object to respond to the various delegate methods of CPWindow */ - (void)setDelegate:(id)aDelegate { @@ -1079,7 +1079,7 @@ CPTexturedBackgroundWindowMask } /*! - Dispatches events that are sent to it fromCPApplication . + Dispatches events that are sent to it from CPApplication. @param anEvent the event to be dispatched */ - (void)sendEvent:(CPEvent)anEvent diff --git a/AppKit/CPWindowController.j b/AppKit/CPWindowController.j index fe7db2f2c..9bf09717b 100644 --- a/AppKit/CPWindowController.j +++ b/AppKit/CPWindowController.j @@ -32,10 +32,10 @@ /*! @class CPWindowController - An instance of aCPWindowController manages aCPWindow . It has methods + An instance of a CPWindowController manages a CPWindow. It has methods that get called when the window is loading, and after the window has loaded. In the - Model-View-Controller method of program design, theCPWindowController would be - considered the 'Controller' and theCPWindow the 'Model.' + Model-View-Controller method of program design, the CPWindowController would be + considered the 'Controller' and the CPWindow the 'Model.' */ @implementation CPWindowController : CPResponder { @@ -123,7 +123,7 @@ /*! ReturnsYESif the window has been loaded. Specifically, - ifloadWindow has been called. + if loadWindow has been called. */ - (BOOL)isWindowLoaded { diff --git a/AppKit/CoreAnimation/CAAnimation.j b/AppKit/CoreAnimation/CAAnimation.j index d94804b7f..fbaca60fd 100644 --- a/AppKit/CoreAnimation/CAAnimation.j +++ b/AppKit/CoreAnimation/CAAnimation.j @@ -34,8 +34,8 @@ } /*! - Creates a newCAAnimation instance - @return a newCAAnimation instance + Creates a new CAAnimation instance + @return a new CAAnimation instance */ + (id)animation { @@ -191,8 +191,8 @@ @end /*! - ACABasicAnimation is a simple animation that moves a -CALayer from one point to another over a specified + A CABasicAnimation is a simple animation that moves a + CALayer from one point to another over a specified period of time. */ @implementation CABasicAnimation : CAPropertyAnimation diff --git a/AppKit/CoreAnimation/CALayer.j b/AppKit/CoreAnimation/CALayer.j index 583ad8ccc..baef5f944 100644 --- a/AppKit/CoreAnimation/CALayer.j +++ b/AppKit/CoreAnimation/CALayer.j @@ -51,11 +51,11 @@ var CALayerRegisteredRunLoopUpdates = nil; /*! @class CALayer - ACALayer is similar to aCPView , but with the ability + A CALayer is similar to a CPView, but with the ability to have a transform applied to it. @delegate -(void)drawLayer:(CALayer)layer inContext:(CGContextRef)ctx; - If the delegate implements this method, theCALayer will + If the delegate implements this method, the CALayer will call this in place of itsdrawInContext:. @param layer the layer to draw for @param ctx the context to draw on @@ -418,7 +418,7 @@ var CALayerRegisteredRunLoopUpdates = nil; // Providing Layer Content /*! - Returns theCGImage contents of this layer. + Returns the CGImage contents of this layer. The default contents arenil. */ - (CGImage)contents diff --git a/AppKit/CoreGraphics/CGColor.j b/AppKit/CoreGraphics/CGColor.j index fd48edb6f..6c9381041 100644 --- a/AppKit/CoreGraphics/CGColor.j +++ b/AppKit/CoreGraphics/CGColor.j @@ -62,8 +62,8 @@ function CGColorRelease() } /*! - Creates a newCGColor . - @param aColorSpace theCGColorSpace of the color + Creates a new CGColor. + @param aColorSpace the CGColorSpace of the color @param components the color's intensity values plus alpha @return CGColor the new color object @group CGColor @@ -86,10 +86,10 @@ function CGColorCreate(aColorSpace, components) } /*! - Creates a copy of a color... but not really.CGColor s + Creates a copy of a color... but not really. CGColors are immutable, so to be efficient, this function will just return the same object that was passed in. - @param aColor theCGColor to 'copy' + @param aColor the CGColor to 'copy' @return CGColor the color copy @group CGColor */ @@ -166,7 +166,7 @@ function CGColorCreateCopyWithAlpha(aColor, anAlpha) /*! Creates a color using the specified pattern. - @param aColorSpace theCGColorSpace + @param aColorSpace the CGColorSpace @param aPattern the pattern image @param components the color components plus the alpha component @return CGColor the patterned color @@ -182,8 +182,8 @@ function CGColorCreateWithPattern(aColorSpace, aPattern, components) /*! Determines if two colors are the same. - @param lhs the firstCGColor - @param rhs the secondCGColor + @param lhs the first CGColor + @param rhs the second CGColor @returnYESif the two colors are equal.NOotherwise. */ @@ -229,8 +229,8 @@ function CGColorGetAlpha(aColor) } /*! - Returns theCGColor 's color space. - @returnCGColorSpace + Returns the CGColor's color space. + @return CGColorSpace @group CGColor */ function CGColorGetColorSpace(aColor) @@ -239,7 +239,7 @@ function CGColorGetColorSpace(aColor) } /*! - Returns theCGColor 's components + Returns the CGColor's components including the alpha in an array. @param aColor the color @return CPArray the color's components @@ -252,7 +252,7 @@ function CGColorGetComponents(aColor) /*! Returns the number of color components (including alpha) in the specified color. - @param aColor theCGColor + @param aColor the CGColor @return CPNumber the number of components @group CGColor */ @@ -262,8 +262,8 @@ function CGColorGetNumberOfComponents(aColor) } /*! - Gets theCGColor 's pattern. - @param aCGColor + Gets the CGColor's pattern. + @param a CGColor @return CGPatternFIXME the pattern image @group CGColor */ diff --git a/AppKit/CoreGraphics/CGGeometry.j b/AppKit/CoreGraphics/CGGeometry.j index 9f156cec8..d9a07af7a 100644 --- a/AppKit/CoreGraphics/CGGeometry.j +++ b/AppKit/CoreGraphics/CGGeometry.j @@ -66,11 +66,11 @@ _function(CGRectIsNull(aRect)) _function(CGRectContainsPoint(aRect, aPoint)) /*! - Returns aBOOLindicating whetherCGRect lhsRect- containsCGRect rhsRect. + Returns aBOOLindicating whether CGRectlhsRect+ contains CGRectrhsRect. @group CGRect - @param lhsRect theCGRect to test ifrhsRectis inside of - @param rhsRect theCGRect to test if it fits insidelhsRect. + @param lhsRect the CGRect to test ifrhsRectis inside of + @param rhsRect the CGRect to test if it fits insidelhsRect. @return BOOLYESifrhsRectfits insidelhsRect. */ function CGRectContainsRect(lhsRect, rhsRect) @@ -83,8 +83,8 @@ function CGRectContainsRect(lhsRect, rhsRect) /*! ReturnsYESif the two rectangles intersect @group CGRect - @param lhsRect the firstCGRect - @param rhsRect the secondCGRect + @param lhsRect the first CGRect + @param rhsRect the second CGRect @return BOOLYESif the two rectangles have any common spaces, andNO, otherwise. */ function CGRectIntersectsRect(lhsRect, rhsRect) @@ -95,8 +95,8 @@ function CGRectIntersectsRect(lhsRect, rhsRect) } /*! - Makes the origin and size of aCGRect all integers. Specifically, by making - the southwest corner the origin (rounded down), and the northeast corner aCGSize (rounded up). + Makes the origin and size of a CGRect all integers. Specifically, by making + the southwest corner the origin (rounded down), and the northeast corner a CGSize (rounded up). @param aRect the rectangle to operate on @return CGRect the modified rectangle (same as the input) @group CGRect diff --git a/Objective-J/bootstrap.js b/Objective-J/bootstrap.js index d0577d74c..42d4767e6 100644 --- a/Objective-J/bootstrap.js +++ b/Objective-J/bootstrap.js @@ -21,4 +21,4 @@ */ if (window.OBJJ_MAIN_FILE) - objj_import("main.j", YES, function() { main(); }); + objj_import(OBJJ_MAIN_FILE, YES, function() { main(); }); diff --git a/Tools/Documentation/Cappuccino.doxygen b/Tools/Documentation/Cappuccino.doxygen index a73f5bdc6..d083ca453 100644 --- a/Tools/Documentation/Cappuccino.doxygen +++ b/Tools/Documentation/Cappuccino.doxygen @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = Cappuccino -PROJECT_NUMBER = 1.5.5 +PROJECT_NUMBER = 0.6 OUTPUT_DIRECTORY = Documentation CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English diff --git a/Tools/READMEs/STARTER-README b/Tools/READMEs/STARTER-README index 551b8c326..fe0b77486 100644 --- a/Tools/READMEs/STARTER-README +++ b/Tools/READMEs/STARTER-README @@ -2,11 +2,11 @@ Welcome to the Cappuccino Starter Package! Included you should find the following: -1. Frameworks +1. Documentation 2. NewApplication 3. README -NewApplication is a stand alone Cappuccino application that you can use as a template to start building your own apps. To get started, just open up NewApplication/index.html in your favorite web browser. A great place to go from there is to read the "Downloading and Getting Started" tutorial found at http://cappuccino.org/learn/tutorials/starter-tutorial.php. This will walk you through these initial steps as well as getting you to do a little coding. +NewApplication is a stand alone Cappuccino application that you can use as a template to start building your own apps. To get started, just open up NewApplication/index.html in your favorite web browser. A great place to go from there is to read the "Downloading and Getting Started" tutorial found at http://cappuccino.org/learn/tutorials/starter-tutorial.php. This will walk you through these initial steps as well as getting you to do a little coding. If you want to debug your application, try running it with index-debug.html instead, which should make it easier. You can build your entire application right from this sample project, but if you want to dig a little deeper, you can also download the Tools package found at http://cappuccino.org/download/. This will set you up with some great additions like syntax modules for certain text editors and build tools to get extra performance. diff --git a/Tools/READMEs/TOOLS-README b/Tools/READMEs/TOOLS-README index b22681926..efac4c0ba 100644 --- a/Tools/READMEs/TOOLS-README +++ b/Tools/READMEs/TOOLS-README @@ -6,11 +6,13 @@ This package includes syntax highlighting modes for both SubEthaEdit, Coda, Text + SubEthaEdit + - NOTE: SubEthaEdit now has built-in support for Objective-J, but the copy included here is probably more up to date. - Unarchive Tools/Editors/Objective-J.mode.zip - Double click the generated Objective-J.mode file + Coda + - NOTE: Coda now has built-in support for Objective-J, but the copy included here is probably more up to date. - Unarchive Tools/Editors/Objective-J.mode.zip - Place the generated Objective-J.mode file in ~/Library/Application Support/Coda/Modes @@ -87,6 +89,6 @@ objjc is a static preinterpreter for Objectie-J. It will take Objective-J files Steam is a simple tool for managing Objective-J projects. Among other things, it allows you to statically pre-interpret entire Objective-J applications so that you can deliver it without requiring client-side pre-interpretation. - steam create path - This will create a new Cappuccino application at the specified path. The resulting project contains a basic Cappuccino application as well as Objective-J and the preprocessed Cappuccino frameworks. + steam create [-l] path - This will create a new Cappuccino application at the specified path. The resulting project contains a basic Cappuccino application as well as Objective-J and the preprocessed Cappuccino frameworks. steam build [options] - This builds an application or framework. \ No newline at end of file diff --git a/build.xml b/build.xml index 0f4441277..6953f8f64 100644 --- a/build.xml +++ b/build.xml @@ -85,13 +85,45 @@ -+ + + + ++ + ++ + + ++ ++ + + + + +*** WARNING: Doxygen not installed. Could not create documentation. ++ @@ -269,7 +301,10 @@- - + + + + + + + ++ + + ++ - + + + + From fd46487c8294b548d0e2e605d048dc29728452e9 Mon Sep 17 00:00:00 2001 From: Francisco Ryan Tolmasky I Date: Wed, 10 Dec 2008 16:56:28 -0800 Subject: [PATCH 7/8] Updated default bake template. Reviewed by me. --- Tools/bake/bake_template.html | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/Tools/bake/bake_template.html b/Tools/bake/bake_template.html index cf9ab8e15..28ed44809 100644 --- a/Tools/bake/bake_template.html +++ b/Tools/bake/bake_template.html @@ -13,23 +13,18 @@ // --> - - Loading... + OBJJ_MAIN_FILE = "main.j"; - - - + + +From 4a9f09570e7a16fd652ae4110b691401763520ff Mon Sep 17 00:00:00 2001 From: Francisco Ryan Tolmasky IDate: Wed, 10 Dec 2008 18:04:18 -0800 Subject: [PATCH 8/8] Updated SubEthaEdit syntax mode. Reviewed by me. --- Tools/SubEthaEdit/Objective-J.mode.zip | Bin 77968 -> 78342 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Tools/SubEthaEdit/Objective-J.mode.zip b/Tools/SubEthaEdit/Objective-J.mode.zip index 11058cd13abd6d5157985c272179380f6fdc7ff1..95f9b988fec9225db7533c6bf94e27d783e7cdb4 100644 GIT binary patch delta 23664 zcmbTcV{~QP*7utg+qUggY}>Z&q++btwpFoFv2CYPamB9KytVf^`+c5sPrLWSyH=a? zL+^cz*607%XP>Q&F%ovb!}h@w*l+?Ig`{ yZ!MT=ETH079d``PFFH^K8&UF`t=RCY99*g82l& |b&_svXRfPKWU4 zvW_REObtktK|f%J6mOZG0AG+hDk_6W_e%&P28pGCffmI3lE{5}6{om`gF8mM8s-*7 zcA@N1CFSL6^5w>192sIL<-OeVy~FdZA?6b}dMmnXTo)!id&LE N_>#!$G(6BxQ|w4Fmkk3`^whc5RrY{L&r zZI_|IW34=eYP!BgFM%Hm2eI;1vqU>d?gyVw93!ikj#g`Gf*ZGEaIbdKwd*d3&ysAf z=llonr;$mW`jO9M!{BwWFYLLs&wB(h^tKyOoou90U#hF zpdkMX3U+K1_uq8>z9q|oqT&3-;IHc+K>womCotIql 2z}o>}D=|^Y1X=9qgyaBZynl_Q`d?4>uk8K` zQX>C52r*rd41fmw*Hr&R^2f;{^(!Gu%y#q^HK4~gCPg5?kPHnl71Yp*?4@4qId6n+ zOyy=e&hTv!tt~}nx>A}?CnjNWXRe6?cPd>Di{tNgKPy(3+r%-R=s14_-?1sVSxWSv zn1*eXu(jtzy1#nV#W1<&Q=j8lv8UOs$cmIKPt^C0PfdsjutlG=vCnsWnUXk7)djl3 zy6?o*-iPEZzK9wA#q=l6WL(-Gxwij9vcFJ`Ly7zsjQ;^i4z2WG-v1FJ7TWZ0RR0L@ z2Nhm2G$H~|)H7TG&mjm4Ru-y6NSmjNf31Ouu&_d O@P9Z$LGuO&f+Q; |6#NWGXwzJ{Ud(?oCJ>TA26K%1!v=r_Y+R@ z@5aFNZ!dq`By5n;UqH$d(&m4tBio}!6 DQ-+kJ^_252U@#-xlsM$D{g;J`)*erm&IT>l!N1OB6iUyQuVp0 zySH!>lgy@CGabf{Rk30qymo$Bfm)xYsP P_Q_`v9~*LI0~GfPg51Ag7~{0LcG-1^*01N++iH zuc7~>`=>;*|1Z*AmDD=?yF_YHsFM$n(f^}Nk|9tI{=?ApfKm(!_gB5>{p%z1cO&RS z*Zj{YGK@#?|Flrz2EqQP p_sFUzm60))R~{+$s> zQ*_EI#DC=&l_mY3QNOY{!NC5sxMZ9>`M+!Y->nT~xZB4APcn(=>G7d#+v;JXVN=qy z-DhOcb(D!uTFVm$BFaV9CYPKRX5YLJwH8X+^L5Zs%uJ&YM8!o6^YJ`~+de7EP_2iJ zl$G$;`%}IA%*EF oY> z$t@4VMZ=k%*YtFz*)%*q%rm^?EKuB}e2h}5yVc2bgg2XS1*z7?j&50>SDU?EXZO65 zGoA5uAFqy|_rHN3qlTZro7fHmK>Yp4TmHIP_S&YSwn2)=Bhu?H-c17_GhZ+E` Nau%Ly6J{6Ck1KvU> z (j&Pqa{=6!2|B$04K;NsC 5r1F-Kd&d5c0PNb8XRUn-w%KuhMi%A@uNR~1VBUDYn9UF z+%)CMBqcYzo*DMOUl#26{PcSExWDl@ULQpQ3cQ|9J{s~F1_L!bXm!jjG; nS>`MGDFHT@) nXXXK9M&ttEU2LQP9rzzOH>fShI3vM+s6cTDO}k z@t@m`>^uOKj=y~9oozooldsu%8IDip&Irga^VKL6p5pokh~C5ty4c$nsZS7ZVDZ!s zdMNM+ zyCMK`dM;5T@>9fQ(QPGNHB@DSD1I98LZJB&+2RnW;ODOVGo%FsM|u=qMa#(ogNx(& zu<2;v2okC!WY)j6XuYgT-a_@3w~P}aVT%pXn9Fuy<9N2FBI<62a&AG bKiRrtI;aWRB14HQAo;)b|ea4Nc-|=kll@VQ$ZXZ#t~l-d>5K5oCh} zra3A=o}IgUiR-Z|K7|K(k=ORKBGMaB?7i}C<2k3NfSjU*)E0REiXKbk)bXQ>vXNEu z==V65flNs4xcTI_t$Gd129}&AuvzRGltJx7@ewUzF5DdLw%42`6_ia!0j~^##LQhZ zGR&|01St>s`Fyt@XM(-Yhk}AM9>9+&wwP$3u{Sp%n?|`Y{TxmB@r;X3>RAX&4Ukwv z)2tVfRASE(D93i{o*_A1&PxZEK|W(VK>X5GKAfW7Ui3wAxvqR-$qB}_NrAf&HocZN zn XytQ2 z_)480%3bnzXp*88R;#pqil77mR>ng(M{A0}awfG9;=b#VujZx-!0qag3tt&En{Gz3 z*$ KOVy$4ZB`P(}{Y#KM#1HUc>9+81$b;kqo e$BS!NZ9XEpFLNDX9xjdItN zAR3xs3~fr*In0?@SBq{i;SORz6JsL^bEl_1lWg4?l#OhU`%4K+*Lxb6_mDMo-DW&{ z<62DbQIQoWOq?|xPq01d_Q`hL-Gp1}=%7|9e2P{G{^qq~EmkZ3)BxXtMu9VLNN)#O z4qE*)E2#Y`4E0`43H)*V<7;wY4I o2HHf#3HJ2LmzVkEq_V= z%31c`UMm 92O%PIUbsTiXI3`xXHJJ zE4A2Z`k=*G6=!H}iPsM0d7Hmib!+6{<{hBC+l(?TbxU{n((0L-a@r}ZuVrhY^+4r# zmPv&>NMNhP``0`Dx>FwSf&!;m$JE3);pi zmq~A4-no~i;7(}PW`jlfL@Y}4GXREN$`&)B58~aMDGu^u7bE;(;=WY^1CvUxRtOT^ zblM3dQa!6n|1w^dSZB?231)eWlz(bq&n$Us7m6^CG+jUrgERs#vyyYc83Jkk*}s;8 z^Tez1mwlVh0e-28sRp-$*?S-EDO~P3xTv48m*kdJZqNW9i&q>^VqD#vz!2!J|9)Jj z*)1xArZRR(gFlFy0|XV5qfrEZ{C#Z-y+cv_94BM;3ajKRiY8onp+(72W;dH0M)kEc z;dAc6dZ5ACJ6 v*ar_WRw7OUaV zw}pEOUc0u0Gj>fYBVHI#q*u2uT1=81{n1IMb738Dw?8#)5FKJf2!ob;RL`{{>Oq`e zS%W!+RFRaZ9W148QB7uUV$!xHKKf&5OM2gfn6s;tn8XJtH3{l>zPh{>CD0deR;W^? z3$bTALD>I;l+GowXHVGmcoNs~4Vp+CTuA%qIam%(zY(^qqa)933G~~;lAgx}#v?SO zjibZP_){EVDkaU-v)P!EaFh|+y=(>dhr%c^CjX=@{7IVxf+P)UwJ_5q!y_-B?fB9* zqzr|$=Jf^8ria3)W%1-$i`as %fDa={Bojk0j` zZA(QAsaWCbo-&)Hq<`a#y1}t+73;Da4=4VtbU{<+B*Eu>weU=8X4@|OLPNe&!pfwe zo=axTmsak~Id#$whr_F1K~=J7Eaw$5e$c2vy(6r^LH+?@57AL@|H cTDZoM+o;wa{t&Ahl z6DC9L{`BH!dW^U0Qr@+0P8@q9O#F5gIz4p>tcOqwdJ(T}$CXZTlCO zYg$9`Mx#TDxjE(@T|9XEoJ>6%F0ybdS_^5H8n-OEE~}$#@fmt3 zP{+P4{(cntp$!C<$=N)kDB)NE`4=Q~fhHxRGq?@BYOY ?h91=WY(?*UYTln|v<1z~0#}neU3vZ+C?leM%BH+tc9`Vla}fyGd$fj`ER$`bt5#Q6y !CA! z63pD@jr4IcPzW81QrZ=`V~)ReG_KnB@J0!~!rv25W_%>>iy)n?X9BoLZo8j{UAQl` zeI|WS`IO)goxx#r4}3X1Wdd%UsJG1yyTv-wna8pCLSFjZ(Q{Hm%k@#l?i%}ufdY d 3v;{M?Zjaok#oD;LU1pceRy$Z)!py#U!_mu;&mjUcG)KbUt|oC*pzff znW0FRHYhEcv4o9^r8pD)sutY@fVOt?M#y-za5T!^>*%@$m765yCYWBhupE-+yJrLD zkU$bD{|g^sP#;s% dYaEbBNtzM&iE>F!VD4E?I|5Sq zPa6Ci)@>0-1}b}O?;1Yz2rjO8*I^^MNUeyln&iHubrkM%h2>=%AuCQc(+u}lSPH`` z43#)&or 1^ASS!ZcrLyaX!0fQ6ybc24$OQB|j zMi}4V8V`N0wox&~KCCD{fFg! g zgIH5}{YkxYnw5HvQ9SPAHwmkV2Gi{HI@!PH!6JYbFeG1}oRD$`aZ&t7@XRT}kNoZJ zem(_`z0KSy?k*0nuGFEr_hLQCh1e`CC=}pXq#v)w9{Y@KyI{eF0}n#vhg%sCxfdR+ z%G;MbX`HO7NN18bn7(AQ=kNjg3-UFd$foa+gvGNRN%^UJ^pL5o)$4afE?KAE2Bx={ z0wl8Rn(znl3T%31+ER@Ii-J=ua2D}ojwg(^{7~*(?xZ02OAhZ+ACZ56;IFF*dLS~9 zWt#USGY{u0*t7(70a-KGCa3D$Kmxzyk4UB1f-jQR*9Z-)=xSlU*#OT)b|8AO@N+ z;pY`HYTyOhM;*KAaU;p}T9im9j`cam;U%1*b1!@FptLI!lC31l-rb?ynop7i^l_g- zbDl<%pyA!-T$G00CwL!&0Dp7popc^dBP_b2)8%iU=t_a^0g P*1+yY+L5?{ z_PVRzXA-{=3}idvTl~7;v gbDa22*>nT&7q8RGQy$I)k#>3x+};bUg%! zGnJ#-@_c %BWTiJB;M*e%G5afP`F-X16J7 z&~EBpIX+myeU! 9x+G4c># @O-9 wQB(XAdNs z#5$loaEDlQj4UG7e_(j1S4pFHFb$gv^#uqfg8@9~3Q7WW>HC!jaZI9M7Jp<Ng4A>aGka-E>Ccs}amrGpacPG)X+ z6{){IITsSxL2n=d%AtqkN|jW6rW>L97|;wm1AqEJ?Rc2LW7%QJsyH8^0Eh{%UP0~z zb(5n&GNvHYi>l8+VlJAuB9$1)P+K2`%90}L2 *bLU}<~+w{nce9dj{^JtCyi@PKluu`N3|`U>g1uY1 $rV8Ji`AKi`%x%Ek^xsvT6PD_Rz^KO2iv6tUZMQ z6Ka&26f>Wy>mM eT279Taih+ale|kab`LiSH^qe- zht-b@6a7vFJLM-^eZlw=7L9V2?VDcC|0r}#y_8L!P_oK^!SsdMRg;BB%9-TP%8chh zNIzTL;^xxITD9oYM7z=6&KO1OBVc_5@C*})&%fz^1$D8Z*Y5=ojEu|4lhG(ietB+C zY<}L# dhgrA=PE=?l6T!V83(V|{VLUw-URhPt(>bKIio4Z-4Yoy;Ts;B zYe%~(j7{4YN0g&m`WsxIV|7Su45(luy>usdzM S+g8NZP!#<${)?Iu+i}qT%YuEuS_Zp8)_E z*8MuwDG#zX+NMXn%sUf7349C^wV3PX`Af&*U#D!!*p0@jilTN64e)E(fSDmSEi*Rm zqcJ6RJ01F?^S8~8SRMKXwvTr#MZ^jhqGUfqacXl(I9CyH8JTq_&28$bDZ^;ZJa{e| zY3nsJbs@EslD()F@cb1>=ZWO(&TL}0Mz=rfp!lAj)iCNCP(I&3`t2rbvcnn_e)1WD zYmwxB4N<3YuVX)p5DF0_1wIuJ#-x*SPZC5-$y12Jlfi;w`9m6_oFJeYPhBAYR>Jx2 zCCav0z}9f9{l%NkZjastDjGQ~j&wm-GX4oXIY@RSctg&}nzQLzx{xc!JZuM~{ij U; B zY{SWa@IvXXS1ea6m-N-Rtu>1fOOJ!pOLzM Gg~I|J&!L^@Zd9g%34mC|LWhKvH;A{XEbMKEa>f%4*u;nSrzVDP^WV3#PTcv zrR X|t<^GneMD*YR zJD^puQ>CC|Ry &1AI<$kl8GMvFMqapZy zKw-K_L;~E3;XVopjyc@*i#ZomNJ}SuF+Y0CaVw3Z V !?eT$W&)Km&vJLCfO?n23x|Aj1h#pvt3%NuzR$A@($B=&)LX7@apIl8kq}9 zlJAAmko#Mt1)p4gz^FUIFQW0@(*QOF^DwG}tD`>0f&6wNH(B&S>q_T~b9bG7geFv- zUR>V)`X0mh=&?Z&_bOzb(2ZizsFsGz4VBYA71cZS?C=x#TqL*b6L#=P z9aqmbRefaaG(xAWG{)0%1OU@C*Io=h+cu5wEBvm8Flh#m+<7&}CY%5V` s l-50*UZBM2TL|&@O@nz{SM}g z0{61f5QxWWk>U6T(d c~i(+Hs-$Mi-RlE)}N8sQJnKhfmMR1z;ll@_`P$MFjHVT z7qP@`{81Cm;DlSi)VF?f;KOy%Y&{R5QglDlKq*O(IR;-?J$x|u$!zIl)l390T`*4T zU~sEm-rzi`PLXz)>?{?5hgc3(&^@=de@N)+0d_Op3t`N?$p|yACP@E6{`UH)&|F4g z{WVswLjEnf>LT28d|0l44=3Q=ZW)-0Fx&O>0F6oF2y0SGi0Rz^%USoKRwvTk;!MaS z@WXptFyk 7f?H$h%uJkBZR{SGoIfdrE;kKR1*8Qo5HO^lqSF;cit1B zLX+9aVz{9hUaSxVX<~UaD%e1%0=s}Za=OPFqg=`EdFrBH ^?*h!f}$$eP^if2Ta%Mrm!d^->;$PQJ2flR*1%FokwZG#MK^s}Sg zminppR~X;#4UY_Xss~7so4CNRrb!4W4Q=VUGrbhE{RlrSGT)mci>%dGJxk%>a3lq{ zg;*g(>_`G|w q8{Rw^-QS8KJ;85vop1E0qnMZ3Zg_W-nT6vjJ18?q_hi^skjw zIx$hQF}SQmZU+NGFvkIoWPl%fYcd4v-#Ac}rpcAKhrr7Ue!l>d;AV?{gHEpZwd{){ zI~B=AdkKAAcYW;J<3`+!q=o&>9%k8A7oor1ComT|zq`)Epi6+2C#-dgg6Hrq#8nyx z4;c=SUvr<5w`r*lUnf)=^%YSpkCKf>3!NI KSTlQ<+hD%s zZ!S3T8=nI=({Cl5)1(1kpy`KSp^2%k9MjHVYI-PZJ7SJ5ZkQ$JByAq`H9y;=4H+Mn zF7}1{vBXUnN6f__Wl!pJoJ%^CU+V-7VfpXnN`36Cq%SSNZg|{gO3_P-QP7e)j%lsb z%-UqTaL!@z;a2O2y}1v9s>7uRgc6e_hg3~H>f7fgr^2Rkh^pA-Vb_eRNaYpGf!6CZ zIIP9wuy1H+;d%TiZsWYyEmr-AADnL!6rLz+5J(P9m2jb %_r62v3-=VGe;x z?Ik^>gLB8pb43TxKuEM)CWUzoe;yMwzVtZh6{j@ U?@uBOOaClSGskxU-+Ry4q>E(=_+Y)=X{H%VQPocI#o=YVTMA zhBOX?JE~@+u94o1HrQyxqn4~-;&l(o+t9t-O+zL%x|qkd3* flsVM=CXlS27*L&SnoMw|J4VUfcqn`k9IR`c= zG_F%~o~ixJF&v9XP|dzz?H&d{X0GKyG(iR0PssybBLwUH@uZngY`}at+)EV*Noy?w z3Hp+=7;0)9Ojao@Z0CdyvXb`?P(o6F9e`7e%+3GgY%fY-zN&kgx>PI$QE;_&6l3-c z-YE{S7BX@(2$vHB(>&Na+IbY9;q;Kd7<};Ruw)wBylC!!4NfQ82JgFo4wN`U_s9TF zU8g0ebA0U%MN^3qoC)zSx92n|Mzvz?bCIv7A*Xvm=QY<5_ol^Hz@&aMd(!2C8^7Ta zhFKm1WFE6i3wI7l@-^>lpS659?pI)UnJS{q6iUWU8UE}W$Dz|(=w4HxSI7ZQxkA6_ z_uy2q4zq%txlb|5Z8S!g|EyU&!mb8ReqHQfPw(U^kQ1-Z``V|xtnkbjt5=#eS4TMU z<9i;6*}bnUTzj*gZmrBz6Fs9DhTh =uXy%~ju>-hy7f7^L3)$683?URTeNrWX+TmLywyig;X zY@LrcUKF7wwni@F74fy08V+tS_AISa0whsYTUl6n^1_UfyO)__Sw%m(BQC=&jO75` zhmP )p-ncvxY@TT`baz5o{#Ybp(!-`?m`tbK*7sf%kAYEw z5k5KTz_+BmstabDcpzf`xt0#tv{zXplNf!FpfRPAQB()&V;R$lOrNDE+AA9ex(`MM zeuPVqWXZ|do<=06j}ShLeBtP>qY*!T9V0N61g}Zgb+HsUzMDsmOHj5d$(zWg_{iAP zQ{=T{X{+M?d|CUUPo+QEz1iW!YUx8;PtL#A`IH88M%Of+q)pRpn~V)iC)eaX)5*3< zoyeAWR}}KNQ4~7A+z~5+3i*otdyqczIoXWpFmshQuMK`_hMb`=+& (G^ytsA9cV^@ci?@Q80-4V`P4 zzFkGgnWh_@Zuudk$e_z+RZwY!O%lTz3FGtxs(Rd(9l-3GA%)}VyoC^IU@uo#vMq{8 zEYPji2KHyW_OVv=a$DwC g+XPIFE6mD cJ#E)p|SgCJq5}`}dsC4kr zZg`DUhy-C*yCdxaQK@5iYwZq&kEvky@*0sKb*@vL131yat&e}t4J+Ym27T3%VW+e< z%YPQzD|hxc%dJ3ebTHD^aw$M&AP+K`w{%bUEnSXXvu@~FVZ+(#$ALNbeIEa&mjezL zs7kBm0S#t(!Kmz0=qs-@aZEg%nLD+$JV 4a&TqwX@wiZn_sJY>#_ybHm_B9_)vva)q+o#>U%2O9_U&bq&H z6Vp);gG358<6VN~+kk^*0m3uo!5YjFU54?Oy@j_B0Q6V%2%-jJo6N*gFUEa;zFv{| z-uCL4O-x^b`B4qE!W$-`IZn9kL5dO|Ntz7 8nIIxS*V%Rbd-iBw*v*> z&Z2<(C3jqD;=J9YP~1IU1H!JWvf>m0(Po}QeCQb+h>jp!sdROW&%*8#C)-;X1CzxR z7QD*5%>#PIPczD+tk %DPae1wYIur!dosbIWFu&rlbB7wl$rA>DaahHi zGuHVIq*&}J`Zh(cC+i^6&dr8ya=3B3N;mWk^Q9H_0ui%#>L#Go4=P(%^DID@uzrBs z5SNDE2O}LvLlRoGQA!7MEmD!fZbuDmLplHi&M#e@LF3IXf*6Y&MAJjlaVd9);8YP5 zg0WN5lYVr-U{7+4 gkeWV=6M4cH!R$H7*eDqv3S4zPj+#EaQ>PW-U};KxsQ*NfKjAvP`%h4 z;MQ+M&WVa76psmlq4w!pl*Irlzi@Ox2%n4@dli=wf$;tzG2hdGaEsQLAdv+8?;J$e zB=yS_AK!YIMKi5eo4|Hi`2yD~1U{tup_0>2R@Mk|CBu%K7h35&;F4K);Kb@*9W+yh z)Gf~IdPsS7_^7w3$qenErxlq6?)_w*fukkq_}j()DDQGLw(-Y^mnWCdgUv{Ufo&A4 ziblb_(>bM-r+Q`eL7FD`lr&huPUpkK4#b-%&=;}1rQYFOmOe)+->miS0`{ZZm7H-~ zM#lkWO8v-%b0YzU$ywMoU*L<|rgFf@R919C#$F?sz!`WVuM!Lp7qmQYKuG)KfgK_c zbbDavIbu4a+pVbR%yf2TV4<9Bswx<0#Nm%Fj#@aBQEqTx96tdPWJG-G=CFynbu7dl zn5s6SPhgtw&c ;C742YWS*o_f$ zpy848G))9Z!Z7{!{J#vV!=MEkfgn3 ~;F368DYcP<*Ak;(Nodns zJ`(4;Y0&AGLNJB*Co4THgI*0Y7tK4n{RF4R2cm$_#0(YaL-C7+_|L>+1E&lo`@a2d zG4oj^?Xw=DyKaQZ9++Dll)FK4jnOWhj6C3tXbT;Y8bz09r?{*XLjOrC{GCyf{%s#N z5ZXBtlACGy9Ff52Mgr28x>zwOOd651xFkpPPGRO2vd#&rSBYE0jILY=u3I8q35GnV z*7^aLV#wde9<6DYwgzM72*_|CQa@$dXPz?42KTBCMSR9TEE)L&D}?JvQpA|007OgO zo&qFFTRTHzsw`1%a+<3Do0{3i8+bmtYW-DlqbcOYo^ft@!|xXmR_YImA|PVF %DUB z62#j^yT#g_4Y;^zG_u`$A?Td_kOw%|Kw(=R3qNvPfF3Ueg&72a2!+G}4`Co;6Qnj% zk0?sULN)!@(>#o}tPhw;<}NKHsD$`U(K;7pZ{30AqA)}dDy;|lkz^V+PVTpf$rW*} zsi+fJd;Bds=h%kFa-gY+Id?0HI+Y_rMgfTd=>ihsk7e@4N)zzG+j%BwZtRc?JT7U_ z(!+L+L9u>Eq}{YVs>TEg_EgL#38mCd;%%QMcyoF9`;?uaAT671<2|V$Je#Mv-umdk za_UfkA3u(l$8(XS{B(~$!&Zm2!Xjf9KUNk)wzIQ187Rdm570;*G$!T;ADsY6mkH%- z3{+%~*ia+i1z}ppnlCL3cH*SkCQWh#*$jSKisJm^R{7MQwQE8$BDsq?nw!NVo5(Ug z#IOY=M6`ROmV*{`x^hnkSwhb?+4|ZIvAI;I5|$wG@AY+ZdUoIua;@WKVYmZIro#OF zox8}rM>e^~^uRK`u;DPfN=8K{9x>wxIOg8_OomK5HaU3eX;`gQ!F@+hgh`l34sId@ ziU%B*Q6-qq4{pWt=9|@HuRCTfyOL>T&FErV6VVw}mtzoxhM*%07kK; F$53;>tSAg#CqO$ E4lMGmv)&Q;qg` zHQp%uREIcIjoXg|$7r5miT=6J5xl}1zpr+nohnjIcgl^(?NlxpSWMB6++}Ktt1jPE zGFuhFxPX&EZ=rd+$me`ZM$19rp-mb2ZdWGQ>YO}hQ*9ZBJ@@{RCu`kr4MvRifp!K= zX~_+8c;aFaqBsBA?YI4sR=I}Zx-|BXyKnH@>)Q>ve`TifjN;&Y1n1PbJ1Ca)@7F2J z*s**e)ze%Z?Y$^3L|t`9_z=T^O{Ji>U#LAmYT@fO8(34Ay=@I^DYoUNFP (kHygh>cB8oj3fT>LTqmBKWQK7lBvzIQg zs@^a$bi%X*1tWzbq2`UtMow#VR?ai3e=3Zm4T95o9B`a;KF)k|2=OH*^YsOq*bzIx z%--}YT}&Rv`5ANsu(;{UUxSF 1Os>D@2DwZrsH;m8Dt0GBj3g{XjPQL1R-_fbckQ4LkPQbRKUhXJ{+N7 zQ^YXuYdIMZ0L1rbc)Uk7l;v |XEd)NQaeUPt-0umWA{IHmO#}S)9On)d^jaFYC}QZf@)C4yR|-|$A0TVe6p5p z3 T=K(1tV;ofh3on}gs`2s$x-D!V#Nj3LEektljSV)a+-)5z9Oa*G?kbSaGWjrN9 zb2#VYXzxn5qk-+GI4YcPfb 0jprJE74Be5_u?fK#qzej^i-BF z6N25{u8XAPS`hEo3&Ti249ZzJMNe)tf&;_wH(6js8k(tfonp )@rc89QxM@_>a#pMvSz#J)x!Yl7q^9DXgSi zXlFFt!z>> dnu crX=ZoY%`o@>L0I*ZKoUPtbKLqWZ5>K8Ci{apb`7 z+^^NOAm_TppjW`UA=rLC`@pVR4ceOn%Kh$TUg;wk;uAiASS}TK?`>d3I|^-uVJHj~ z=uC;;@hdY2gm>(16>;3}N*7$qUoFrqy=T~LH$@86$PVW`Q#8;4{e;2+2<}ieMxwrf zxK~1w1u)U&i=EI;^f~1}=ym!w%23{=O(+0%W>*y?L*_u_K0I8>9$7*mIh_?>SG$Nk zVV0JmGTYma?)tF#j3JHbI8P-buGON=WP=`-PG$wP+!{CRrK6L6B}Z0Mi_(>FXYb%c zk#w$<_+RsQsY{^xJNq0~pOvWePV!5G>%vo2vasKK8?D`ROsvzn2$g$?SEFMkeQY(j zf`xH4D*!++?gaj7c{I}85dkJS5U|3e7-Zif+iPW1NpnXnwB(zg3DVEDW5pw*&`$5k z$Uz-(&-w;WC=5XvV7iB$T*Bj^C3*QZ($AK4<= TI4kt=SBLbMFCw ROOoebE`g>;?3BsDgxpwlbOu7~}eYT&~#P#y1$+E@GkSl_S z;X=Tju#&6a$mgi&RJxF{sU8Q3LYMaLbgI^6FL~e*{BKckXR$l{ZUDwWI%PA?{_kD` zy09e5g&r=OmNvEX730v0OJFfKaje#KKQ>O#x~9!?Hz=zBUz&Ztoh->zvMbcgiiN6Q zta5BuP~_85R`@ ylG;|Jq(eSi`UIs`Fdi7k2{n?1vmT0B9ILz4Hb)$UX;O&R<%;P^KZUxD?$}nF< zZS|1S#mp+5T^AG?*~=Jo{Z9H-jutAw0+m0J++wl!Yznpt1!O|AfL-7>$ET0@`lvY2 zNZAx3V@+VLsbF)TF4#FsPxY QjIdR0ydt5Wmt4y+cSau72rz+m(`1;xQLc9I)CPNRrn0MOABd0~Y-Eqvx zA-UD5Ig}M{Br#Naz3#8od7psa16l)sup5qwTy5L+Kk|V0gnNGW3rcMT8fP#rh`2`x zADoMvU1fcW%n=jWMv(ebhZXBz`kkR2gJ(2|UBeJ}gBEhFlbw*JskS$MUX;}j4nfxV zfEt$XmrjqO#EXZlZF|k0Di#JO%ulo}1y;@BKt1zGTa;K08)5KiRR)Pc5Do!>Zs|+Z znc~&N<=XqC=^>Yu#J&$a+NBR0>#zWQ)eR>&IF#<@^L6AC<+Rkf$x{hZkrYY-fY!RM zO#Yv<)<&@9xogD2p3~Bx6|5o=%vL`z0LNG)MJe~WIRg{{oXhp9R1l|${S&5evCi(f z8NXz5gZ7!+C9^g+>ho_br18yw%EM|a-w$y!#j&hXOaoP|inh( TAM0Ulaq5JL>LyPD3+mYVX>*Wx zGc*~5;Seshzem!omee4Ylf&3q{8=`BKAH$;v?AM$Pet #BRj|M;fgU_!#O#U#j zBawZciU}!$J-?9;T$?f!2y;TX>p}}oJ|NG4Uy`Ql-W66TMB=!=!DkdGb)BL)3S0NE z3$Un@HDESCa4tzX7J}^y&5`W!OokT~o&DjA#2n0N!Jffd&dV^|$tNO6q9IcVR=m-V zJ)wDnmyA(zBMHXKDTm;Z=P4(p{-fur;-bNUby*5o;Ke^K`N_)#m=>9@A+@~dOl5eI z@=AWff-Ou8DX!-RL53h!nDXab> xWq`lgmkOOtA z^{=6bbniofVW=SkE;b#f0jvV;sEg?oEYS!F{0{42!ZLTSY #zE2t0leC2v1L~Boc1tcEN^lku^ zfFZ)Q3Tl#BU(DDo*nF(R+q_Mj+}l^a%lHL#m647I&QvZ&AmO$$U>%(8YLon-2LZ|D zC#*56rZ(dwIB&k}&yHDn65;JE3^}NzCjI@xV-b>F#C^~U#^e|?$*H3ZRCm*98D#M@ zB{TOCQc#hxq>>6^5CvrVLW)zw{JQRH@<%F h-dv{ zv)FoBYYCqf;GRvaxxs+RF_M#SKBnN<)OBFM#aZ5_!{id2WFuSn*0`#6->6=o00{wY zZW1$C@3pJxOarLv6djhvyi0QqcUnO(Kn#eQ{r4G0^=LcFSVVyx@K&f&eVY0w!|!Xy zH8!I#`rS@w;jV=RNR`$EV@1 jpd5s(oeIb{iwQQc6!C3 zT9~2vyY^rK7dctwcGF8A$ouf%g1Q!($ilQ_*}mn3-cJwc_TL#-ijpNwAV8{lvQy5J zhsh}TL0#aLj|i>_>*wfV^R8CN=8cwwTtb29BGIg}k^OPzcQpankb%N^s8g(Lx_Uq- z^e9}f%(Fq?+d#_6Xl^#GSrWUJREDwue$R3~2>V-hHn6_&Eorc>Q7F*Cm*3gGM@-l- zcI7nFgusOn8Lqn&FctSHIW?V1@E_I!#Zz#s1-HI^(5iwh2!ujI)8>_!EXWfq5yHTD zwhijt`1xyrbcfV6W)jhe2UwCeq<+Leb91Bn#1Q}f>XOrh84FVG`V(MA5Lpsqy^CtC zbJuFEBcjy(Z!=kfR2FH=1j0qhD?r9JgZ}LqpBH*hW;lM({ESXwNd0%-os8~&v7M>{ z)s`U0oQAbjmmS+~1SRv&v|Wq3RcPRovKnnUWT
D4^Lqs~Zzep<%1xL*0~p?*Yb5FNJT;%luz76#y9NS |uPJ}$;^3#H96E7}sP^Qqw+K< p@(n?8)gc8EgjS|Wb(j_S%-62RR2r7+$g!BMIi@Y;% zRs5~HUigds>}T(9oY`m1S%(i^;K{7Df3FhUE+4))^iG2V$C@qU246;!jH>Q6siS&+ zZ|lTKA|-Fv4B2>5p(WU pJ D`~-J)+=wypuo;Dm=t-&1~s4ig>TNy*N8tS>SMkE ZIm$x>#c)U+@PPshKnu>ZCD79e27&T*PDkI)-h$o x-gfDl za51H&ii?~yOeEihfkna&bq~_i!=WsRRQpC@&q4{jIoR?e?8pvIqhV~Iny#`a<_%iV zvmH&LXy~uGcb%2*bBV4%eEN?2k2p1AD@Zy8^z3sZzRKFPV|7P#s@{4?pU|}4Ouat) zT+0x{w-rk^%0Vh?QqYs|H7{FVg~z76HwtDoriej#upqLWF_q8kcvL+5+607ME?apx zj#=OnDTlT);ZDP{*|0mNj>31!t|9~3TMtutI~4t 20zLEe76v(sNZ9b zTSg?2u+u^5NIk~t3?b~Ceoui&sp~gc<_Fnj&u#I{c) lC|#@{(@d?@N_qAI6FUMI$Ar_aGmnZcnq_g&A6-?SoR=?FIoS}y zlW|RcM5@~TV7NFg)SsP&RLgZX3AsnS^phHMY(5h+qG(nk+T})K&Kzi~8TEB(Yfq(r zv3yq?aEy8m!3dx`JLLw1>{TdQ+-RT064#t>gUw{EJs3r3)I$swj{E@;1QE!}9EZZP z>)oWe1-Sy6X-=ks`7+vEf^jVo^+mZ(`lB*S c*2X!Yr4-alP+KCWP3Wit9G0H?}$ulJ_c}Sbpa< z0OOXC)(RSZ^JtizUG8n(tX^g$a)9T1lJ=q(!@#1j*j4e#nhj%x_7+9gVFHCp{zFx3 zZ1CQjB-{OV$7C;WZAd^&$!uU~_6bFLU&l$OIp)MsVHCvCe4DnNNW9D0ouaW}!$f~J zlgIY`R=n!tTV)?HxONUDGRMoH#CV|(LSeoipiblphh((Gc#9gu$2839ALD?9AosD% zL#$Hf_a16qZp++DMH0Bt#VOfe0th|u71f3g!y7obl9hipu;=%jDBNJD-#%S7#xi?L z621Qs@mgOoRf{&~M2>UdFjVNOF>Mk|@|H Pe`eq>G1GTGM#qP$U^GAwyq=cz{LiLA}M3fvl#1AzWi<3#Q0NK?_Ez zfyjGSbqybN8@ej@nqq^VI!s3wWTtmGOzRL7AX!Tr6^Dr;L+<#Ons8TZRpP8vkCiWn zB@tD8@P%NW4KHYAd&7c}%i$Ef4@Y3-lu=ACxkI1ZAYC-X3B7|W?+w;WiVok@eq}qp zXN?n9bbGo?M8?9}c?K-k!&ik7*7RCW)J#wZ7n_ThxYwul$=wiKcaILr23deUrrLLE z$8n;B0rlmvve5`g{R}ywWpdh7Hg=uEi@iSj58QR6KenC^N<4xNCpGwE##?uy3- zc~VO=b}Gy3go-?|BX-8`TEWR#EAg45?=iwAJ}xz$6)_+rDGddYe%GQ8ySc~@F${Pz zcQ4Da--k|59-q`P_StsxJ~8`?gvc1cpxEcr5*DY%wzb5qNVi#+a{Ko15W#D1%4TXs z8RF%}*s@iNoB!xTEi=ldK|!rBSaraf1jplOfGAbL=3APyr5_K*dHJdD8d>$KN2g)& z)6N7 0vAfN>t+o4hlp)%x p=Ybksg2Sy=3GO@Z5a$=hPOw<*_Nnxsq^=2-nBo* zWf7=1>dIO@9@g?@6d}^Ccv7+5##w7!GYl_`m$+?+P Q zJADYaZ{YjBq&R%ViGa}0(yPoV 4{MHbJT#LP{U3QJ|ouU!K_1DCzg&mwUqp zlx2f5RvDq8*_{>(a2AZvBQK^-Q~n2%PfK4jWSIm%r&ry-D@SBb&Q>N zHpX96phxNZY$OOoqj2PIqi?4?l)5d%w0h%?98xrhH4v7g8z&+HbCFqz&FP~g&{7(= zyiTrhZASRn^U-ccKv$litRbb8q2=2Ut!tDyaQT)D{Sb>r$y z{!qrc$MD#Jo1Dsh&lRx3>A#UNGvN9IRsg~C($T)QtH~kiH!9$=ip?tlu^be8GZwNm zQfxZ66d#b>LYS*C!LnEhy>sa|)`pRtEipMfb+RPaGVT(67^2B|x_=9&-Cx|Zm1y*d zpWSpoK>tT=ir7*ml`NZUb9F!>lYoKpxDrk5uy)gIsnjL9H*0I3EMzT2*|3q>y#yKI z?k|0q7>eem;=j>E9edWM>G*9%?&&RHIWS*Q2r1N;dx2?4_ykr3?2`8f9)bGUWkjB1 zpJWl-w`9_vIZGARsQ{?x-q!!8Nwy)^{i7zU%&RCX&h;Y4US`aVOmNulTeIR^S*GP- z+InQD3242p_DO;Hv%_2Af`v#rcCa7j+N*wVt*2$=L|<~&5yQtIC-Vmz@yRM7fMqG` z$P(h6tWeG1ubeR4lpbb%Q( |JmJs~bKzZfGXG+@ITvWLfnEGL_Y3GJ(?TNF z32B#5uwz&ePw9g^^#l+_u`k3? T?#Gavo0D4erD;h_;}bVR&wZ3`%aR0O}E MDEM`X5Q;LqcGAD{!`8mk9s(g zwVj`i$?sv0Dn2x6qR6NUvpdc~z^SC)h%<$D-g$7-ioEISne&FBlxvgpWZb^72e<6D z`;}N8Op5)Rux{o(T#$MNZoP!?65xgO80LQB%cCMT>}=&qVx%)usPaLAxOq2y=7}j8 zL1^pvP-3cQNuPW5N?lKItl%^DH~1+m6M{)=M4dSwG4nQc>HIt(8zLSE;pv)<`4 W HX>R=-h59*oTcVmyIIuiwj$r^1K3` zDFW@xGuO)fFg#6?t%7u&iaVx4%H|_+L-=z>CnHZFt`_%(C(C1khp*F+Pt==311z?j zOnHJtVg7Tf9|O|#p|>lQD%OrRS&WEgKG!>Uv1wFMwOTSg#A_BdVZ3(mG~6%kINv{{ zFNQ%nL|d1A$*V9!(NvwZpV$rcAHSn5&}Ki|aW5y&WVY06pa}BCFP?Z$VyT93({S$| zSgL{GopiFRVOdni>@+l@ip)tX!Q6pW{y1XbN3b+^IUV27{%ii<1)w5E_P40}dnEwk z8b<0@^s`i6r-k1GBBzrz%An|Vo=ltl0Xv*2Q&ES0KxkGk;mU~%@y);2X zEA^e{8T^q 4U {ChsA_xArQCm zatRm>PD6!A;Ft1#caGEa#|>l ?yXKYT75SIBEHZ)!AODYy0MJzlM0#KLu+HkD?<~Ti)bTmQoN{cgz>r0lB(lSxhoC zMRp`vh^=vTWv4vJ`L_SE=hK(SkGrDF|D;sDa;BCfmAZS|BTs7wi&m$AW*~IKI9gAl zWulU1{f5=ird!6W@Sr0Nbpi4)m$H7cf%;@xWp~<6JGnZQCDn?GkM|4p=aqu=WK#r; zdvnmc-+UQU#^H7~L7L|1p~M`w{xB0}ou_PY18dmH$q3K$(i0?G<7`|$UCXKkVCvm7 z3yPw;VGuv(c)Wam-=Wqx$DyvAr%NGAhvcW**Epjd>EEfq%g~w!`K^9AY-6nrAeDVU z$E!#>nSzazSmnP)B$8x+-M9CpYH2Y8c3r2Ac=5WGKG>U~ZK0N2yr=VNJU&+2DOC`d zAXN-F-CJFRU9clHy0Iy2@q!Bm>HE0ckN8*;KN1X4=X#wNwNG!+kFC|k#bI1FcY_fh zqrGI-S>( o#+IEXb))pjWEV8#1 z#xs{1>2=-r7IbRQ6oyvQP8Sl#hg(dQp )T&?ru~p;#&LH?N~l e?q; zO``h&wjdcM&Fk?@>j8W?JAGIDdkn#8L>OVD@-0*I%|=eGAd;(owrzsJZ7?n+l{!4L zX0OniuY`uBj}8M=duY8^JwY-VYA+T2K69UZ3vbzKY59EOliGE({q@Wp5}tN-9YqDx z|HfK0WXmph@^d|;pTz=21Irjxxg&bIDDc6MhAjN-`1RMH8?Rv}{Z|D(lsUl0;Cu4< zE|g6Y_Jd+7H9ruh`J=~kVK7+JVC!)&Xk@G95$t%=LG@vDpqXKkK+EAa4BB<} nrSVXZi%`yFb?t^V=pp8wnt_qMgo_^DRmUyAOWf((LWAoBT9w+W*s!o%D{vX(o{& ztJ4g(XdI^>du}<12PnMO>B)io&y!Z)UZ&uKt+S1 mQ-yfJS*Tg7fn6_|nTd8nOD?5%Ap zyZUr*(&U(bW=dbp@EMiuoSNfX7OZ-0{-$wt-@15axc<@iS(xw1>QbsW!;kfJWWjfB z`IcAO2HnXEBzZ8ev!9yMV=0JMbKj#u*ps8c5r;FvmxHiCCNzu9?{MUd5RFoVzgm`k zbQ1uuw!t_@WL{wX(EPa5HRE%#+%J9{3dqN)9C_rS!{Fwh#B>v%RnbI7Qr<|QA``-K zOMtC9`>mLOq&!qafPwQ0?R>t2rIVeb)jd0BdrS1nxOk3Obe{m zny&eaZU;1^EL?-Hf`DvqOgEA*aDBhDS_}-}D9K-#yV^w%@C@hgAp|ur2bcO6DON`l zhylj@&54C)K!8`^olHPB2J{Rx5%yxnMZzdptmHY)6pjS}Dp3Ezie6p>#lVD{K!9|d z!YJISx%o{6C2f6Ufm_CS=af*i<9}zPwxq+b$ADY%1L-CHpNW6L5m^C5s3M*JTsu{$ zICn$;!~G}j%al`rOYYnN3{3RiP!4``b!VFg{4S36ZtlP0_)~$48lhSauV+RDynqQO z;{mc0q9^`~Mup?D0C_OPvCaiF8
4RITRrit_4Nq5>I$O9nI5ZMmOLW!t`?SP;gJlb0{dh6@|^j*#2XI Z@op -@O? zmN-!mW!y#^qb`I51SRzHqTXC6Es6HrlyG{5?y`1-);OUTS`6EjKbioBjSzZRAYnj| z_RlaFzQ>KSOlqSw4NO#47m>U1phoQ+&KH6=^8gwCNIPgrFYH2+;RVwFkz9CD65z#! z)PVZqJYV$Dd6DlSFDl=?lyjZf&Cc4<@%+p}U0CN?8}p&;w^GmLgoYGq@r%Bq{g*q1 zIvpf0-zp^j>eO~R+Ru@ooeuujkG^UAumATA0Cl+i{ehoeM|WBs7u{f#6JEiO`s6fk zpciF_w}ODUa6$nfDLUu#n1uyUF-K#-g#>|oa3296$!{eKt=uQOP*w$i6#ps$816La dK?O$i78l83 HFF5v)}#fcbxO#)EaAj znEyFy%$mPhHO8u{utV^KJ@5opoOfj+DV?5P$={&AK^0}dz+plDX*uo=iL&4RC64}e z__v4-0{!>-D< 3*X7g!&jZTgBT*Bs=Dkg4L&X F6OgB6UfM zVTspD%#C{;!D$sLj@o9tB@<8_2_sCRwhYCufB>f#!cd_=tzkP@VT)!m>w_MGJNcVV z4ufZ|UxW%MI_m6ZtOuI*`=LFJ!@)K~?-LoTiQ#Ls6-C~|Qzp6NeJ?NEe$FhKbt_F~ zOdxB`?1uVALjil|25u^!n$k0O@#k67G|`QrY1YAYq1I^^3MThe^wt}=q6`%DpIP!Z zX;2W55da9tf0M!TaNznEqJKWgQUG+Ee;EAp{u|Q&BKX%Y*&Xoh|3mEoaQ+YVzX2nG ziNgP%bdwFhsKM7cT7;6L!Q^nt3L5R){s!>t@B81ewf(CwxZwY(ski?so1|3SWJPeU zfA#h6I%`Y?ZwCci`0K3%DS;#M*OTu5i2r}Z@Q+##srj!8`?ty$H;LG9h%7$ap)jw> zaZMMwnt&`!&kJhzi{VF;q^Bpo-dO&t#c?)k`g1rU3W*G?af>eJJt>8fS;YLG6` z`SYhsW4BYb&9ug*>g>X7R#Xno3#BZMOS=4_vibVePB$~-)y()Mjupc4C8yNza-87r zPfR#Ey4NB4l9T1y D81cjjBS&32ne`mz3jMGv8 w<%C#MmCBVXs5fwcirxx zpr9Pp?u4Z%)RnHo_mrtF*8)?^i0s ?4R{uAgbrrU>{RM5Q zA#pTP63jdhH<|?wJE{MobK-uS?FGc1BQcbk$z%AgtdB2Q!}my$nwld^bQ=E&*I4Y7 zU$jSOU9E9uA>y`V`)X`1+b%=p40Wvik-v?dE^m>OlWA$UeAy;>btPOn{h3D#O7|*S zn(uwMtr&fpHS7-i{Fx%3lPweWBqDwuYvuQMRfB>iEI@nA_={%$f8fDDQ22iV@XsLq z5RCr?;NOG%KL8;8{{UcNaRK}n0NZftbVF)T(*Ha6qlkx~$-3dl$;qhH$rC8(|1oWn z&ry#4!_c^aS^|Lo2a)c7t>FL6wo(j@|MY^!d $z=8%*ByvG<*n zrCJe$hKn@%&3(IzLu&XN?M+NX%t0p+QOo#R?u@g^;*EjtgTqh#oHJK5ljPc7pi?`3 z&--LF5%6Wu<7)|+|2wUB3d-V@pJ8cG>rti&Uv@^n&ESiHaUV hg8@{gmGO@p~}*Z*PAxT5T5aQZrs^puURK zA>ilMVyAcGGnG~%XW}=)9%}>Z<)<*Y6Kku({68Ld@-H_h>^&k!NIY8*dw9={4!|t@ zvwGYg4*h}SaB8QU?3Z)gFBP=O`%^ Wy_`C0L*_fZFDDv54f}Pge_e4mn&I}= zeEPe%JOCi+8T7Yp8n@ARdL`{z)FQu3^e@r$zOI-MCGtxZcFsS#r}y!D{GLA6qOIDy z!`g2V`g#S?c2&%3jl5O0G _dhop2A>CTUk60J@AuIj-nV;OL_59jx5ZzJ@i+Ei<1d5pf{ LElJ&V`wE4A2N%RFZSybP9aEZhXPw_ITu`1695OgM0kmZ$}${_V|7c zKd`@0xs?~GnY$0K37>FxF5aynXYtZUvn*PqxAXg4p-gZ4zMbo6$0uzcib49^hpQFc zzjyxpaLA_&ZmfLqW64d^f&4W%V~%f+6bh6-m~BRk%U39xPJ2%6+B~~lG@V{NN3W{g zgW@Cyevz##Q)-vO5BL>=@x)N+X$lzo>D8{} Wh+nw?sQAl{Fzz> zUN_q4tnTE)2WMMWFOqs9lm%Xa70lQ#(Yi8_bLfTpaj8+4zJIP>?p~|dAR3upF99vE z+~h3b5)xgfh(jSP)B{bD9r%41eeE3;rC%;R=sNs5)=fFsd!4*hK+gCMki!}&r(-`i zv#KO-Yyk`(OJ%k`-}&62{1#u!7GIxKJm&OI^4mlB{fF9Hi3C_?MrEsYM*JWKaKo!K z?KIPg#(q)+7p7xzg>bUKbC1xJq5XBaP9} z>RC 6^wt1QqvZ zhIY 3O#178t8KliFlE-*gt z1~qOzXMsS^g^*u{zqb#-W#tK*N zN7iP_KH?|I{>n_8?8u7(d07#;vDZtIo9`FNi-hEEkH@*cq)*!0IU;GWmGJ?$kEd2~ z*zil=3xrN7tgGfY! c$Kw@(jgjRB{e0_fj24G*!ajyJt5)R&7gI5Pp2icA zhwp!t>Sgpw@VkP4Mfb!=V>8#dbtTQqU9IU-Z?zztpq5m}96#_Q0KM3qmbG1us$+F^ zmVcC8&`K5&!35Z8tZ4(2U|sepza%!&S?KNFYT?k#!XVm7aJm;{mS>k4_Mkb?Gv$1o zRx k{49*R1{1>J=IQrDfaOIO?odGOb_I_K>#{blFsx_=f95F!+VUut zPciBP-UC<|X4gKpN+LH|v!j6I W=sKkYTG2nm5wp`;>p6Keieo8C;r(oSFl0 zt<}Br)_4Y0`*HIR6L++F2u_=~dzGXrU%d&5UFm_$L@2wcB~bjPHBahn44cvTXBi*( z8|=Cd<4H7XvP;&B%`E`}6$HQ*WDX0jFA|3LA?06`+zjomy4{^cM|qHv3W)2M&63c^ ziA?ieh|$4(u2A=t>(>463A8ww>=CMFBizcAlwlWouDWuUxuX71&Vx3vs14yw^m7h* zc2~e3r(p1HgtW~aYD_(4mngan4Ww9SJcMlFJvDbD@wZB%ASrHn0%J{c6xEJZ)fZCY z3{2Jv({3mFPVt5XPsf;fF*m15R!IXn`JwO_CD0s70_j-?gRbz#^Nqay32`<{jwz)5 zxR3YS&b@<;X|f3R1*%D|7&o=YIskK?+&o}BgmDYl)O4`CZvG4LwN=!TEdz9VzSJ6( zTd=M Xbt%paJU)g}5R$7)mpUT K#%?kfOriFbi0nCmpp*Mf$)c1n)&z6lNp{lg9k(rg$e#|h=&atxNEsS?Yl#A zBse>CMU>YRUDz%G5qU)4gmTe&`Sr^n4~vux$f*pDxgYd%>AhgjB-DUQi$)`wnhLcC zWR#n!!dYO^3GGl)>R1TNsew3qca+kZ7b$}g^5t~dTgRQnFO9Q`NDVP(L{f~8bv?N_ z0cemr*#`9K4|&b4T~z&G&AZ4F33X~S7QyA `_?jYuS_PDUL|<<2n)*cZiLx$#=SD60`OBCD$*KuCB!T zjrbKmAAd7}HM_yP5DQP+8LRuCfQv`DqOG-Z>zy=?U?M=)?{xqZP)l3o>W@m-36v?# z6Uz$?T~sN17 lznhgz<3!_c=ABo1Di+WmkG zac5->vugdRc;Bo|auiXJO8bh>s0zb3m&bY})O_&mG)uD~&nCf<3(UT#-JVO3Ugr-8 zXU%&%%jS0}J;`HGb> ra<=cOWL;pJIS~~H&tinWt94Yf^_m}QqQS%xhU%-n+8nSRW(sLhI z4a%NHmy)@# iFnmH6>E6| zFC-;|zIwUeE+@AvNm|D|Fe>k7CFXQvbjg+7Q}5bPKxD}Ws~FLCaV7@91}u3@cc@wa zETmJxanCHmE;9Agz#h)IaWl$lS%m&*>O;Y!jd~V(Bs~5}8)& tsmz`@T)+RQ%91P@rh sP#0Ohcq`;AJbGx8O>p}np!|4w=)KI)2&acgLT=jq5M)iW#V>ny zj)h#BQXv8|zf;w( Dg9dUc2`)3U8Mh_CJop$CV=!~_pT(;e)uff vuWqL6TD!tx~%hq(UITQrym8TC}K34|&%ciTOZ z 7NVm_^9%* zwjjEL CS<+U`1vGtm9k*@v^Ae`zZ;S3bjE4~k7+bm z{~WWhuXWdeJ(Xkn19N%K0AFdjYh@qw$5{nErzl N&U~_J%*AfM+2FCmUr4Ad;VjgK`YVDEh@eD#;Ce4KRoT!l{wfFOpmEC>4C z -UH4ppj_;aY3`7pIdB|=ak|bvM0Ixf3Hb?Q^NUwdz}=Z?j2x`n z erN%6y_X)$E(x@#J8xr^6%CRV3b-Ks0WWH8u&xG+B^NvG5WfE+4~q)L&Yu zr@q4}CfQ>ZQy!YD<7G(%A%%d;m;QFMb@@57WI5T8%aSxvxv#+)pkHXG2 48+F?cO~f-@o_U~xyC>`U%MpzdA7_h`PxTMSa5)A5us>p zW>E1) S|~B*X*mmPyom+iZ=YHdt8KL dUy>R2G* V{aYDIeDvK575}G zTLu|zY+NDiUVgw>UFDtHZWaK+p6Nl_y>~*6`Y|)qQoDTW2mcA=+Z~@RuL_8beYtr? zGS{)+VvBL>IDRGVgFP!DtC6nv`Jp8NPWq105B1xy3w>M*cr9pZPm5!Wt%Tfm%lZ-} z>5u?z;vQ}pK2b1@mvsi28<{&>G_PZXXOYOG8N%d>o`}fpJw%m(uFFDrXbzC+%#2ll z9p0m7g@+pJt|dDPxOP76K~242U%s{)AK7_ECB#6V25t~sBE!7AfTt2y=MIny=-qt< zzs5>bLT*L_ZRq8ywjNV1vR9oFS=w2o7DD&7t-W;}*CGz>0&jR2QQq@T6*&;Y?QnTB zgn5a>>A6yP?ZZcH;3!uS-`Q 2{L>&o^G~diCU{=3oS|*F#8uhYGH}e9 zYF75By9X~J_aUHhA#W?Td`moCzYXQ_q8t$oz-HY8WpgY&Y4q>3w14B*5MmULaQx9- z7D+yW_{dJFme~i98#?izd0{iUQ5{qwK(Z76B0g5P_z`&g80#4jcU!!K&L~oqGF>=; z2Mysg3$wY}uI`)Wo-opg_kQ3~$NPv;U2_Bby5+PRszuJ@K@3%hqB3!u5I6BtdW8_H z63bHsD6oI#KOVg5b}|^BtOdNS7l`8Cx(nE|(H0S3d_7W@{&I3}Pw8(9_ykZPw5%}v zB%BHCkscl#K77L$9arj*mTtl>COI?4o<@sH+)Kt6pTF$w`FK);Llo$*+CL0`ArGGX zOb9NM2? 6kw6 z%#m31CwJVp4jCj2u7-mp8 h!_Bm#gre*Q)3o1H2-c4GFdV>M#GH@ zly|xkPe;?#%6%9&oZuwED?l+>$32|Pi}`GrEhBQLEWZ0j#ItA+5^-%i(e@*b*m3-K zNJ2mAF}Oe0Kv?ely>Ju`1EdDo%pbm>+<5HrClq7e?CH+jZ5tBX1){zdl%Qi5=KWaL zxFTjCmqtRV>s(rTj2tk;ll3?U4Ur`a82!xL@WrX6A9b3Z`{1&i$({AMG}AleKC!9^ zALml2#8UTAgDq!DouXJ2JJ35B$VeOhV7(}MpQOQt;vicSdJrVEU69&!miC%Qv7?&s zr<(XIIv|+gl#vv?ax#NKJOp=7CR-}gSSME6!8T!4lNq}@pk-znb~3jpk9dF!C?I!t z(xniMKkD1YTlO WL+b^~a xBUx`!6vl!IxK# zv^Q>8L42Q*wnV@cdviVVR7F$(GAhQjk`opCL>`;sc>=}-A_+~jXvXvV67zE&i+QmQ z&;+TD>Gw?F%X;@;g7W()IXJ#wGE%7R>X1Qd#<;bhFx%E@-On*c=s-joekKl?xl|Fj zn;QC7Pw%Vm1}`E$q my7pwrZDu?JY-QA-4} z8Gmw yZz3XXJ9{BYL|aCh<1q5&yKbU5 n7*Q5nx~sA)t>q=El1-FUh0B^ z%K(EMh`@wQ!UjeR;JN)~RAlA89SY#O|GC@(e{9s!;NX4GPgm#yV&@vrlYw^Ewa(W( zXPI2_&nfVrF@C*XP<$C?eKSW(>&~mVtH@xcU+?y^;5<8|b5AoOzNy@TcqMf?tB#?c zx|ahH`i>%%OdCIB**xFXGy{TL^+W1ulXnif&WeO|G$Q|d#%R)66Icd|6nH*%;;aYM z79cYsa{a0VEHsJ__$`?cnde3qnS(r#O)iHToG_pPv?r-%vo*+#@V9tzgnu$Pwrg!# z5j}6N4YC+bbEqKV?>gH4Ky L1Go&y-I14QuHTz96#}+a21nz3+d7{}YCiCihcfLSyqbQsT!VSD z36LdMbj<{XfgLp0x+aAnP^#V8gO-XSc}1fTGycG~{b_frJwV>L#^K6pcwN$DIsek3 ztY`>_=qXEx2J8s2X0%IpnU1Jx18)rj7-+W+R}9q#;~Cv!Tu--k8mzu?{J8ZEkjZx2 zU+wE{+TCjuY}plrA=C>H &f?aRW#A%%F=98Qk+ztcHs`KIC$6lLv5S|eyhaw{L zfL%(()D!H@K@Taw#Ao6s_`JT*g1TmzIA5zGi|aoc1D=ff@yiF^fhgQPN_nhvOsC@k z hL6UWpLcM%m)ZqVPBww91 @ zEpYS>K(LJ@ETO(g7KUTcdAr#yu=o>BSE?%NrWNeGy&h8cK(IGKD)DHCizZt)T~A1( zX$jl5-(Y(g+$`AmkZe{P%-<{51_ 4sY00tyMm|C$2J&+b2+?`TYyzzV8zyO)@UwdH`a9~HE6G&V8z7^ZC+H8c2 zC1EZ6iyk9sUT>)%)U7V7mZnceMB5R=&M#By&!JJVcFf%&NE-T>6NlW6_Ey+=TJ+VP zMMKY1^wqJqy0%7b8-;k|c sCI@Rt*meLEWPb`*8S@7NI zKzz8Ao^>`8HS-Sn27+yLER3Bpk~on!kD4r%jqfQ@N}X!@PK8q^vjd?sMVK`l+E}wj zwUpvUI?y{KI*huq3b=9dviROlipvx?LmNd9JTE)9bm_ZdmRP)P(^ZV NYB2olp~2sFyW~QfYO~ =YSoPKRbWnG@10hPYmRL*y;T}|h#mm3?!t_QjaQC|=^N_`+(Tu4H z;#$8Z5*m$*OAVqQC(4}WPSWs_A&8SlxM$7a_@s1E-*R+hAdpR5a%tM0hV!#5vP2Qn zT?4gJz#R7h7P+RaO7_c@wOqXkC?w?^TV~$TFmpz_Zumpw>lxXAClsI|@Pi}CaN!r^ zlkKH!F0ZKWEPy9~id{!rXKScIW@@=0aDts`e3A^Bu6GhfI;ODrr-QQ?jnS^bUFJ@{ zENIU0@^*yb3*?{_=wd+Mc^6`41Z3^R= P%tyfknb#@xF+{r z54T;Gz0iO!rP_)QbnN^!4b$1Cy+t=Q!$M1UjJ7Ro943FcIwd27VbNBuUow~{HO2ll z!3C;w!FHIqcY>Z0Jt2^$7wkPoe_gdCBa-EK!f;%==6H1r%iD2{N8zb+TK6urO&EDr z-!XVCTKETtM2nX@kT4uq8&4;b>6ze3N(mD)3~z B&8O3C&vfQV)lka2$>WXzZCS%SnW9nIdxesj zQL5H`xtU`gNSpdS_D_Dm^ ds)KC=&D;(|WiT>I2m{{}gMZ8m|*hMXr>#FwzFd z3Uf67;< xx2lOU19Lw*rJ!U(@3RjXx{O2B8nwVPV+_=q)e zbS5C0DU;afTH_F w9<`v-(g(9|x?%Gr^a83bzgwKo!zG wU6BJ0}b#pj@@$8X0nCQ?KYr_%*8_WnL(Xl_#_NN4UZSf#wnIe1&lUV+AuR7G($@ zFe|duN36_N3A3x6mV?O+(oZBR)&tGFP|35O4XvM6WZH-g?F@#UQ81~tU~c)`J{6eF z50wPwpMUk_BB(Ac2!aZ<{=N;x{|g$D4GfVr8`5|Z|1gTH=66sR9zb(f3pcDQqQgiq z;c+lP1MdeK*W-E>y}7|DKZc23aN95}kZX_486rRCo#Ll)sDqj#z(G#3`56pu;u~@w z2s>6F4|di!W)L0L3u$%~_t8#bT96Ur7n>rLTlypgBd H zx*Sgfv(|xlk{D4d62>Cf)BSNrrafNH1XoyIY3@G`T%khve3U=uNb#7*Oqr>7fX0gY z6-@;Z>HT1Sn9CSnV=`w>^wI9#Vu;SZ4 Ch;hvz~r)=&E{I0paRl9`3g$$=0*3Piq z_}RRWR+|kB1%pkNGG%^Z5}8_Uz_iT}XBTtop{e$hMvVvwhR2^2n*{WdnMa@wZ-^YN zwacKbyoRAJJ#5O}Pqd7zHF3ygrio4TO=$Vjs{@skZOI^@n12|fwQFA1kcAi}L29r6 zIf)+RS;_~8)pd`*)r<@69*Ivdd5nY=mN(3pw8M6{9(0@^f#q;9xT1pt4x3qf7Q=cx zv?SWab;IM!Tdq7VGO(d|EiG)HrwCv^3I>L;7P_5+nD$0;O3rxzrZgJL(|fkp6=zp^ z zp7`dtKdF*G! L>YAYwpHU2;wOvv7NV@S$>TeH0 zMFX;3Lt)iNpr|>4kxg;^KPjjU)mP=AU>(fMN@yts5pRyR>sVybFEAl(Yr$f~`8}&9 z&`DeMO$4v$%a+1!p=$pe40y6)k?e;erYL8w!asmn_ncYX7HE`e-ql2rOKk(7le5LO z@oTM_Oi>CU5YdWN%y|fdP=hXfdU`bxP<%~62P`OWrSN8eWRY-qfA?pIEs>H`Q28<2 zy^+} ({IiaQ7X?!oMg==942N XW7)>W-bgP=DyF#X6-Aj?e4RtS=)9BX@p;ioAx+> )bj*Ys zFMz-tp+Vm_oRq0lOY3xrkIs?(11-(Svz`! 6-pF|94>mA{Gyv~rOZSPF+Oqrj7 A@TG >-6CLEb?g!zBK*zqseM m%LS*qsIA%Q=__7>FnZKOsSQju$=P4InW$qh}r2wY) 8X-X@?rm3(t~^I9o_sbaSud;1E3*YWVMP68pWI_u1U)Kp!2< zT=p {;@XW zAb++-YMhBG-O)E_x9~@6jz36tFx{eJg9_ndzY8C|ovwnrmnN8>6`PVcD;&}?>SNxx z$XDhy9Eq2*IOIb*ra`>I@ePx#0=+8wYao!|ESLo@c88g&>|K{LotS%lFFsHgn|)qQ z`gPX kr~bQtzs)#X0$5#V8IL zYggcmN$by<47iB`fn`fP%?%?M5BM!r+t|>(A)STbue}t$N uXfUao}j@>}8)m>!XfY&fosAu$LSKY1qmLzqL0`p1OZX?b1hm1rB6=M09 zfEeV!5mk#=M@oU02QWDER^{GdkpW)U(ZgJx0vG8mHHrBcDUK1IATgPdRKQ4z^UbgI zmww^N{r&qEb)#NVxYSW;AQ>&S46)9u(^5uVTz=*)dT=I!h$Ec+eiGOm#agn_;WV5j zHtX|m6v1sKkn#1AMVgJvTKL7}UF+-VZPG-%XRl%^9r*yifinIGaDZoo33}6u zoxRTcC^tXk6#g*}K0d?MxHKr}b8lB286$P)ZPYLu04MP=o=%;z92z*0H>+#({x`Uw zOIu|Oe6*`sGA3zkqp|wkE^a{7h>GiD+>fFR7TK#{{-r6=!E()Ld%-E!E~-@}?{ZYM z=$TY7+{N662hLnW;5U_zx?<9rL7p@S>=mbW%U$+*=c(PIN;HSE`$1>=J| zZ`j|98rye8S@MDCL;VJ5a*id@LGAE##0216rN3w>&H6DRY2SxR%m^cL^-eO(SoCJy z8F#}=AAA9P2N0whmX^+j)!$UG%1Qg B=#uFLIc~JH#Tc+5b)j0u i{pH-VfEoNx3nfA0A0FXo3q~fCz2{X#W#1 z6&Es9 w+t0zkYK(b z5WGvorM|Ei0Q+uWoFE#eQn?4pt|q5awN_I=y8_vt e#M|NW>&@z<0Jd-*jGJ zKt@yD>+ve`Xt1$uq{7PahmR3LF>~aPEP}g&KF0>JPO9#|w=#@!D7kemm?~x$gA2D! zN2X-!kq#aqr$ZT?sEK-uztdJibPSB!&3&p-XzpfJgtrD~Xr!ZC0*w~Wn}!w`op_6U zg&MH%;-8jl93g|*YL&qtor!%kvnfS^+_8T886c3t6gVU=qAUBw ML29N!wo0UXP>dlIpoC zXz7N)jVs^!wmgejtX=c4J5Hs_#iM{4WTn4SB6CPn^fj$UXh7lGQqR)QrY)5KEq>|@ z@M4#_hy?3CLa64w5D{CW0J$r?q`_E_mK4f@TPH2KGA1c_ROOAe#sexzMap;Q9jhud zdD03J`LE^fHeEhPNa;4wiO?&|)#XE11@(oopgTuam`Q?bqj=V`O!Zr)mI78jwS)|_ z$tlw%Z4l~!_=tf62r_#cB&!raYWWs;T)LYHvcT<)OZBn^`QLmn$UZL^Sj%{WKIZ^k zfJV`neUQ~dNGrN bvq4HMf6=X32=kvy!4mbH=IN&0M znjQLh$uc1c?_8y5Ta ^A~d^L?H3jl8Xw6gmq1 zSVlX |j;*uZNZ@EXiF2$ds MnE6h21PP(xc)r=+E&|RluE^zLmL!s(`=%57 z_u_QdH2j3sK4zV+VI;IfIZO)T^=nOfpV`e2yz~}HKZoJw^CxV_TsvczLlb;>3uU^H zfkluSCy_gl>8ExOChm5lC7MQqj1GaK6zb~K-)-aj*;FLGIq@MPI-)<`8n#7%CaF9N z=h&-`2eKd=wPp1xr|dU)4;FI%lcXuK@W}8KWn}DOAKVHhd(P4w=cN2>ArwbVO6;U+ zuRn?i*;8b0WHv<#`h-k2{AOOz4YIIk3w%RIs?d_akZf&EX@=HIPXv)b;q9?@uRcKH zKF!ZK4E?KNuqplYF2gR|eQBEcK=c4Ou6W-&N}RB;yy^o&Lr8}yYbG;A5A7%quMmIX zniOFu$@XC8l%I#+De0t-;vwDbGjOkY?=ljqs{Hm;woJB6YZ8flA3yM^?j8>5(FA@Z z)RZ3p<$D%ro~0H{n1Tf1quS14#c?BqY2r~XbDae5f@z2X4-F17m$Dv<93;swEzAPr z*DFo~Hx=y{dm>T3{hsoRLW<~iG;i7s`6k$izLib$Eetu9({&M&PyXtj !dzc55Xg9ZpW)DUCUq#`pO#zKwAmU|*(m6@8^MnjBtlWSTtM4?fD{k3xEg z7vCivSQHbh?(5f=AnA<))Tv?*9AOBe1kIJeKM9b5L>AwPW-)X-Rg@-1Uo(7T!*my4 zePgay+7H20!6NvYRFs7CUg>eWG5Ehto$z(Ca-TeVZ4;GNm&CYTInX-k^7a)2T42m~ zft^y9et3k3wHO1YwGFyyFz)>6wQl*@!a;rPbQy@`7M)|$^P$2+1Y;1JdXzZhaT&AB z6qh4esl-vsg=3d7V&EYO6f!D8AUVXE!ZJ$)HA=-d6bX`Bk!h+;%1I*D*V_ccApK2n z@p4lKaQB^a TWOV8ai$iC-O1$* z0rBksKVfcFZVDqv|AUi}921D+3=PJbq9bcA7kVKmu!v7`jzvD3M(k?LHCbE&-vJnV zB-u`7!@J(UN5MM3;?O$0_b3rhgoTJy7r7I}vS$xGs3>=g!N28808qmuxrGEJflS^A zy6ZZ*4FqCUqpo=KI!&5f85>(iaogZL5WQtWXv5!F1gSkB3QS0?eIBVQ#eeNC#*Hp1 z6L~&r1+p`Qu1y>-W7tsSe~0Pwsu)Ku$Sn)A7_1TuPVq?ha?W>4Kx$uPDbIkVaE_@I z3<9q|_1TQ%c453q>6CUhK-a411p= #IagzW7(iUHW Y#4eiQ+2=DX)WGH2tCuM1uLwMZr3t|_OG6DN08XCjfHK1a zf_W)2%* mBsIZG4< CnOvBsz=zM!(*)JDET >R+vj@|5$-jNmfH8^@n9ch+S$^7YPmpz#E$={gbsv-={02^K(_%;%&I z>cdR5r(pQvnb;*)fzVyKF=m3u`b_1jqQK-sVn?ltxj*E^=GAKf8KsZCNyq{D>1c2b zpvSnu0tI)7=76x0)hV>*-msk`T|k0LPKYR=Mmlud8U;jJU)r}G|H(`pLo_7A7?kQ$ zu{mdO$0txq(L~Lb9$1RfPM>)rTw1?1q5NYG&XmYr%Kp6T@A;!+K@(*-TBZ-GMp@V{ zEi(p~Y@}M-!U45z9};NHoGE3sQTJRu25b#nHzQgq%mcf(DtLonS*e{YwHEG1k{;+w znyug|4>I_3|0GCqIODwRx5>izRC)LbN&ZZ2erB(@q5#)>7rn;``c|B<$3uP}ax3Gh zw@A&1bYa3IAaD_9t>ikjggOiz-3hmB=>I9?yu+#d|37~2L*}tN9FB49y+!sWyT~Sv zkXd%J4l*LL9rYo}Y8WYd#IY(eN<}1;b?h0LzjOHX;q$$|*Z0TepZ9A&@B4lq*SYTZ zgW?wqv-Ab%xOqF2Fcp HR53D 20qX#&5uJqq+qrS*XxeycQB3Md1s zJ}6W@Rqbu^x~JX|n#rl!({goBLs6^=V(1k!pW~JAvm8YgJLjII-dH*G8j+M7c#ROK zE58KwN{^|o($XEVA}I6>%~=z|8tm{@eDl=KdfGvlFBEm q?rW}J_~3{C+|lMKJbHwp}(ot zKZuB@zj$&_A+gJS1M#-7x9l9RAKLR>yq487%ls=`ic{Ea&J?D06$M`1gXcHt623Hi zb&F<{DI6ltxLRM>=v%ChJ1{HXInZ{2@1bxPD`J~^aJ_dYa;e@T%Mg=M3rFY@b81y2 zJ~N<337IYAo~4hU_^wAWq$c>w|4X>7Q%tE1hN`B1$g$ey#_Sn`uvHn$sOY`gk%pLx zB-Nd~+^4~NN$;T1Maj*SHjG|8Q_=iGA}_SRsnEwX{KY$d&Kq6VYm4aDXd5$coIgk> zkVXkT*uAR2`b3?&^3um#rx>iUpOE^8%pbXBe5moRC9&Fp8~!V)1VYhgx+|RI?y8l! zb~ULPonO0=THS#%OZ+wBP8~QYvB-Ka!LHDplL9c%V9lOv5y#HM-|veOz35OSrZvTQ z!zQwXwA _*Obf;Mp9Lnwfx4@OKuWb;>}Te2cCq#l{=5l!lYV`UQ= zJ}A{EZ`T2U7D|hC(jGLny_>*x!AQq0Q*NZ*UjNoZV|$KJI$u+rk)pC&@41D%4SI+N zzW9~h|NJ)TqU6_DKDpK^Cg02eUC6hnB6x)Lm7WC!N%7$P%ZLP;z%n9xZ^-1QNe+kc z(K^n=r#=_p=wS*~pxFE7{o=V@>vCD$PHxvd zsy#<4A|peiCkvpFj 6z<;E!s72Mh_rVx<($X`V{4>UrtKKTFZ1tF^A!Cr;Y`tNw$Q4eM z6ccq<2GfSPTIyp?0%P{s7pkkIR_YJtlh>wuP2Zb(Q^L&8X_gW&%+W?AKU$^nH!_xp z+w(WjPuaSirGNg%ZeImS;~f^*V*Z3(ag=n9l-5@0#jI6|tJhyhi5>bptCg}%(rAg< ze|Wd;ZlJ3$eQh#7JUnOE%7^CahgJqcCRCwYjh?;F_?(;EtyjW%P);d&xpZYuFy{KQ zFJ?PS{nq_Fsu#K;#LkbAEeb+e(0A=#{`vWScb(>Mu@kcl)-xKZDn<|1=bbggYFpim zE?_)MUIVhOyX= n5B8`c#q z*PhTbTT!sH_UD|Z{Hx1Wr3C!D^_|++%q{7HFk03j1l!NxMYz5IFBA?ubbq#MsW}`F zF(^C+ooSh{ABdzOM}|+|X-vMX>}g*?7Ua@B`l?8`Rmrx2od|X4Mlk4YxC8@GE<%Q* zapH14zsFu$+K6 wX}Hp$8KN qd0lO5KlBLx&<%?EM3*7SyD3;XmyFdU@)}?-& zz(jG;jeKnuLtF=XVqhXf>?$gRD!1q%WtP54vyElHqmQ&>v4&oaoO&v< z-? WY==*r@qk9*ZuGr40zHP(m9V^>9#l*(ajU;_ zRUjdg+@1A8&9-DeasBz8d$*S (aaE3i}`0emB;?nhQk3vxsZtu#H z@sukWSvTvL^ncF<%mh*8lIkpco;^<{n127mqOXU@z{pwpz1B6G5v6x?62cM}M;!NC zFUPNzoDKadV?p%pdC;X+y(Ni3lx4Aybf9d5ze)6(Ufrj`DRFsH_*t4u4No#T>E=Hg z^s{hT1`-ePmHIHo<)vqmIl{kc7cX@=<~!af1-0l9az|?zrM$;RkS8* 0RJDt)?N9Wv`m zq)m9JmCtd_c|7nVyLJXY?$xK5mu>M}>EVq|to-GPUqSJD$e GdTB4{B z )3O{ygQJ252-uBy=9(};VtyAMJ&XFz{A|2AK}k)Ue&d4d@F1!X8ygDOHunl< z4p({u%gz&5Vp)6+i3B`X!Wheb@AcOc5TNsOc@WmI32Hszt= Q%Br_=v z5g;z1-*zF0M}Y{|*iq>QfzEv7zto|hT9t|#4`rMlIRFWdD~nzR2K(t?AEUJbFEVso z95Vfys!lYlDo8mK*JP#>tkhe0&Ie0ThZyp{@!PPOb@eVa(ikhFFR(}S 4LtZv1@xXY7&B^B-W-Pr4pEw#TaD?a@v!rl?WznVJY(Z=km5d1$D0wr zAu?k7KIK(T2ea(c&X5@)Vvd@%j8V7R(E{EX(pb_bFpN;6JYUBwv1G(mf&%)IFLcz= z7QT!H70*kd@5fQdYg6au+_xtgcc^K5EpLm*`{qKI zsv#wR1zW~zl^?Pe+3sA*UQ9NU$o{;j^PkkhmpY&({gEDq9U4XCbIpdBQTQ78zK#0q+!2b|kBTGo6%XB~omVF-AL| zSa&pEdT&l;_}bjKQ@!U%hoHZpvb9?Xww_&Y$EJ )lwrhtbv-frxhh7 @+D*A(0v@F4 @QL?SN8|*=m*7K(|yU zTizDbAmOBicg46WeVcW`nC~O?W<;)_wxq`d^2NHSO2=4-!SzwiGFant-_dxTbQj^U zHl-ibK~A*_;Y%zu`*NEG0C@&nK7cIuvHtsYW98`jRMt%R^sfMkvQWLC{oa@B!z&Ux z(h&$+?yk~R>TQJZBPuzn&ZV|wgh;GR&?hQ&;SB>ZF_$Pcu>n$3LRWyoO<+L|8}eue zf{s9eKG^9xmwkLDl9}cW@<=aBl_*k6ymHQc0m@z;-j{y`29{i9m1hP83u^sFt7e9L z3~!>yPO0Je)MDD}u5ZPgku9CHdLX(O=yCJ0 f4>_C^aqi~+&k;m>NOV~vODupVqhd2MCIKl;T7=)82B=A30-%ShCzltxpx$0 zeaA2I%FtK+Ym@Ag<7${{`9Ns2IL7UZNxbH{-&$`LWmBG(Li1-_dtXU8T^befVfE{* zoYT#jB$aw(D4s AP7<1hNFA#u9l!$S#o z8BOU9AuEd#(PsljijocErr(aiPpH5zm2OZublIwRt7%bzGLhG65Q)Dw<gSgXJPs!5fOI>@qmG3_Cf_L3*FG2}y$c4Wv z=k`dBW#OhH3Evea5