diff options
64 files changed, 723 insertions, 2387 deletions
diff --git a/chrome/app/chrome_dll_resource.h b/chrome/app/chrome_dll_resource.h index a1055ed..8a02d90 100644 --- a/chrome/app/chrome_dll_resource.h +++ b/chrome/app/chrome_dll_resource.h @@ -67,15 +67,13 @@ // how they appear in the GUI/menus (left to right, top to bottom, etc.). // Navigation commands +// TODO: Reorder to be in visible order; collapse holes #define IDC_BACK 33000 #define IDC_FORWARD 33001 #define IDC_RELOAD 33002 #define IDC_HOME 33003 #define IDC_OPEN_CURRENT_URL 33004 -#define IDC_GO 33005 #define IDC_STOP 33006 -// TODO: put this alongside RELOAD, next time someone wants to fix all -// the Mac ids. #define IDC_RELOAD_IGNORING_CACHE 33007 // Window management commands diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 0a78959..73826e5 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -3821,11 +3821,14 @@ Keep your key file in a safe place. You will need it to create new versions of y <message name="IDS_TOOLTIP_FORWARD" desc="The tooltip for forward button"> Click to go forward, hold to see history </message> + <message name="IDS_TOOLTIP_HOME" desc="The tooltip for the home button"> + Open the home page + </message> <message name="IDS_TOOLTIP_RELOAD" desc="The tooltip for reload button"> Reload this page </message> - <message name="IDS_TOOLTIP_HOME" desc="The tooltip for the home button"> - Open the home page + <message name="IDS_TOOLTIP_STOP" desc="The tooltip for the stop button"> + Stop loading this page </message> <message name="IDS_TOOLTIP_STAR" desc="The tooltip for bookmark button"> Bookmark this page @@ -3833,15 +3836,6 @@ Keep your key file in a safe place. You will need it to create new versions of y <message name="IDS_TOOLTIP_STARRED" desc="The tooltip for bookmark button when bookmarked"> Edit bookmark for this page </message> - <message name="IDS_TOOLTIP_GO_SITE" desc="The tooltip for go button when going to a site"> - Go to <ph name="URL">$1<ex>http://www.google.com/</ex></ph> - </message> - <message name="IDS_TOOLTIP_GO_SEARCH" desc="The tooltip for go button when searching for a term"> - Search <ph name="ENGINE">$1<ex>Google</ex></ph> for <ph name="SEARCH_TERMS">$2<ex>flowers</ex></ph> - </message> - <message name="IDS_TOOLTIP_STOP" desc="The tooltip for the stop button"> - Stop loading this page - </message> <message name="IDS_TOOLTIP_CLOSE_TAB" desc="The tooltip for the close tab button"> Close </message> @@ -3856,18 +3850,18 @@ Keep your key file in a safe place. You will need it to create new versions of y <message name="IDS_ACCNAME_FORWARD" desc="The accessible name for the forward button."> Forward </message> - <message name="IDS_ACCNAME_RELOAD" desc="The accessible name for the reload button."> - Reload - </message> <message name="IDS_ACCNAME_HOME" desc="The accessible name for the home button"> Home </message> - <message name="IDS_ACCNAME_STAR" desc="The accessible name for the bookmark button."> - Bookmark + <message name="IDS_ACCNAME_RELOAD" desc="The accessible name for the reload/stop button."> + Reload </message> <message name="IDS_ACCNAME_LOCATION" desc="The accessible name for the location bar edit field."> Location </message> + <message name="IDS_ACCNAME_STAR" desc="The accessible name for the bookmark button."> + Bookmark + </message> <message name="IDS_ACCNAME_FIND" desc="The accessible name for the find button."> Find </message> @@ -3877,9 +3871,6 @@ Keep your key file in a safe place. You will need it to create new versions of y <message name="IDS_ACCNAME_NEXT" desc="The accessible name for the next button."> Next </message> - <message name="IDS_ACCNAME_GO" desc="The accessible name for the go/stop button."> - Go - </message> <message name="IDS_ACCNAME_PAGE" desc="The accessible name for the page menu."> Page </message> diff --git a/chrome/app/nibs/SideToolbar.xib b/chrome/app/nibs/SideToolbar.xib index 742fd25..7570447 100644 --- a/chrome/app/nibs/SideToolbar.xib +++ b/chrome/app/nibs/SideToolbar.xib @@ -195,7 +195,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{171, 0}, {29, 27}}</string> <reference key="NSSuperview" ref="928520650"/> - <int key="NSTag">33005</int> + <int key="NSTag">33004</int> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="203834804"> <int key="NSCellFlags">67239424</int> diff --git a/chrome/app/nibs/Toolbar.xib b/chrome/app/nibs/Toolbar.xib index 3db1282..51feab0 100644 --- a/chrome/app/nibs/Toolbar.xib +++ b/chrome/app/nibs/Toolbar.xib @@ -1,15 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03"> <data> <int key="IBDocument.SystemTarget">1050</int> - <string key="IBDocument.SystemVersion">10C540</string> - <string key="IBDocument.InterfaceBuilderVersion">740</string> - <string key="IBDocument.AppKitVersion">1038.25</string> - <string key="IBDocument.HIToolboxVersion">458.00</string> - <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> - <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="NS.object.0">740</string> - </object> + <string key="IBDocument.SystemVersion">9L31a</string> + <string key="IBDocument.InterfaceBuilderVersion">677</string> + <string key="IBDocument.AppKitVersion">949.54</string> + <string key="IBDocument.HIToolboxVersion">353.00</string> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> <integer value="1"/> @@ -20,7 +16,7 @@ </object> <object class="NSMutableDictionary" key="IBDocument.Metadata"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys" id="0"> + <object class="NSArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> </object> <object class="NSMutableArray" key="dict.values"> @@ -53,7 +49,7 @@ <object class="NSTextField" id="535508469"> <reference key="NSNextResponder" ref="928520650"/> <int key="NSvFlags">266</int> - <string key="NSFrame">{{130, 5}, {376, 27}}</string> + <string key="NSFrame">{{136, 5}, {401, 27}}</string> <reference key="NSSuperview" ref="928520650"/> <int key="NSTag">33004</int> <bool key="NSEnabled">YES</bool> @@ -63,7 +59,7 @@ <string key="NSContents">chromium.org</string> <object class="NSFont" key="NSSupport"> <string key="NSName">LucidaGrande</string> - <double key="NSSize">13</double> + <double key="NSSize">1.300000e+01</double> <int key="NSfFlags">16</int> </object> <reference key="NSControlView" ref="535508469"/> @@ -101,7 +97,7 @@ <string key="NSContents"/> <object class="NSFont" key="NSSupport" id="64724822"> <string key="NSName">LucidaGrande</string> - <double key="NSSize">13</double> + <double key="NSSize">1.300000e+01</double> <int key="NSfFlags">1044</int> </object> <reference key="NSControlView" ref="368496192"/> @@ -130,7 +126,6 @@ <string key="NSContents"/> <reference key="NSSupport" ref="64724822"/> <reference key="NSControlView" ref="458854861"/> - <int key="NSTag">-1</int> <int key="NSButtonFlags">-2033434369</int> <int key="NSButtonFlags2">6</int> <object class="NSCustomResource" key="NSNormalImage"> @@ -155,8 +150,8 @@ <int key="NSCellFlags2">134250496</int> <string key="NSContents"/> <reference key="NSSupport" ref="64724822"/> - <reference key="NSControlView" ref="781044416"/> <int key="NSTag">1</int> + <reference key="NSControlView" ref="781044416"/> <int key="NSButtonFlags">-2031861505</int> <int key="NSButtonFlags2">6</int> <object class="NSCustomResource" key="NSNormalImage"> @@ -181,8 +176,8 @@ <int key="NSCellFlags2">134250496</int> <string key="NSContents"/> <reference key="NSSupport" ref="64724822"/> - <reference key="NSControlView" ref="634265909"/> <int key="NSTag">-2</int> + <reference key="NSControlView" ref="634265909"/> <int key="NSButtonFlags">-2030812929</int> <int key="NSButtonFlags2">6</int> <object class="NSCustomResource" key="NSNormalImage"> @@ -195,38 +190,11 @@ <int key="NSPeriodicInterval">75</int> </object> </object> - <object class="NSButton" id="480525277"> - <reference key="NSNextResponder" ref="928520650"/> - <int key="NSvFlags">265</int> - <string key="NSFrame">{{506, 5}, {29, 27}}</string> - <reference key="NSSuperview" ref="928520650"/> - <int key="NSTag">33005</int> - <bool key="NSEnabled">YES</bool> - <object class="NSButtonCell" key="NSCell" id="203834804"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">134250496</int> - <string key="NSContents"/> - <reference key="NSSupport" ref="64724822"/> - <reference key="NSControlView" ref="480525277"/> - <int key="NSTag">1</int> - <int key="NSButtonFlags">-2031861505</int> - <int key="NSButtonFlags2">6</int> - <object class="NSCustomResource" key="NSNormalImage"> - <string key="NSClassName">NSImage</string> - <string key="NSResourceName">go_Template</string> - </object> - <string key="NSAlternateContents"/> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">400</int> - <int key="NSPeriodicInterval">75</int> - </object> - </object> <object class="NSButton" id="571076484"> <reference key="NSNextResponder" ref="928520650"/> <int key="NSvFlags">265</int> <string key="NSFrame">{{540, 5}, {35, 27}}</string> <reference key="NSSuperview" ref="928520650"/> - <int key="NSTag">33005</int> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="482050975"> <int key="NSCellFlags">-2080244224</int> @@ -251,7 +219,6 @@ <int key="NSvFlags">265</int> <string key="NSFrame">{{574, 5}, {35, 27}}</string> <reference key="NSSuperview" ref="928520650"/> - <int key="NSTag">33005</int> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="204555298"> <int key="NSCellFlags">67239424</int> @@ -312,14 +279,6 @@ </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">goButton_</string> - <reference key="source" ref="1001"/> - <reference key="destination" ref="480525277"/> - </object> - <int key="connectionID">21</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> <string key="label">view</string> <reference key="source" ref="1001"/> <reference key="destination" ref="928520650"/> @@ -343,14 +302,6 @@ <int key="connectionID">26</int> </object> <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">commandDispatch:</string> - <reference key="source" ref="1003"/> - <reference key="destination" ref="480525277"/> - </object> - <int key="connectionID">29</int> - </object> - <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> <string key="label">locationBar_</string> <reference key="source" ref="1001"/> @@ -428,26 +379,28 @@ <bool key="EncodedWithXMLCoder">YES</bool> <object class="IBObjectRecord"> <int key="objectID">0</int> - <reference key="object" ref="0"/> + <object class="NSArray" key="object" id="588411309"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> <reference key="children" ref="1000"/> <nil key="parent"/> </object> <object class="IBObjectRecord"> <int key="objectID">-2</int> <reference key="object" ref="1001"/> - <reference key="parent" ref="0"/> - <string key="objectName">File's Owner</string> + <reference key="parent" ref="588411309"/> + <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> </object> <object class="IBObjectRecord"> <int key="objectID">-1</int> <reference key="object" ref="1003"/> - <reference key="parent" ref="0"/> + <reference key="parent" ref="588411309"/> <string key="objectName">First Responder</string> </object> <object class="IBObjectRecord"> <int key="objectID">-3</int> <reference key="object" ref="1004"/> - <reference key="parent" ref="0"/> + <reference key="parent" ref="588411309"/> <string key="objectName">Application</string> </object> <object class="IBObjectRecord"> @@ -460,12 +413,11 @@ <reference ref="535508469"/> <reference ref="781044416"/> <reference ref="368496192"/> - <reference ref="480525277"/> <reference ref="602421009"/> <reference ref="571076484"/> <reference ref="421615633"/> </object> - <reference key="parent" ref="0"/> + <reference key="parent" ref="588411309"/> </object> <object class="IBObjectRecord"> <int key="objectID">2</int> @@ -495,15 +447,6 @@ <reference key="parent" ref="928520650"/> </object> <object class="IBObjectRecord"> - <int key="objectID">5</int> - <reference key="object" ref="480525277"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="203834804"/> - </object> - <reference key="parent" ref="928520650"/> - </object> - <object class="IBObjectRecord"> <int key="objectID">7</int> <reference key="object" ref="781044416"/> <object class="NSMutableArray" key="children"> @@ -532,11 +475,6 @@ <reference key="parent" ref="781044416"/> </object> <object class="IBObjectRecord"> - <int key="objectID">12</int> - <reference key="object" ref="203834804"/> - <reference key="parent" ref="480525277"/> - </object> - <object class="IBObjectRecord"> <int key="objectID">13</int> <reference key="object" ref="464583340"/> <reference key="parent" ref="535508469"/> @@ -582,12 +520,12 @@ <object class="IBObjectRecord"> <int key="objectID">122</int> <reference key="object" ref="1044322163"/> - <reference key="parent" ref="0"/> + <reference key="parent" ref="588411309"/> </object> <object class="IBObjectRecord"> <int key="objectID">130</int> <reference key="object" ref="306232897"/> - <reference key="parent" ref="0"/> + <reference key="parent" ref="588411309"/> </object> <object class="IBObjectRecord"> <int key="objectID">144</int> @@ -599,7 +537,7 @@ </object> <object class="NSMutableDictionary" key="flattenedProperties"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> + <object class="NSMutableArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> <string>-1.IBPluginDependency</string> <string>-2.IBPluginDependency</string> @@ -609,8 +547,6 @@ <string>1.IBViewEditorWindowController.showingLayoutRectangles</string> <string>10.CustomClassName</string> <string>10.IBPluginDependency</string> - <string>12.CustomClassName</string> - <string>12.IBPluginDependency</string> <string>122.IBPluginDependency</string> <string>13.CustomClassName</string> <string>13.IBPluginDependency</string> @@ -637,7 +573,6 @@ <string>39.IBPluginDependency</string> <string>4.CustomClassName</string> <string>4.IBPluginDependency</string> - <string>5.IBPluginDependency</string> <string>7.CustomClassName</string> <string>7.IBAttributePlaceholdersKey</string> <string>7.IBPluginDependency</string> @@ -656,8 +591,6 @@ <boolean value="YES"/> <string>ClickHoldButtonCell</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>GradientButtonCell</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>AutocompleteTextFieldCell</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> @@ -712,7 +645,6 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>AutocompleteTextField</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>DelayedMenuButton</string> <object class="NSMutableDictionary"> <string key="NS.key.0">ToolTip</string> @@ -738,7 +670,9 @@ </object> <object class="NSMutableDictionary" key="unlocalizedProperties"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference key="dict.sortedKeys" ref="0"/> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> </object> @@ -746,7 +680,9 @@ <nil key="activeLocalization"/> <object class="NSMutableDictionary" key="localizations"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference key="dict.sortedKeys" ref="0"/> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> </object> @@ -822,7 +758,7 @@ <string key="superclassName">NSObject</string> <object class="NSMutableDictionary" key="actions"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> + <object class="NSMutableArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> <string>commandDispatch:</string> <string>commandDispatchUsingKeyModifiers:</string> @@ -843,7 +779,7 @@ <string key="superclassName">NSObject</string> <object class="NSMutableDictionary" key="outlets"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> + <object class="NSMutableArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> <string>otherObjectToLocalize_</string> <string>owner_</string> @@ -892,6 +828,13 @@ <string key="className">NSObject</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/objc_zombie.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> <string key="minorKey">browser/cocoa/status_bubble_mac.h</string> </object> </object> @@ -923,12 +866,11 @@ <string key="superclassName">NSViewController</string> <object class="NSMutableDictionary" key="outlets"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> + <object class="NSMutableArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> <string>backButton_</string> <string>browserActionsContainerView_</string> <string>forwardButton_</string> - <string>goButton_</string> <string>homeButton_</string> <string>locationBar_</string> <string>pageButton_</string> @@ -942,7 +884,6 @@ <string>BrowserActionsContainerView</string> <string>DelayedMenuButton</string> <string>NSButton</string> - <string>NSButton</string> <string>AutocompleteTextField</string> <string>MenuButton</string> <string>NSButton</string> @@ -972,697 +913,8 @@ </object> </object> </object> - <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBPartialClassDescription"> - <string key="className">NSActionCell</string> - <string key="superclassName">NSCell</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSApplication</string> - <string key="superclassName">NSResponder</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier" id="841811325"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSApplication</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier" id="432873928"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSApplication</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier" id="336181136"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSApplication</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSApplication</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSButton</string> - <string key="superclassName">NSControl</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSButton.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSButtonCell</string> - <string key="superclassName">NSActionCell</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSCell</string> - <string key="superclassName">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSCell.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSControl</string> - <string key="superclassName">NSView</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier" id="814771507"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSControl.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSController</string> - <string key="superclassName">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSController.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSFormatter</string> - <string key="superclassName">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSMenu</string> - <string key="superclassName">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier" id="801092230"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AddressBook.framework/Headers/ABActions.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSAlert.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSAnimation.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <reference key="sourceIdentifier" ref="841811325"/> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <reference key="sourceIdentifier" ref="432873928"/> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <reference key="sourceIdentifier" ref="336181136"/> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSComboBox.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSComboBoxCell.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <reference key="sourceIdentifier" ref="814771507"/> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSDatePickerCell.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSImage.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <reference key="sourceIdentifier" ref="801092230"/> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSRuleEditor.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSSound.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSSpeechRecognizer.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSSpeechSynthesizer.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSSplitView.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSTabView.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSText.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSTextStorage.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSTokenField.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSTokenFieldCell.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSToolbar.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier" id="188847126"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSView.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSConnection.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSError.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSMetadata.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSObject.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSPort.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSSpellServer.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSStream.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSThread.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSURL.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Print.framework/Headers/PDEPluginInterface.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">QuartzCore.framework/Headers/CIImageProvider.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">SecurityInterface.framework/Headers/SFAuthorizationView.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">SecurityInterface.framework/Headers/SFCertificatePanel.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">SecurityInterface.framework/Headers/SFChooseIdentityPanel.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSResponder</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSResponder</string> - <string key="superclassName">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSTextField</string> - <string key="superclassName">NSControl</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSTextField.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSTextFieldCell</string> - <string key="superclassName">NSActionCell</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSUserDefaultsController</string> - <string key="superclassName">NSController</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSUserDefaultsController.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSView</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSView</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSView</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSView</string> - <string key="superclassName">NSResponder</string> - <reference key="sourceIdentifier" ref="188847126"/> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSViewController</string> - <string key="superclassName">NSResponder</string> - <object class="NSMutableDictionary" key="outlets"> - <string key="NS.key.0">view</string> - <string key="NS.object.0">NSView</string> - </object> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">AppKit.framework/Headers/NSViewController.h</string> - </object> - </object> - </object> </object> <int key="IBDocument.localizationMode">0</int> - <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies"> - <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> - <integer value="1050" key="NS.object.0"/> - </object> - <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> - <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> - <integer value="1050" key="NS.object.0"/> - </object> - <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> - <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> - <integer value="3000" key="NS.object.0"/> - </object> - <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> <string key="IBDocument.LastKnownRelativeProjectPath">../../chrome.xcodeproj</string> <int key="IBDocument.defaultPropertyAccessControl">3</int> </data> diff --git a/chrome/app/theme/go.png b/chrome/app/theme/go.png Binary files differdeleted file mode 100644 index c4df2164..0000000 --- a/chrome/app/theme/go.png +++ /dev/null diff --git a/chrome/app/theme/go_Template.pdf b/chrome/app/theme/go_Template.pdf deleted file mode 100644 index e863e13..0000000 --- a/chrome/app/theme/go_Template.pdf +++ /dev/null @@ -1,683 +0,0 @@ -%PDF-1.5
%âãÏÓ
-1 0 obj
<</Metadata 2 0 R/OCProperties<</D<</ON[9 0 R 25 0 R 42 0 R 59 0 R 76 0 R]/Order 77 0 R/RBGroups[]>>/OCGs[9 0 R 25 0 R 42 0 R 59 0 R 76 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 32048/Subtype/XML/Type/Metadata>>stream
-<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> -<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 "> - <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - <rdf:Description rdf:about="" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <dc:format>application/pdf</dc:format> - <dc:title> - <rdf:Alt> - <rdf:li xml:lang="x-default">goTemplate</rdf:li> - </rdf:Alt> - </dc:title> - </rdf:Description> - <rdf:Description rdf:about="" - xmlns:xmp="http://ns.adobe.com/xap/1.0/" - xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"> - <xmp:MetadataDate>2009-08-11T10:25:15-07:00</xmp:MetadataDate> - <xmp:ModifyDate>2009-08-11T10:25:15-07:00</xmp:ModifyDate> - <xmp:CreateDate>2009-01-21T22:30:14-08:00</xmp:CreateDate> - <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool> - <xmp:Thumbnails> - <rdf:Alt> - <rdf:li rdf:parseType="Resource"> - <xmpGImg:width>228</xmpGImg:width> - <xmpGImg:height>256</xmpGImg:height> - <xmpGImg:format>JPEG</xmpGImg:format> - <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADkAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9Q6jqNhplhPqGoTpa2Vq
hluLiUhURFFSzE4q+UfzP/5yw17ULmXT/Iw/RmmqSp1SVFa6m7VRXBWJT8i3eq9MUvDdX8x+YNZl
M2r6ndahIxqWuppJjX/Zk4q7SPMfmDRpRNpGp3WnyKahrWaSE1/2BGKvbvy4/wCcs/MmlyR2XnOI
6zp5IH1+FUjvIx7qOMco+fE/5RxV9P8AlPzp5X826auo+X9QivrY05hDSSMn9mWM0dG9mGKE7xV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV8k/wDOWH5nXOoa+PI+nyld
N0zhJqfE7TXTKHVDTqsSsP8AZE1+yMUvnvFXYq7FXYqmfl7zLr/lzU49T0O+m0++i+zNC1Kj+Vh9
l1PdWBBxV9Nflj/zlrp176Wm+e4VsLk0RdZt1Jt3PSs0Q5NGT/MtV9lGKvoaxv7G/tIr2xuI7qzn
XnBcQuskbqe6upII+WKFfFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX5r+
Y9Xl1nzBqerzEtJqF1NdMT1rNIX/AI4pS3FXYq7FXYq7FXYqzDyB+a3nbyJd+roV8RaM3KfTZ6yW
sv8ArR1HE/5SEN74q+rvyy/5yS8lecPRsNQYaFrr0UWtw49CVzt+5mNBueitQ+FcUPXMVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir8xcUuxV2KuxV2KuxV2KuxV2KvWfyy/5yO87
eTPSsbxzrmgp8Isrlz6sS/8AFE5DMtOytyXwA64q+r/y+/NvyT58teeiXoF6q8p9MuKR3UfjVKnk
o/mQlffFDMsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir8xcUuxV2KuxV2KuxV2Kux
V2KuxVWs7y7srqK7s55La6hYPDcQs0ciMOjK6kEH5Yq+hPyy/wCcs9V0/wBLTfPELajZiirq0AAu
UHQerHsso9xRv9Y4q+nPLnmjy95l01NT0G/h1CyfpLC1eJ68XU0ZG/yWAOKE0xV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KvzFxS7FXYq7FXYq7FXYq7FXYq7FXYq7FU58q+cPM3lTU11Py/qEu
n3YoGaM1R1BrxkjaqSL7MCMVfUP5Zf8AOWGg6v6WnedIk0bUDRV1KOpspD/lg8nhPzqveq9MUPfL
e4t7mCO4tpUmglUPFNGwdGVhUMrCoIOKqmKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV+YuKXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYqzn8uvzl88eQ51XSbz19MLVm0q5rJbtU1PEVrGx/mQj3rir6
y/LL/nITyP549KyaX9D68+36MumFJG8IJvhWT5bN/k4oen4q7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq/MXFLsVdirsVdirsVdirsVdirsVdirsVdirsVdirYJBqOuKvZfyx/5yb85eVPS0/XC2v6GtFCT
P/pcK1/3VMalgB+zJXsAVGKvqzyL+Znk3zxY/WvL9+s0igGexkpHcw/8ZIia/wCyFV8DihlGKuxV
2KuxV2KuxV2KuxV2KuxV2KvzFxS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqitM1TUtLv
ob/TbqWzvYG5Q3MDtHIp9mUg4q+jfyy/5y3uIvR03z7D60WyrrlqlJB7zwLs3+tHQ/5JxV9K6Jr2
ja7p0WpaNew39hN/d3EDh1r3Bp0YdwdxihHYq7FXYq7FXYq7FXYq7FXYq/MXFLsVdirsVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirIfJnn3zZ5N1Iah5e1CSzkJHrQj4oZlH7MsTVVx9FR2pir
6m/LL/nKfyt5gEOn+alTQdXai/WST9Rlb2dqmH5Pt/lYoe5I6SIrowdHAZWU1BB3BBGKt4q7FXYq
7FXYq7FXYq/MXFLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir0T8tfz088+Q
5I4LS4/SGig/vNIuyWiA7+i32oT/AKu1eqnFX1l+Wv56+RvPiR29pcfo/WyPj0i7IWQnv6L/AGZR
/q/FTcqMUPRMVdirsVdirsVdir8xcUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxVcjujq6MVdSGVlNCCNwQRir3H8sv8AnKfzT5e9HTvNKvr2kLRRcs3+nRKPCRtpvk+/+Vir
6n8m+fvKXnLThf8Al7UI7yMAetCDxmiJ/ZliajqfooexOKGQYq7FXYq7FX5i4pdirsVdirsVdirs
VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqP0TXdZ0LUYtS0e8msL+E1juIHKMPEGnU
HuDscVfSn5Y/85bwy+lpvn6EQybKuuWqHgfe4gXdfdo9v8kYq+jdM1XTdVsYr/TLqK9spxyhuYHW
SNh7MpIxQisVdir8xcUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxVlPkX8y/OXki++teX79oI2NZ7KT95bS/wDGSI7V/wAoUbwOKvr/APJz8+dB/MKL6hNGNM8y
wpyl08tySZV+1Jbsach3Kn4l9xvih6lir8xcUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KovSdV1DSdTttT06dra+s5Fmtp0NGV0NQf7MVfbf/K8tO/5Un/y
sHgn130fQ+o78f0lX0/S614c/j614YofDOKXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYqnX+KdQ/wb/hXkf0d+kP0nxrt63o+h0/1cVSXFXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqnX+FtQ/wb/irif0d+kP0
Zypt63o+v1/1cVSXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq7FUXpOlahq2p22madA1zfXkiw20CCrM7mgH9uKvtv/lRunf8qT/5V9zT676Pr/Xt+P6Sr6nq
9K8OfwdK8MUPhnFLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVZT5F/LTzl54vvqvl+waeNDxuL1/gtoe/7yU7A0/ZFWPYYq+v8A8nPyG0H8vYvr80g1PzLMnGXU
CvFIVb7UduprxHYsfib2G2KHqWKvzFxS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FUfomhazruoxabo9nNf38xpHbwIXY+JNOgHcnYYq+lPyx/5xIhi9LUvP0wmk2ZdD
tXPAe1xOu7e6x7f5RxV9G6ZpWm6VYxWGmWsVlZQDjDbQIscaj2VQBihFYq7FX5i4pdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiq5Ed3VEUs7EKqqKkk7AADFXuP5Y/wDOLPmr
zD6Wo+aS+g6Q1GFuyj69Kp32jbaH5yb/AOTir6n8m+QfKXk3ThYeXtPjs4yB60wHKaUj9qWVqux+
mg7AYoZBirsVdirsVfmLil2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV6J+W
v5F+efPkkc9pb/o/RSf3mr3YKxEd/RX7Ux/1dq9WGKvrL8tfyK8jeQ0juLS3/SGtgfHq92A0gPf0
U+zEP9X4qbFjih6JirsVdirsVdirsVfmLil2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxVkPkzyF5s85akNP8AL2nyXkgI9aYfDDCp/allaioPpqe1cVfU35Y/84seV/L4i1DzUya9q4ow
tiD9RibwCNvN83FP8nFD3JESNFRFCIgCqqigAGwAAxVvFXYq7FXYq7FXYq7FX5i4pdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVRWmaXqWqX0NhptrLeXs7cYbaBGkkY+yqCcVfRv5Zf8AOJFx
L6OpefZvRi2ZdDtXrIfaeddl/wBWOp/yhir6V0TQdG0LTotN0ayhsLCH+7t4ECLXuTTqx7k7nFCO
xV2KuxV2KuxV2KuxV2KuxV+YuKXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWwCTQdcVey/lj/z
jJ5y81+lqGuBtA0NqMHmT/S5lr/uqE0Kgj9qSnYgMMVfVfkT8svJvkex+q+X7BYZHAFxeyfvLmb/
AIySkVp/kii+AxQynFXYq7FXYq7FXYq7FXYq7FXYq7FX5i4pdirsVdirsVdirsVdirsVdirsVdir
sVdirOfy6/Jvzx59nVtJtPR0wNxm1a5rHbLQ0YK1KyMP5UB96Yq+svyy/wCce/I/kf0r1ov0xryb
/pO6UUjbxgh+JY/nu3+Vih6firsVdirsVdirsVdirsVdirsVdirsVdir8xcUuxV2KuxV2KuxV2Ku
xV2KuxV2KuxVOfKvk/zN5r1NdM8v6fLqF2aFljFERSacpJGoka+7EDFX1D+WX/OJ+g6R6Wo+dJU1
nUBRl02Oosoz/lk8XmPzovajdcUPfLe3t7aCO3tokhgiUJFDGoRFVRQKqigAGKqmKuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV+YuKXYq7FXYq7FXYq7FXYq7FXYqrWdnd3t1FaWcElzdTMEht4VaSR2
PRVRQST8sVfQf5Zf84matqHpal54mbTbQ/EukQEG5cdvVkHJYgfAVb/VOKvp3y55X8veWtNTTNBs
IdPsk6RQrTkenJ2NWdv8piTihNMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir8xcUuxV2Ku
xV2KuxV2KuxV2KvWfyy/5xx87ec/SvrxDoegv8QvblD6sq/8UQEqzV7M3FfAnpir6v8Ay+/KTyT5
DteGiWQN6y8Z9TuKSXUnjV6Dip/lQBfbFDMsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs
Vdir81/MekS6N5g1PSJgVk0+6mtWB61hkKfwxSluKuxV2KuxV2KuxVl/kD8qfOvnu79LQbEm1RuN
xqU9Y7WI+DSUNT/koC3tir6v/LH/AJxt8leT/Sv9RUa7rqUYXVwgEETDf9zASwqD+01T4UxQ9cxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kvkn/nLD8sbnT9fHnjT4i2m6nwj1Pi
NobpVCK5p0WVVH+yBr9oYpfPeKuxV2KuxVM/L3lrX/Mepx6ZodjNqF9L9mGFa0H8zH7KKO7MQBir
6a/LH/nErTrL0tS89zLf3Io66NbsRboetJpRxaQj+VaL7sMVfQ1jYWNhaRWVjbx2tnAvCC3hRY40
UdlRQAB8sUK+KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KofUdOsNTsJ9P1
CBLqyukMVxbygMjowoVYHFXyj+Z3/OJ+v6fcy6h5HP6T01iW/Rkjqt1COtEZyqyqPmG7Ubril4bq
/lzzBo0ph1fTLrT5FNCt1DJCa/7MDFXaR5c8wazKIdI0y61CRjQLawyTGv8AsAcVe3flx/ziZ5k1
SSO985ynRtPBB+oQskl5IPdhyjiHz5H/ACRir6f8p+S/K/lLTV07y/p8VjbCnMoKySEftSyGru3u
xxQneKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv8A/9k=</xmpGImg:image> - </rdf:li> - </rdf:Alt> - </xmp:Thumbnails> - </rdf:Description> - <rdf:Description rdf:about="" - xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" - xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" - xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"> - <xmpMM:InstanceID>uuid:c0bf7369-70b8-e149-ba20-879996a952c8</xmpMM:InstanceID> - <xmpMM:DocumentID>xmp.did:0080117407206811B4F28F4470BB07B1</xmpMM:DocumentID> - <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID> - <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> - <xmpMM:DerivedFrom rdf:parseType="Resource"> - <stRef:instanceID>xmp.iid:FD7F117407206811B4F28F4470BB07B1</stRef:instanceID> - <stRef:documentID>xmp.did:FD7F117407206811B4F28F4470BB07B1</stRef:documentID> - <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID> - <stRef:renditionClass>default</stRef:renditionClass> - </xmpMM:DerivedFrom> - <xmpMM:History> - <rdf:Seq> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>converted</stEvt:action> - <stEvt:params>from application/pdf to <unknown></stEvt:params> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:D27F11740720681191099C3B601C4548</stEvt:instanceID> - <stEvt:when>2008-04-17T14:19:15+05:30</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>converted</stEvt:action> - <stEvt:params>from application/pdf to <unknown></stEvt:params> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>converted</stEvt:action> - <stEvt:params>from application/pdf to <unknown></stEvt:params> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:F97F1174072068118D4ED246B3ADB1C6</stEvt:instanceID> - <stEvt:when>2008-05-15T16:23:06-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FA7F1174072068118D4ED246B3ADB1C6</stEvt:instanceID> - <stEvt:when>2008-05-15T17:10:45-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:EF7F117407206811A46CA4519D24356B</stEvt:instanceID> - <stEvt:when>2008-05-15T22:53:33-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:F07F117407206811A46CA4519D24356B</stEvt:instanceID> - <stEvt:when>2008-05-15T23:07:07-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:F77F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> - <stEvt:when>2008-05-16T10:35:43-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>converted</stEvt:action> - <stEvt:params>from application/pdf to <unknown></stEvt:params> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:F97F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> - <stEvt:when>2008-05-16T10:40:59-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>converted</stEvt:action> - <stEvt:params>from application/vnd.adobe.illustrator to <unknown></stEvt:params> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FA7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> - <stEvt:when>2008-05-16T11:26:55-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FB7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> - <stEvt:when>2008-05-16T11:29:01-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FC7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> - <stEvt:when>2008-05-16T11:29:20-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FD7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> - <stEvt:when>2008-05-16T11:30:54-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FE7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> - <stEvt:when>2008-05-16T11:31:22-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:B233668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> - <stEvt:when>2008-05-16T12:23:46-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:B333668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> - <stEvt:when>2008-05-16T13:27:54-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:B433668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> - <stEvt:when>2008-05-16T13:46:13-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:F77F11740720681197C1BF14D1759E83</stEvt:instanceID> - <stEvt:when>2008-05-16T15:47:57-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:F87F11740720681197C1BF14D1759E83</stEvt:instanceID> - <stEvt:when>2008-05-16T15:51:06-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:F97F11740720681197C1BF14D1759E83</stEvt:instanceID> - <stEvt:when>2008-05-16T15:52:22-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>converted</stEvt:action> - <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FA7F117407206811B628E3BF27C8C41B</stEvt:instanceID> - <stEvt:when>2008-05-22T13:28:01-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>converted</stEvt:action> - <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FF7F117407206811B628E3BF27C8C41B</stEvt:instanceID> - <stEvt:when>2008-05-22T16:23:53-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>converted</stEvt:action> - <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:07C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID> - <stEvt:when>2008-05-28T16:45:26-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>converted</stEvt:action> - <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:F87F1174072068119098B097FDA39BEF</stEvt:instanceID> - <stEvt:when>2008-06-02T13:25:25-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:F77F117407206811BB1DBF8F242B6F84</stEvt:instanceID> - <stEvt:when>2008-06-09T14:58:36-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:F97F117407206811ACAFB8DA80854E76</stEvt:instanceID> - <stEvt:when>2008-06-11T14:31:27-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:0180117407206811834383CD3A8D2303</stEvt:instanceID> - <stEvt:when>2008-06-11T22:37:35-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:F77F117407206811818C85DF6A1A75C3</stEvt:instanceID> - <stEvt:when>2008-06-27T14:40:42-07:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed> - <rdf:Bag> - <rdf:li>/</rdf:li> - </rdf:Bag> - </stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FA7F117407206811B4F28F4470BB07B1</stEvt:instanceID> - <stEvt:when>2009-01-21T22:25:39-08:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed>/</stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FB7F117407206811B4F28F4470BB07B1</stEvt:instanceID> - <stEvt:when>2009-01-21T22:26:20-08:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed>/</stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FC7F117407206811B4F28F4470BB07B1</stEvt:instanceID> - <stEvt:when>2009-01-21T22:27:11-08:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed>/</stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:FD7F117407206811B4F28F4470BB07B1</stEvt:instanceID> - <stEvt:when>2009-01-21T22:28:03-08:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed>/</stEvt:changed> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:0080117407206811B4F28F4470BB07B1</stEvt:instanceID> - <stEvt:when>2009-01-21T22:30:09-08:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> - <stEvt:changed>/</stEvt:changed> - </rdf:li> - </rdf:Seq> - </xmpMM:History> - </rdf:Description> - <rdf:Description rdf:about="" - xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"> - <illustrator:StartupProfile>Print</illustrator:StartupProfile> - </rdf:Description> - <rdf:Description rdf:about="" - xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" - xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" - xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"> - <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> - <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency> - <xmpTPg:NPages>1</xmpTPg:NPages> - <xmpTPg:MaxPageSize rdf:parseType="Resource"> - <stDim:w>19.000000</stDim:w> - <stDim:h>19.000000</stDim:h> - <stDim:unit>Pixels</stDim:unit> - </xmpTPg:MaxPageSize> - <xmpTPg:PlateNames> - <rdf:Seq> - <rdf:li>Cyan</rdf:li> - <rdf:li>Magenta</rdf:li> - <rdf:li>Yellow</rdf:li> - <rdf:li>Black</rdf:li> - </rdf:Seq> - </xmpTPg:PlateNames> - <xmpTPg:SwatchGroups> - <rdf:Seq> - <rdf:li rdf:parseType="Resource"> - <xmpG:groupName>Default Swatch Group</xmpG:groupName> - <xmpG:groupType>0</xmpG:groupType> - </rdf:li> - </rdf:Seq> - </xmpTPg:SwatchGroups> - </rdf:Description> - <rdf:Description rdf:about="" - xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> - <pdf:Producer>Adobe PDF library 9.00</pdf:Producer> - </rdf:Description> - </rdf:RDF> -</x:xmpmeta> - - - - - - - - - - - - - - - - - - - - - -<?xpacket end="w"?>
endstream
endobj
3 0 obj
<</Count 1/Kids[78 0 R]/Type/Pages>>
endobj
78 0 obj
<</ArtBox[5.06299 4.16992 14.5635 14.8301]/BleedBox[0.0 0.0 19.0 19.0]/Contents 79 0 R/LastModified(D:20090811102515-07'00')/MediaBox[0.0 0.0 19.0 19.0]/Parent 3 0 R/PieceInfo<</Illustrator 80 0 R>>/Resources<</ExtGState<</GS0 81 0 R>>/Properties<</MC0 76 0 R>>>>/Thumb 82 0 R/TrimBox[0.0 0.0 19.0 19.0]/Type/Page>>
endobj
79 0 obj
<</Filter/FlateDecode/Length 127>>stream
-H‰Ò÷wVÐ÷u6PprqVà2Ð340S0Ð3°4’Eé\úîÁ -éÅ\… -† -@h¨`h¬gjflª`©gªœËÌåÒ5òtMôŒr (;ƒ++‹ÑAî\F -å -& -¾@#³€ØKl;@Ò ›‚6¹ú}` -8;Yc,@*f)`0E;+-!*9~>
endstream
endobj
83 0 obj
[/Indexed/DeviceRGB 255 84 0 R]
endobj
84 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
-8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1 -VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH< -PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
endstream
endobj
76 0 obj
<</Intent 85 0 R/Name(Layer 1)/Type/OCG/Usage 86 0 R>>
endobj
85 0 obj
[/View/Design]
endobj
86 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>>
endobj
81 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>
endobj
80 0 obj
<</LastModified(D:20090811102515-07'00')/Private 87 0 R>>
endobj
87 0 obj
<</AIMetaData 88 0 R/AIPDFPrivateData1 89 0 R/AIPDFPrivateData2 90 0 R/AIPDFPrivateData3 91 0 R/ContainerVersion 11/CreatorVersion 14/NumBlock 3/RoundtripVersion 14>>
endobj
88 0 obj
<</Length 950>>stream
-%!PS-Adobe-3.0
%%Creator: Adobe Illustrator(R) 14.0
%%AI8_CreatorVersion: 14.0.0
%%For: (Nicholas Jitkoff) ()
%%Title: (go_Template.pdf)
%%CreationDate: 8/11/09 10:25 AM
%%Canvassize: 16383
%%BoundingBox: 5 4 15 15
%%HiResBoundingBox: 5.06299 4.16992 14.5635 14.8301
%%DocumentProcessColors: Cyan Magenta Yellow Black
%AI5_FileFormat 10.0
%AI12_BuildNumber: 367
%AI3_ColorUsage: Color
%AI7_ImageSettings: 0
%%RGBProcessColor: 0 0 0 ([Registration])
%AI3_Cropmarks: 0 0 19 19
%AI3_TemplateBox: 12.5 12.5 12.5 12.5
%AI3_TileBox: -386.5 -296.5 405.5 315.5
%AI3_DocumentPreview: None
%AI5_ArtSize: 14400 14400
%AI5_RulerUnits: 6
%AI9_ColorModel: 1
%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
%AI5_TargetResolution: 800
%AI5_NumLayers: 1
%AI9_OpenToView: -31 36 16 1320 721 90 0 0 78 169 0 0 0 1 1 0 1 1 0
%AI5_OpenViewLayers: 7
%%PageOrigin:-2.5 -0.5
%AI7_GridSettings: 72 72 72 72 1 0 0.8 0.8 0.8 0.9 0.9 0.9
%AI9_Flatten: 1
%AI12_CMSettings: 00.MS
%%EndComments
endstream
endobj
89 0 obj
<</Length 21280>>stream
-%%BoundingBox: 5 4 15 15
%%HiResBoundingBox: 5.06299 4.16992 14.5635 14.8301
%AI7_Thumbnail: 116 128 8
%%BeginData: 21138 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C45FD07FFA87D5227F827275252A8FD69FF5220FD05F827F8F8F8277D
%FD65FFA8F8F8F827F827F827F827F827F8F852A8FD62FF7DF8F8F827F8F8
%F827F8F8F827FD05F852A8FD5FFFA8F827F827F827F827F827F827F827F8
%27F827F8277DFD5DFFA8FD05F827F8F8F827F8F8F827F8F8F827FD04F827
%7DFD5BFF52F8F827F827F827F827F827F827F827F827F827F827F820F852
%A8FD58FFA820F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F852FD57FF7DF827F827F827F827F827F827F827F827F827F827F827F8
%27F827F8F8207DFD55FF27FD04F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827FD05F8277DFD53FF27F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F8F827A8FD51FFF8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F852A8FD4F
%FF27F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F82752FD4EFFF8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F87DFD4CFF27F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F8F8F852A8FD4AFFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827FD04F827A8FD48FF27F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F8F8F87DFD47FFF827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%7DFD45FF27F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F8F827A8FD43FFF8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827FD05F852A8FD41FF27F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F82752FD40FFF8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F820F8F8F87DFD3EFF27F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F8277DFD3CFFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F827A8FD3AFF27F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F820F87DA8FD38FFF827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F82752FD37FF27F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F8F827A8FD35FFF8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F852A8FD33
%FF27F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F82752FD32FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F87DFD30FF27F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F820F827
%7DFD2EFFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827FD04F827A8FD2CFF27F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F8F8F8
%52A8FD2AFFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F82752FD29FF27F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F8F8277DFD27FFF8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827FD05F8277D
%FD25FF27F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F82752FD24FFF8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827FD05F876A8FD21FF27F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F8277DFD20FFF827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F827A8FD1EFF27F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F852A8FD1CFFF827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F852FD1BFF27F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F8F8F87DFD19FFF8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8277DFD17FF27
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F8F827FD16FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F852A8FD13FF27F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F8277DFD12FFF827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27FD04F8277DFD10FF27F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F820F852A8FD0EFFF827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827FD04F852A8FD0CFF27F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F8F8F87DFD0BFFF8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827FD05F8277DFD09FF27F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F82027A8FD07FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827FD05F852A8FD05FF
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F8277DFD04FFF827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F852FFFFFF27F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F8F87DFFFFF827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F820F827A8FF27F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F852FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F8A827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8F8
%7DF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F82727F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F82027F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F82727F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F87D27F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827A8F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F827FF27F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F8A8FFF827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F87DFFFF27F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F87DFFFFFFF827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%20F8F8F87DFD04FF27F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F8F852FD06
%FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F8277DFD07FF27F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F8F827A8FD09FFF8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F82752FD0B
%FF27F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F8F8F852A8FD0CFFF827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F827A8
%FD0EFF27F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F8277DFD10FFF827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F87DFD12FF27F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F82752FD14FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827FD05F852A8FD15FF27F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F8F827A8FD17FFF8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8277DFD19FF27F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F8F8F87DFD1BFFF827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827FD04F827A8FD1CFF27F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F852A8FD1EFFF827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F820F8F8F87DFD20FF27F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F82752FD22FFF8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F852A8FD23FF27F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F8F827A8FD25
%FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F8277DFD27FF27F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F8F8F87DFD29FFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F827FD2BFF27F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F852A8FD2CFFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F827A8FD2EFF27F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%7DFD30FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827FD05F852A8FD31FF27F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F82027A8FD33FFF8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827FD05F8277DFD35FF27F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F8F8F87DFD37FFF827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827FD04F852FD39FF27
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F8F8F852A8FD3AFF
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827FD04F827A8FD3CFF27F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F8277DFD3EFFF8F8F827F8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F8F827F8F8F852A8FD3FFF27F827F827F827F827
%F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F8F852FD42FFF8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8
%F8277DFD43FF27F827F827F827F827F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F8F8277DFD45FFF827F8F8
%F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F820F8F852FD47FF27F827F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F827F852A8FD48
%FFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27F8F8F827F8F8F827F8F827A8FD4AFF27F827F827F827F827F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F8277DFD4CFFF8
%F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8
%27FD05F87DA8FD4DFF27F827F827F827F827F827F827F827F827F827F827
%F827F827F827F827F827F827F82752FD50FFF8F8F827F8F8F827F8F8F827
%F8F8F827F8F8F827F8F8F827F8F8F827FD05F8277DFD51FF52F827F827F8
%27F827F827F827F827F827F827F827F827F827F827F827F8F827A8FD53FF
%52FD04F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F82752
%FD56FFF827F827F827F827F827F827F827F827F827F827F827F827F8F8F8
%7DA8FD57FF52F820F827F8F8F827F8F8F827F8F8F827F8F8F827FD04F827
%A8FD59FFA827F827F827F827F827F827F827F827F827F827F827F8277DFD
%5CFF7DFD04F827F8F8F827F8F8F827F8F8F827F8F8F87DFD5FFF7DF8F827
%F827F827F827F827F827F827F82752FD62FF7D27F820F8F8F827F8F8F827
%F8F8F852A8FD64FFA852F8F8F827F827F8F8F82727A8FD68FFA8525220F8
%F82727527DFD62FFFF
%%EndData
endstream
endobj
90 0 obj
<</Filter[/FlateDecode]/Length 15923>>stream
-H‰ÜWûsÚ>¿€ÿA77½If -Øæ‘þD’¦G¿ypözÓé0 "KI&¡ýä8}LÚk‚µ«ÝϾׯþÞV»“j£æ Ê«W’`-䲧¨ÇX¬´4GGƒcä6k0u{§£”ñ#‘Š -~fI–xenÝR&Vè=Õs1™££c ÞSͧbtOˆaMjQ09Î4ƒ¨K8;C§u×;ä:g^uoæ¬ýd·Ý8mÀÙ¹ˆy@ùô\<ž¡j"·ÿð/: jZsÚ^§ƒš5·Ýéxp«Ýh™¿§
Ç…;—ÂCÂu_ -Ÿ(u!˜ê],1G7x -ŒþKèœa^G´FW”°9ÄÀt{®7:)nãpLÀö‰9nŒ¬È -dXóÝŸŒz!œ‰Ö€/ÞaÀ¡ý9ú< Sj#®úrœŠ•" -±œ«„Í·uJædë׫µ6>R.0ÁrT§m T½ŽùÓtZðÙp[ßÊAdAÉúœ$^èJ=L"Ól:Nò™P1#ò§ÐµÍQ'qÃþüþÃS•ê®>†{,§DCP‹µÍ¸ÓL¸ù/‰‰•›(¸‹¿-ÆjÃ… -§\¡›}&R#!
!|Õ‡8ÝI:¥ü¬j\XuלŒÞI¬"xâþ[j§…ßNö›€»µ&<¹sqSȧv3Íoyp!Bã|eÒ’€C~01MhùwKëq”XaŸG§¾¤ÜȬÜZÊé¨Ïb ½“"Žz|"*GIÅIPB„¢µÙߦÑñÞÛ—d¥°ºžœ¾åÂDT›Ÿ` ÿ`}/±øÑÝø+ñ5ÈHV߆1Õ%0öæX"{žC¼¦ `ðÑ -äꬄP¬gÐT.3y\——œ–7ôMRHt.c5C÷B°\ì:)—žÛSÃÿ{èèÛüŽ'ÚÖ”2lj‚~ðÛiîÝ€ø;K¿ÀŒÑ©ÄÑŒúO)x‚žkJhÏI¬e8Œªp•O…“>–šúŒ—J“pŸ4ã å$¢íZFf¶£áGÄÊÔ³+Ë9̶FЋ¯ZÝߟ}¡“PÌìÓKFT¥þÜ> ³ÊÑgh‡8fúË1ªßâ וúÂD&‹ƒî*°4À?˜R{¾$?Ÿ0\À…“–ãjû¤Ó>mØ/Žçyf¦8n»™Ž´OÝJ6Háa ïáËW8z€Mé}þâ -ªT¡I²O@шX3Ê ÒäækàtwpF’("a܉‘‘¤’‡DC`Äœ¨ýÒ}F#ä“øH‚y‚g7`W¬÷À¬Í+CsÕŒz!ÑÃÌöIrgÓúf*ÁLnàP‘H
‡E,á -"ZÛ0
CcÚ8 -±š'G°:ÖÃY„ƒ 9{cà¢n¬Xœ°ùn¹«ƒ"èM)ÆÌ&o.5¸ƒ Ž–86â\„¥›¥¾ïD]0v‘™Þ•'V9(ûqm—pœ´]˜õ»³ýÍ©Ûkö4¤¡–fJíɵ)P󎕃Í0yæ×?Ý\ßÂ*ÿdb‚àÇq W!°’ŽcåJÁ”_-â'È/pù3x³“$f–VÕ|èe”:çèŸ\Xª7+‡¯±.0‹3^s®vðq˜y¯ÿxïpx},á&ü9 Êx&ãüI‰ù½va n Û 9àmíÖqؾ"÷O -ÿzÂÝë‰RöS<f¤LâŒêŸTèg‹Ò¥nX_8£y~¬´_¶“ýº<<SØì'fß‚+›Ž¿¼. -íK÷ÝfÍmw:‡lY–±eùÒ¶tj-Çi²åzVÆž”ñemrZ»íx‡Œš:•éã9盕½Åî2h,4¬×d¢ï$R^Æ´í;¿ÁØ·ýn(bé“sóàÅç>L§—†Xƒ~Gçqü#~^ªp -ÌöòçÐ8D¢‹Må|18õáf&Ûs]t™^D°ßĺb‡„‰ú’(¢Ñêm«Ýj5Z©QÝ^a©ÇË -¸±& “Ø—É4¶-'k6Á
Q34ÀJI¿aceÁàtzMït7h R–W’ ál8k8îbUû‘xÉZb®"¹â/
¢ßHI+7ŒHÁ¸ƒ¼¹qîZDlÈA÷äQ£·ÕxLÕË<|©Èí\ºÆ|ã)A}eá>r›5§ærzÞí]ÅŒew?©Àg@Í’í i‹ÅI€ê·B¯‘Ý"ž·ý!º[&¶óP·g‚Ç('4ŠyÖ|]\ÆÇe€dŽ©¯úzý«×ÀÝ&±×{Õ&“ŒÛì[|à]H¥éqjN£1Ã|~¼š$à+EŒ
²¾,‰R¯m÷˜Í›Ùê7y¦Pô^Œ{|"ñîñfH“PlDt½ƒØ˜?7XGŸ{ŒÅ -ÊRC-\’ Ž™~¢c1$VèªEÚþ´å1ƒ«y5º0•v)¸ÂaÄÈfƒxÊÙÙÕs&EHV÷ÿ¢|»_.Ùšöi~KÈ…#h¦.ÿãUñ·ŸÖš\¼›L`~\æ®ÔBÎÏí´W£ƒ&ùüiU±.wÜóŒÂ¾ÊHûJ€Ú°Ý|Ò{‘v«f©Ü³ŠÉZÈ@'ñ%ÐúR -é´G}Ö—»¾c¬¯ñj74^ë@@WIÔ¡…tÇbQB¥Íß]¹°_éFêoj}^x«—„ý·nêfÖ?+BÖs·›—¦šµÈö3¶ÊŽùï3Áp6Èa8Oá~ßæ^£M^îöt¹Íð)¹éfôd3<˜¦^Á|‘ŒõbM–¹Í®Ub±{^ʘ÷®Ã`wcôÉŽ,/FNZàÕL˜&c“×'…Ný¬.ÿs²¶\Ÿj¶ìoIjƒ“Ÿî’(M9^ŸûcW"o0ôæüÊk¬½{ˆà0߬w¤[ÂÎ Š#jž§F”Î÷Œ’@9Ã\[–«¡¡Æ<€é°Ÿî%
“ÒFÑ8;ˆ@q—ÿ÷Uº•¼²DŸÀwÀÂf1ˆe !„d8gÝ·¿ÕÝçsÏ¿ûÇéêvíª®ú‡$NÙZÇ}ëC‚ø m6§]â[¾×CT¦ëÕ¾ŠÈðÛ,ÙÅü=¥?0à{ˆÚv÷³¨Õ -ëŽ-îçb9?CØؘñà<PÈbV}]Ö6 ÛÄpÈŒêü ”Ìërí´¿ç´•Ë9Ï¢>æÒvèga´Â>&«®‘µoE\`
©„¿çÊþ³>¸6л\Ð}
ÔF@32MÔ™Útåšž -¹ÀØéê -2åÚ¯‘ -ÝpM÷HXs-48Û»€"ÐSIgßô r¯°‚¾05W¶bmd8€wë±m~ºsVóô«È¯[Ž¾n~ÙQuÃ’VŸ–Õ6]ì~KÍÓäø]=;ÚŸóiù–q𤴌asjüý[WœSÒ7šIEM»áOõôé4óçÐêéÇñò³'(A³å×á»^Ë°Cþö5‘혿²$WH%HÚFýsz\M`…+d6’N»¡µ~ŠÓãê)Ô¤BáæZ6cÑa2Wñvi®uëËhíPñÊ[ ‹ü6¿œ¤ÍÕeQ½ù}ÒT‹ì<LãNaÜi¾‘ÏÞ'séò‹ïžßtVU÷7T<™tÇb;y&›¡˜‡Ïô#Ažmvü®”ˆ^P|¦|¹= -÷¢y÷T湤Q“¦·Y]ŽD|æSåÑ3Øce•J³ü^žõÄd'–ëòN(Ôö:˸ªœô´ÄÙÂ׺ äq¬8üT™‡MÙæS÷E¨K‘æ×FréÏÍÕŸÞE–´¢ª??_P,u -—bøfæja÷ŠøÐÖF‡*5óÓº¢_?ù¥Iò5à ԕ—Bš—|
U2Ál³èždt]›£¯)ŒËb9‹jìvꤧýâH\P9_xK¿„rÍû†üð™âäê‚b2Í/¬tß’¾½ÏDÙåËí”e£»ñ•°ÕqzžŽŸ4êrq×ØXŸÁ¶®b£ôTŠjßøý?2Äû¸$<—)^*pî–J]ï /….ãβҺOsÍQ7º{XmvEA@Y&èF)é2-æi…pÊŠó -ü‰±R|$¯âóm -¾ÚYøMã¿ÅMß -ˆ5ò›¥G… Ûï!:¹üÞh™³°}8–nÎq»¸¯p ÔÈÁŸ®à„›÷÷ù#ŠÜ“‚gÇ÷pÔÒldÁÊy¢>Oí?MÄ»4œ¬$.óG°ÀQK¼›=ât‘³ÿ%|ÁÌA–?úðE,¿I Ž€|5Z§gÿ"Z ¼|AŒohѹ,;£²©ò,|€¬|‰#q„Ã3þTÌ
GÌ€'ÄÞG
w,{'çÞ8Š”„ÛÍžEúˆÑv׋ó¬ìF"H|V*VA¢k¨ -ƒDê{9ý‚B½YZ©¼Ï¨Ã¤?N8Œ”°‚·Ò,«ƒûç´zŒÀ+3†é›ãköÀä"Ïù–»aJÓþ+¯èó7/yÊãÄõþñëuÆ9vÐ-¼ÎÀ.v¾Ð`Ge3È‘Ñï±x±ß¸³m+ææ›>Jšª¹Tz‰¯†P]ɾÖßa‚]ðËø¹ïé‡Øâ•ÔõûÓèŸ@–ÐæFÑCõ¨È„aÇÞ‡¦l•;{¶B“Rñ²±¦°—›Šcus°š¢Ý6µP×c2ž}PÐNµð:z_}_0)Á´~Ýù7ËÉ/V4)ýËå䫉5õF¡
ÉüëaSc¶ùÔ}êRno(7‹ÈöÎÊAƒš[óQ»(â1ÖÆÉVõÿµY°Û©gpܧî^ä’ÈøÀ@`(>ñÝ øDõöxŽóqöœœ»¦}–)EäÂŒÕlØ`³@ÀYð«;¶¹(×…J£t‡ê$ä´ùj© xf&x*€¼¸`Ì.žþ/({þÿè¨Q‘ósÊ€òz‚›_èðÚç7†©I>œ«-±¤pÿe½:·å–èôC˜&¥•C2gÌ-ÚÌYßÿ 4:ö|óãþ™Õ³8VSµkï]ƒa²¨¹e}ðëÅ)<mdª¶e£ï›ªŒÏ¡X›˜F\ƒßç*Òß8øå—- Ýá¹A˜}nSöÁ"RScæ€$µÅ@á6‘OÛÏìDr¶ÛZ› -–ý¬Z"9‰¿‚fJR†¸C÷7˜Êˆ‹Þ%dù¡A‚š– -\½ÆÖ"XoW¹_ôÖs¡z¥Ù–löøÐYGï5>¸ js›ÔˆÒ1¸Í^ªóóKæûT¾äþgþp™”ØóyÙŠ%ËŒž EdRcm»ã •æó–ØÕ#—ãb7Žû[ÛS -¢SÅ€ùAŽ‚+¤ïb¢Ÿ=Û9 Çü1 «ì7þÙÔ©!I#̶Ô^e™‰²g;uŸ;¹ô5W ~ôZǹ…«%¼¨=hLjšÌ„Âû161mœ4ç÷)Ø¿Mo„Dn]cÿ9¿QA% -“˜^ËE´é…Uð ò«ËŠ„ÙWð≉HoæEÞ2h٥›ÅÉÆʯaë6PîÇôFÃY¾¸Õ$à [fëÕ®¨ØÏŒ6~+3a¶£ýðyí‚êÉŸsb8ØÒÁ`8×öë¥].žœÝó{rµ·
6´¹×mLJËÈXi%†âHq
àò{⯩XKwÀº¤Ó• óšæ,ÄI¨¿zö0:cÈ~ÿ¾ëuiN‰ê”Ígí6NRLTœ‹Ju2o’ÒGÅÄ©øB1/]úë$/pOu°L¦åò»Õ€‹·»ATÇkÔ}Ì‹+;¤¸Mxv¶ZCP>CB~PÂ5³ÑÐ -3nëÊxžÃ¶Á¼*7(`Ï´V¿ý|50ÖAr‹’jGoØu ^¾ëXL©Qåq$êH\ÁTŽ?£i‹ó0²€¯BSÆß+r(áÏkñÜ+x‹>«¦!úòæÜžfŠ›¢j1÷
-¸èiuˆ<]©nq˜Rßö׸vI"}X‰JwÙ ôÞ“ê`}g˜’ôõkl »¦â”Äâ\ÃVÔ>ÿ?Ê«l+yf‰>ïTd†0O""aRfDAÌÐ@$$|Ýçÿþ‹ó짓0“Î…kI²»v
]»*mòeñýðîÄIæ~½ä$×ùî£è&gÏÑAÄP}ñË7Ë÷ä‰ÿyesÙ\äãê!tÌ·³âÉ’~áÒ‹,3‡·mg'Ñ—j=2s–f&"íÂüIð3U©08ùt¸=º-¹^Ÿ“¤.ŸrÿÀoÇ–ª¢úý+r½bl¯ŒGÌêâPˆôøš»©FÕg©§AÛ{os$Z8ÔûA6]d¿|y9go•¾]ã°Ú#æÅ>¥÷îmmO¾2Õf¥O¿¿q$PÚ¬ˆäªmÔâ…ž‘ê“5ÏMFþƒXãéÛq<Ó?i‚7[ÏËQVL$‚hÉC¾ò.Ò!G(–šx‹uoŠt×Gz¨‡Šüc…˜z»_Ý¥ÞŠŸw©Ù -‹ŠŒ(†Å¬›ò‘·‰D"F«26@uÅŽrå…T‹)Q-À…St˜› -v1å™…»ÜXQÁgE‘TLŠ’JùpENaJ”)^Y®$â-ÛgâzIu -" çYY ê -BT±Õ½6:Ø< çØæKª—„QY -@Ð^Ó·ƒ$YPäÖ àjüae¹K!F -hˆš•:ÀCÔ?« -S‘•¿m]þ/$W$ hèhþžÙGXÚmùQ%ÿŠdªÇ6ø}®9³ÔÌIòÕN„«ëeÛ0n32DÄ%;D#¦ø* Þj–ŬՑp?Á,&®Žå¼»c“S™NÉuqvžÀÎ2ªNC q&³ûÅ辩@°œ²–d^£ðà›1k8q"^²Š£Bu<Ù¦ÌÆ7Q_²¤`´R0²Fî¶{NbùÅ&þ„ÙPT º² À)‘йÿÕQFZ¬¢´O‰C[&[ñQbW—·
ÎbCЦ-Y2”¯ë}<k
´¯ç5gHÑ°ˆw7 ŽÞ{JZZÝà·Ac×W¤EDyj1}4$Ÿˆì„Ö…ÒcS$r,DV=¿ÛcH?]ˆ#ðN$®À£E÷úP(â¦ð%èØë+À{i»Œ=ðú -ô¡×†2G1®`þYýiÑÇú~¸‚S²sYÀ´l©j²¾dãøxÒ–3£EžJ’ö1i„œ]#^êö¥k&_Ö[ÚFã´ÏÞËÐQÇ.úÎDbÆ`µÉŽ£¦À_À/ÿ.,dpTð|»?d(W¾ -Q-Us©üN1"·ˆ`CÁÀ+P [“öÈæÈWS“¢,Û°^ fX̪C¡É3éu¹G²µ}gªÏŸPi*˜ïªÕdŒªj©V½±ï„7×ç‚tÐ[÷zssQÿGÚéÈîE{÷Ÿö"Éõð33M••ÛN–e¦ôðq÷6ìÍvâs»;RÉÚýAgÇæ°{vwã#e÷ÍEòê{°{×é®ÝWgì~º¦ƒÙ¡K£Ùîv…Q8Ç,¢¹æ÷cä9IÆ?âËÿwII"´°KW& `s@ø˜åò¾Uãåé5…“•‡A ¤|DûE8ú ™Ò°WÊæ³|È“OÈ–È]Û[ð{:„¯7W(©¥îHÆÎ@5aõ‰¯J£]=Œ½g(YÂý𗲸§…ûÆÜÜ›…c=Ûɵ÷±l¿××êÂ,A”,G“2?ägY"§‡Ì1éŽë£¶1i9ñKW¿†¤_wšÍqB»'‹¯e‡1éƒÝQÈI[¡Qô&œöìImŽ=-rúê~ÒØÜÅ:‡EcÒèð.Ñžº!éMIˆÛw‰Ž»a+]ê
Òø£ÕÍçÍH¿éòíÇÛž”Är@[ö?9«\àÝ0Á£6¾!m9'éd°$h¤ä.rÅãšÉM‡_*û¼ªÏh¶^ðÒ¨rv•¾J¦¤1©yƒ÷¤û›¬Ó²ðëÞÑ7!-ñqÙ’¢ü8bFZ!S>‡Šq¬7.äLÜC#R¸þ9Ü®Üç؈”.¥Š{RÂr\Õ»nfŒI£Ã1]W:†‘Þ”PƱö»F¤6]ö&±Æo`öÔ4‰Ô„hÕºSI=gém—<¹Ä“½NH+›ã4ÖZây¸!ú]'¤ñnmÑ×I‹£Eé(Ò'ºöYŒ‘Úè¦ò%·í¸F{JZ÷@Ñ”ôi1)äMH?Ýt7
FªÞ±“¿úG¯ðaCÒî$—1%mŒ*/ÏF¤ªòG?tßùž4LðMívÝqBÒ´_)¦¤oå`YÒHmƒX_éþ*òdBšs÷¿ßyCÒAŽó‘MVi'“<˜$x¥ÇÍžÛ˜´Ñœý¼3CÒ1´5Ru¾œÇºlyïßÍHKô¤ýçÁ˜´ù䆟yT8!%,mñÇ7Ip²b4èšNÊÞàòqÓäàzðUI½gMӼ͸¿ÖË éJá>Ocýötî6¤‹”çdÒÜÓõFL#
;ÿÇzu®¥Îá+ÈE5”l(ÅЛEà€"<âñÀ'ûÿv7!ɆÝðOt’éóÎ;i7ÙîþVÝÐhX3 -¬( -…]!|S÷ÎÑâÁhtû/PŒ&Û<ÒrWâ¼È¨˜éÖëÈ(´"ÇêÃ4;IðÓ×Õß·+Àhü·Óe7ĉd©t0yЪDùaÂ>Ä*£Ðž"õ¥…É®å&IAŠ<ËIž<”’¦<]^ß=”Ÿ´«ü½>®2’t¹½i¾•¯RµúåýþVHÿ¹!]ñ²Ùf¯Ð¦H÷÷µJÕ½#Kk±7†«‡BWŠüzü”M|ií«•¼y
¥·O„ã&ó„ŒÕcµ–áSéµ·;Òéƒÿ5÷ÐˤjÆêR°çÙþ“(_—ùqîúeD–6‹óT@¥O°‘ç»q!D‘÷ç?â.§H6«ðbvK–ÞZ×IXþ–±·àPíîӯǛ×#¤“~<åâoŠ´ŒÍúOŽ«9#ý{ûöÍ+.¢”ëµ?_ýìS†$ÝnSã6Éٶßå‘Sy\ª4ÛÒ”ž€Ðöqü³cß|y¢ôð‘ô¹öIO2ä©@0ÛN´¯ÓëÀÃZ½øÖ¤ÒweÏ¡W¬üÑÊ©§Ù
é4Ó_l°v/°|¾Ócù×wpWŽ?_Xÿ0p€¿Zðþ̱áÚp¡þâFþ,Z-€7ÏYdO³mÜ.}àíбƒ®¤¯Õ¬;ú/5
-¬Üÿ×}ÒÌ»mM6šèF]Å¿1l*q³èv ×$¸¦4£ªQÈÆK±$5VÄH¨F!éÒÒËkFevÇZñª*ð€k óè—Rˆ§Ã§÷šî™aö)oºš)ÖÆ{ÛÃxÁéÐƬ¢åG5c]ð5ïI«Ý“ÜýàWò¿ -JÌ1³êÄ—šã¯<2± -L_Ť6¼+|G?O-/€Gß0§ø=éHÀÑä*½ö¾hФš—¢ß³<nÕ@P3€ªçEög˜‚Ò¼_eì¥ÓN÷ -o»’ªB$'°Tó*¤Œ8•…QsoêÂv>†(w ǃ<!w`Rý… ¶éS †&zîkuG¡á[LNõÈmj¯<C4Gb³É¸«E¥ï1,ª€EE†Ñ¿ÆׄE@„)ŒòaÔ1Äú<6kE¼8W×—)]mPZ`Æ.HÌWÒÿ‡¶¥ÛjÓðºN™(ËE†6”‘U©c8ýÜMã+ãÜM\õ¹3Ÿ:ÔÉ“¢ú¥–|—J„%¹-¦¢‹TNÈ”ð‚‡‚‚-ŸØWC öFô{JüBœÜP<‹oâÒŸ»*9H^òX˜±$¨ Ç‹/½¸]J¾înM±Ö.ô” kùŠ”Ådű^ü,ᨪ[Kç°¾‹ÛƒsöDž}àü”5OŒ/jéÒËdWjþØ tÀÞ·›æRV™}»¤R:dÇŸ)çÇ*hEéì×o«®*ñØÉ—(ûôM -æ~1œ]eVw‡™_*ò«Êh=ï<HÕýBÆp¤½0c8¢9ΘÌ4Ž—úƒ0~¸–᨜³cÍW0•²?û´rè-Çþ–©ôšáN6™+”!^T~g*ÿ–ão©fE÷áC <±"WrŸá´ÜÀXÎÊŽý³äFá–'Ù)µ~¬4™SPbIï4P Í‹2™xGd¦DtÅ -ì8bä–gåÄjìŽ0GV4Ä%õÇ Ûƒ„.Ék_RC“ƒuQº?¹ƒNutþdüù½3ÁÇi» -ìäA¸ä -?^ÔJäÜ 5¹7Tþ®l1íuÑ“Œxõ{CÖèÑ1m´ªÆ߬ç$4¿DÇfˆ"?y UOÖ29*¯¹Ùª±ÙnÑCìâ¤Zªð*’úZ)Õ¼ -Á<Ýb¢çn“°›jZ•ñÖ:1„èÙùÊE†Ö¬ÃÍäF—"œJ‹™—}§Ò5#•Æ“gß’L+5H¶ÝgæîÈÇdðEhl3&Œån]Ã× ˆßbŽa²ýóR3îÀ3ú<Ùf‘î³N·èóL—mĘwzÍ°ô΀u
X1ì»óƒ/:cZ˜ÓUGá²0;7ÎöÊee>†¯º€½”¾+{æǨúÏæsg>ux'¶}æ›MÆaCÌz¦d¾ïÊ¢væEî1*ñP•Å.Åä±ìáÂ^EU3Yyç@~H:ðíJMÏň´(פ¦E‡ÉNô8Ü{ -S¢(›îÎ^¢ ¾£µ -¼üP:PXñªb8ÃÂ9wÝ _¿’þ?6,|(ÇDô_l¦RG?NÃ4¢ ˆÖuŽhêõjŒÿuõˆ¶[D
׫}OP&˜ƒ£Ã4+DÛ-â—3¥8ž]—Î~—„hgÌ~×9¢©Õ7ê¹Ñº¢©»ò\=8¢…qUK66Ûw£¨}"0,!P°{|•åZá£ß«Pê8dŽ¢rKÅŸP¥ƒ8¡Ïÿål$PÃÍ }¿¼†Òƒpé"fËIYÈ`Ï€Y Ì È¢Ù§Âì`-zîkõ‹`æË·I0ÜÅT-²‡0–zŒDΑ7 –£žÈ¯DEd‚9ÔCŸ*%×±ƒ2Á¹2Ú.äѼ·aï~5éhƒváe¼°,˜ŠcÖÛ(³s>Rw!vY -›}K¬Å3¶äìVRFKêEÔ·9ç²2 -0·À -àò= -Êë;‚|¤]"©ÜÉ6ÆË°˜"„µ4 ®%ü®´³˜¦;“#—ü `
^y£×mdCüØÝe©´1\—úóÛÈmPì
òľ“úãjÑÕEk<‘gÁÇi¢lo»‰-3–I¶(FrC$ìäɸkS…bä"Q!(Í‹ÔŽ -´<…Hwݽ B÷º«ÍxlÛc}\^gí&xPB:ýX+$“W‚šƒÀ'†‰Pr~ß$XŸ{P /U#îI ô¸þòïPHKqHŠ4ÿEuêF6l¯øœ tõkêÄœyÜý`ÒíCo<!¹à8N‰C -%|žŽÓ[çg3X”á«þÑ'UËÆùeÂöEºèHÝB ¨ÜÆub°ÆJ¿£\|´q`~$¦ÍRXc¥‰µÆWÒ/ÝŒæ@ï*Y6DÐê”M ÕÙýЃG£ð°¬wøÌÔ†ÿqã.My©á\¬]•Ñ´¤&¤îöVb¾ý”ÔÙ~ªòÌþkXVfGã±vテæîö UM‹;9¬JÒ•µIÄù}²Z-QaüKÓP‚MÕïŽÚ¶)çî¯iÌ©¼—$Ò¬fÊ&~íZ¨vƒÂäÕI—¬‘Ú_ÊŠ^w+!ÙÛJÕF'´øq'0 bò¨Å ¤äìÈìïP.Ÿ&7.¬™$ >vš{ù¼ÉfÿFËiûq+6.&ƒŠ¹Cì61eûh -éÙD¸822f}:19\€ˆ„ÄŠûbF4^ь݊éSE¨»&ö2.ž o’.àÄÎ>›ô®h´tŠu9Ňé—8¨Tõ³ÖBPiŸ[ÒAQxOÑA¿uRý;ŠÙŸ[¹rs™iƒû÷÷éÉ"/Ý·
‡Á©mìúýk&™ºz“üÆ諲eÅ!ªeŠ
ç_V1Ñ6ØŒ´§ƒ9û9ÄŸÕÃÇ6¿ÏòÆÃÂÉ,wÕq.‰QL?“0 -²z ,ö8Þyƒ˜ËÙ -s¡Râ«òJÀ#‹q†æ‘çä•\‰“<šä‡Å{Dr¹RÉcJˆBªëÈU.…DÁÿ;çu`#>†BŠKl|°ï¸b`>²ë -KJ’®„%[§ÜËhxŽ -Œ‹IÞÂáÚìKM2t‘i²|ºdÉ2šƒ£øVÈ‘åY‡&ËÜœvØ„k7ù¸ -¢F>¡xiÅ%TR°º¥ºÁ⢲ø7U.>u<¾IW§P¿;j‡O2°¿.H¹ÿ£#ÏQ&¯
ô»Ä›Ä¡v8uU³û&±wâNbý2îŠ{™ý-§íÇÍÙŒh<cØT–g -ó1€v‚ŒËm?c
û¶œ±þµ]m'ogçv*£’„vhѸQ46&o½v4Ã9hÅÉÅ“}î-I‰ŒÑò‘kÊ¿ÈÙtþ§j^¿³—ÿ.ìJ2c2»†ÈØ1eƒ™ÍǤoXÊŸâR}q§-ŒD$wìOªGg±¾—Œ0G‹Y» þÆ/&!HÒAOYàÏï|k‰H†Ix¦.–2Ü’,àη±ëF¶ßýƒ_`r;:íà®ýv_ÒΫþÑß0ŸÙvÖ ñ‚h<NáÍ~»¨¤«þ -ˆ!ê~85ÃFF -”8uPÀ‹<^äG1ýŒH(à–’åc(ÍÉѹÿê´±Ô+UKaÅœë‹t}±±¤ÀX¾sñ5f¼(Ön^†]M -‰ƒNz¹x½ÌúÁ‡ŽC¡Þ²G†ôžh¼²’‘
†sJéž×ˆ‹þ8{Ô/“]ì¼Þ¿4ïZ·×§ÙÏú…1¬+?›“¼oÔ³í_ÍèKûºYK]ÿ¬LŸRûè'³‹¾Ôþ õ\ЫjÓá„gOQÙû)Š·7‰‰j,¿×zd ùªÄQJÝÝT¥·ÿg½µºD•«Ñ¢Žl·ßP ‡gÕrãÞ -Æ+{yø®ç²•þr>/%û™âÅë Ïé|ùTÎc„¡ÜNsÜÎ%àt?;è% -Ûxä¢lQ1†(öös_V¶/ ‰ùˆ¸°j‚íêÎê!µaÁ„î “!–„Bð¹+ßïêÑÝ<Å» OõQ½=MEytw6ã„#4$8Ql˜}]]×+b¶èûdêlWRmrýQ¬ÛOb¿ôÒ¸‰’ô¾KHã•Ãær‰ár›¾ÅW)B.¬éøôÅxR€iwRÊÐRl~ØhÄø` -H‰¬WéZâJ}‚<KÂ*$ D ŒÈˆ.áŠ×‘QåýowÖî¤;ÝAþôç7ªNÚNM‹r1×U˧×5W_¬ëÅ×Y3¡¦ÎºÅ\ã ÛŸ¥òâ0ÖÈ\—×¥äu®v;5þJk1ç“_ç¹êas.ˆåÚÕSU¾˜ôërûP‹Î¦i5U“/åbùW&W{Ý”lcêºkþ¦z¬¿]*“dê~R²€x^ªUMÌUóÝ4õüBÿ+ˆJöÇTs]¹à/sÕùñ¥ù‘
ä©]s¼zòÅx›‚¡å]Hi*$AT·u#”û0y’|<y, b$žJµÛ›./OK‚àIï½W—éç×Än%ÐÜ(Ùú[Ë„²TÒhÉI`ó
@E©'$àÅ5^í‡'µ~wÜöAÙß…§Ù†RßbvªËÌéÒýMÁôR=¾H¾9åõÞ–ŸSÍÅXbЦ=Ì[B'û -Èùl=ÿýÅ€Ú[À˜ö¸ÖCjÇ|tCòê2¦ãÏ2)ç-'1xÏ’‰I¸ã6çãô‹ÇÎK£pÏbg¼Í:¸+ŸEV¤Û¥ÚÍF†~"Æ€U«…8€¶aßÙ%>:H¹«
r RÌ–¤ÂŠai¸œÐ€–·;\åôzß_•ëTx.½Ç—JQB«¤ÍOà«ôðÐðÕI¯Ok¿+´6ž¨Âêfüv!ˆü’ú†—¦ÀlÝÊuß•;4® BbŽ8ˆA–Ç$¾Ñ)ìL×<•Léßr¾X„3~ÒG£‚ÿF[t‚ȱê\´
@oa=“°_\ùukp -pêV` -èMÃÞba> ,Âô&4ÆÜṽ|ó6_HɳÉ8ãBÞÕŽiÅ“¬´ìsÚÙmåaW’iç«hZñÍnwZúìx»dZÊÐaj• ˜ræn—š)P6ù´·ù¬Îy–ηtBÉ”<|îͬÿ¿5‰mø,56‘]óCcj!âî¢Rù6Ëú¨¤å9$CDTk0½î¨—õ<çŒÕXðÂÌÒ:~Iº[w%¡ão;* ’)AT·uƒU”3+%OŒÎW{=/í(+©jð$ûU9aZɳ²Ïiç û®$Øáj&š¢ïJjÎ=;Å×EîÌ©"öD
‚·¡Š–E¾ž5fí׳n‘§
öÊúÛü›?û…³
o#µ¡¯Øcv¹–{kC` -oBŽ9FmÃÑ’Ú†üjò͸y -M{hæq/víÃs½šv¾Ô>öƒvŠ{‰JƬØMU_DioSHƨ¦7¶DKà)“7?ª_$ßÜÎ?ÔcZ¨”΢#ctv¯W_y)ñ=8‰·Œë:á2ÇÃeŽÀ#tcÓÄŽG¨©Ç¾Á
ÙÝqR9óàáŠÎÏŠç%Šõüw$4nöq;`¸¿¨¡Ç-ƶSIß¡øÔ®9V®®ÝòÉÃ-fÏûmµÀ™®ÑÄ纪›øsy¶‹•<£½ï¶á¡
‡ÑÛÐׄ΄¡ËÔ6Äd€·Å°ÍR9^ùn-|‹!àÊ€<›Jäüø24È”i -ÉKšn¬–ÖfÉÁ” -4•¡w%0¦–1˜6c¥ÚíMww%ÈdÁÏqWRF*`ô–>˜# CPc”¯&hÁ'…Ÿ0„^Æ.á†#ª0ŒáÃÀ[(Ô¬Ö‡¯1ÚÀFxœ-FÏo£À8‹|ÆàŒhyiy¶/|lc½TŠ†ëˆdj
£ÖGq‰½5Þð@®¤`.õÞ;¯1JN×æÊ3{ŸÔìhE°'ÚÈ\7ÔŠ -ôrgý£×ÜÉ¿W]¤6P§‡¯Yñ4¶@g²çvµ*†t§ñÖs‘êTnÝÔ¯IN¸=JˆWºR¬ÐéSˆSýàqú,I Ïéj]ÉM§@Øã'¸<|íœ8Nõ¿¨ÓÓxuZþ•ôœ®¶OJä0f|zòÞwcÅ%ŸGÛ²ÓòèžêÐû®šN==†Æ*·77T§RgöúLs:#9÷‹UJ?¯‡T‚eíç½Nqúý"ùQ:Óœ^›N‘œ0[Ó`þe%"V dŸüÝ õ;AD¿,?t¸,–3=ë;{MvŽ¢ÓiÜÖèdßòd¨‰´íðó ?sÐ@×0=i~•òíæû¦’¿µ<„4¥Ûß·%y¬÷¤O^H€±pP˜¸Q€HBF¹ö0oö^Î1\ë¢7ªu™J÷¾©>në ’ Rx*/(<¥bÑS'ˆ$P¸ÌÝ•'o¥#ÙWñ¥žÀÄ$½ &Z$ð¼õ´ðg¤ø¬ÉïF8ZÒÎÇhñùJ“Ð/ܤW¼à„ ¥ÖïŽÛ{é}¶¡:·ðX -zçà㪰0ÇŠa”_z©¾ˆãêMÑ×:ëÓ
IíéÔÖ þ«M¨‚M„Ng1
f?¬›Õ|ì2C
”<1:¤Ðð ‚í!Áç|ú> ¶ê3¡È³ÉxÀŒ*#™Q‘«äï^+ 8ùƒÙ -¨Yà9©f½‚äU¥5-‘D…žbZ^*é;ìÛùjÆ…{ŽHÉÆÊù>*«§ê§BÀ‰Ó ™wÂLÕmxìã -<öY«Ç$R:¶œÄÇqv"D+æ¸Êþ˜j„æk&(2“á¸BÏ>Ù´”!Ú$ÞU©A_¹30ù´¼õ¸ŒU>Æl¹h'Šå<¢Á_:$F‹¤Gà„!г²] .Z€Uù gwþ}#ˆ,E—_ -Ä·5ÑýÂ_¡ çJ¶þÖâ
Èí}@b9¼vØ2ô?ëÕ¹ž,D¯À‹ÀH ->‹Eœ‘ty7wJ'aU(˜}#˜~„ý˜ÑjÆòÍ
ê{úY<ÕÏj¿+Ç⤆ Îr‹ÃC»½,f6CïbÍòòb1”2gõOIzÁ8ÑK±PÁñ¥|¥õ {Ö,ë&§ž›Vë]ç`ß÷Ks-²Zñ‚3™3žçåïN‚•V(;XðŸiÖ¬NÜZ³-Èä¿:øßDko
v€¢pÌÎ~Ù¹r7Ð'+8Ô®{û©N˜xuûŽ¾uSî³Bu -f"\#ÉÐg
}ÿ´5<C/ …a3
–a>óœ0†=«ÆÐF^²†i`šZ¨
åLGžî…‰ƒ*œîZ)°JpÈeèé¬(=m§³¥‹&{Ð}!sL(•/Yó0Ó½7Þ~©\êš”8íá”c(¨0¦`&MFLuGæMæTs€æܦ,2âBsÿQöy~µ‡²ïÌ–q_? ±räÝP^GhÉá¾_UÞ~›<†ýÏoíÀÏåF󹬡là^WöôZ“,ÌG‚ag™;¦ü ‰§~g‰6‚0ÂÍQ·r_*ï%IÜ' ç§ô̹Éð½·Sñ'ýv¿xⶇ Ux9ãGßN<ý0D2×àì½·@ØÑìÜeÈå¦Y¦Þßnh–w£àr^þL,ÇÕEé½ -U‡…]»)|—>š‹ç«Vž«Ú£<CFi–ùêù¿jë:ùøfû‰‰lÒ”$y„}û¾åHÞ±ˆ0ýò¬Í†Ø -Û9ÖeXûä&#Iñpp¾æ+„˜ªØÈÌ—às|<Æç^:9>·òùZu!Iÿâné°ˆQ{ÊUƒ(l$¶Ë²Ñ‡ê -në÷k¡(‹ðVÄØÓ7RÁ~fñ+ÓoÁ
oÝšþâ -Ï8xqÕ$³®ó–ˆðm‡–’@2± ¢ ó÷ô*+?@äNáÙÈy
¢ÀÝíÙVD -ÄZ¾j2ø:§q51ý&a#eþöbr½-ï“¥Ng¬ÒKdóåñè—š01SˆB'ØÁì3ý'Ó>3«ùå«UKDW€É™Ãà
»˜e&#ùJüôC?†õ±~¦âVÊ<Æ2ö˜é*l닚݌#ó/1yÉÇfÛÝ<ËT9K_ÛiaÿTk,úMjdFQS2Ô -Í/™ñûÁÕc1Áí¿ãHk2‡I½vRf“e3¾¸ÆhŒ
Í –E¤
ìñ¥öˆ†Ë)@ƒÛá®rÊq‡à6(ÉhÁ™ô3à'ú
nƒN¬0{Ó‡áµS²Ú:—>ðm Ã{=øˆ%ú£œ \êÏP&¤òµà Z0z… ý°ð)«lùlê ì1–F*G•›.S+û&'¸Þ‚ïÕ‰Û…ôx™œ‡ú’%8f`r*h+At0Y„|‹~ -BËÊë†ÖòRa•4bå1bæÚ=!TVš§3^n`ö1„“4Bhxy
±i••à,×A¨¬<‡ceàÚÿ¡ð’ÿõ*ÛJX¢_À?œ „„Œ ƒæ -Œ‚òd¬ÛwÓ0vAŽvÞÂCòÄ;<vdòGØw•:ý‰H×Ï|ª;N´£Í!ß«j£ú;‹÷‚²“sbñ¯aY<‘à«ÞÇÞs¤ûöGPØ€PI0JUûd•…âM§ŒíÃc€QŽ.©<F-ªWaR½ îÝ®ÞL°Ê£ê¾ñfmÑǬ%üÅÞ#18Ë0ÈôQ4~ꂪx’!Â*ïž)`LŒo¹T'd¨}oe…Ëň۷yîÕ»0UqÙ,WU#zSÎæÙ©ž¾YåìšMðátcTG‹BnbªÍ–¥6"}lÀß"f/µô–Ð#\R+6¼Ñ}—ÿ5<15ÿÓ”ð/¹µ{ëçÇçÅ/Ñs摳Um/¦Ks=›]Ïþ³-,ïwo³ÅöWâ—œ½ÊW*±Hav¿œÎàst@£¨S)A¸PסëŽáҹÆ3¤ã¹ÂC¼4/Ÿ´RãƒÒ5«f©¯—SLH´ áŒy’á/nãŒøô¦ÑƒÄ»Ä#Ö;&¤Ô5¤"^Þ®ÇM#åÊÐs1=vz{úv›Ìeô·®L]«RÎòH>Ô$+®.Î3Õøƈ•“¿%sy¾)®û·JáÖì^›©lê×YÒ‰¿…ëÿ³í’
ïLiØÁK‡oEþw‡áBc/Úß9ºœ1¡¬Þ„]ûÿüj0¡ÅeŸî¥8’TWzý˜’”Ù6Ãuä²;ÆB0ý[ߪÇ@ªÁ "bÖø:Eêì”gêÍÜÁ*›9ÖË ÑCÕ+¢Gёϼ„ V–œ©ò¤‘k„9J4§—°
‰ ¥ŒÅA"i2° -¥ó¦DîvƒŒm¨QÒ|P8XÓè•K¢¶½vÉtÅg -â(Y©aa£¹º™°ö®nV€tl¼í‚¤Tš5ÉÈ@ª³Ç–‚è@…Ë=v,·P/«ÑxŸÄ“V§[Á')ÐRßmHdŒù³Ù€È?šÜkì$FAí4ÐË[Î𮜋±â“+[®ZòGþ<ì÷=¶ª*Û©D>ÛöŸòOÑê*{]ü¶Ô4×Bëlá—¿ï<ÛÄx;ðÑç;©‰”hZĤ%YzYìxënì½±4R~…U0]—^6VÜ´PJVð9ÚÉcÄHÔfâµ%Ô:«pj± -zk}b§ ¡º)ð°|þv:°“ -Òù÷%•‚4WXã -*õkö¯.Dþˆêþª¶Å ‡ý©‹Ÿ3Œ(~ââXDˆ¤HÆ>u±Ã¡éˆãÔ3—‡9¹§û.~*äÀ…dì{.Ô#RéV®ýCšíâôÄ-¯·TÍï}'Ýï|ý¬I¾3ß´ýï„£0öÕ®äcXÇÃ~é"ôCœË…±ïU¼|4@ŒýáBùé6(Öñ°ßÛ†öO1`ŒF¡ÿ½ÚÊáT=/X1¬ˆ¾ç@;dW‘Í„&þ{Š¬ýTšô"þPä¯NC;¦¹ÁÄu@[®"kʱ¸<ˆ}ÊÔŸÙ †/gYnën”~“镣ƴ⠑$“\c¶(ÞÏßãŠÜ™‡´ay*â±
œ>˜
žBè_ zºíµÆU¸øYënêW¡C„yk• -“‰^f~:˜¿Ð“IÅ—‘Û‰û@pÐV¡#^¥²7½–à·i¶è©¢â‹¹UÅ.XI˜˜.zÉjÚR/Šø.Á¹s`¥¼„¾£×5N¢SÅC9sÚÍïr‰ó—=t|Ì#>òG²íÎRý"ܘ^ê盶1šÊœîTq{Ÿ"þ¨½\;;»qÿôA/ªì§/‡ƒßQ…Vj_YîßvÓŠ['œöR’V&-M¤@eѧÑlÿðÈ0–iUñ½hFgs¡ ž{Á<º0Œéšz‹g½}Wø¦OÊàÇGô]z„ç©8}> -¥d$½ Üo˜æ]³ùÊñ߃Dø`ø°Ñ°¡&¢šI±$s[Dä@#âeímX™OÂùzåoßQ‰7N¿^A$l=°-"Ð`¬A¥ ˆ= #¾ƒ7ZV
lºŽ°ªyC·ØDËSø1L‹˜ -0000000016 00000 n
-0000000201 00000 n
-0000032326 00000 n
-0000000005 00000 f
-0000000006 00000 f
-0000000007 00000 f
-0000000008 00000 f
-0000000010 00000 f
-0000081803 00000 n
-0000000011 00000 f
-0000000012 00000 f
-0000000013 00000 f
-0000000014 00000 f
-0000000015 00000 f
-0000000016 00000 f
-0000000019 00000 f
-0000082434 00000 n
-0000082465 00000 n
-0000000020 00000 f
-0000000021 00000 f
-0000000022 00000 f
-0000000023 00000 f
-0000000024 00000 f
-0000000026 00000 f
-0000081873 00000 n
-0000000027 00000 f
-0000000028 00000 f
-0000000029 00000 f
-0000000030 00000 f
-0000000031 00000 f
-0000000032 00000 f
-0000000033 00000 f
-0000000036 00000 f
-0000082318 00000 n
-0000082349 00000 n
-0000000037 00000 f
-0000000038 00000 f
-0000000039 00000 f
-0000000040 00000 f
-0000000041 00000 f
-0000000043 00000 f
-0000081944 00000 n
-0000000044 00000 f
-0000000045 00000 f
-0000000046 00000 f
-0000000047 00000 f
-0000000048 00000 f
-0000000049 00000 f
-0000000050 00000 f
-0000000053 00000 f
-0000082202 00000 n
-0000082233 00000 n
-0000000054 00000 f
-0000000055 00000 f
-0000000056 00000 f
-0000000057 00000 f
-0000000058 00000 f
-0000000061 00000 f
-0000082015 00000 n
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000082086 00000 n
-0000082117 00000 n
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000033625 00000 n
-0000082550 00000 n
-0000032378 00000 n
-0000032710 00000 n
-0000033925 00000 n
-0000033812 00000 n
-0000032906 00000 n
-0000033064 00000 n
-0000033112 00000 n
-0000033696 00000 n
-0000033727 00000 n
-0000033999 00000 n
-0000034182 00000 n
-0000035182 00000 n
-0000056514 00000 n
-0000072510 00000 n
-0000082575 00000 n
-trailer
<</Size 93/Root 1 0 R/Info 92 0 R/ID[<C6F1C27E2DE645E3A73B8440E082EC45><829D094401314C768147F9DE59340F38>]>>
startxref
82749
%%EOF
\ No newline at end of file diff --git a/chrome/app/theme/go_d.png b/chrome/app/theme/go_d.png Binary files differdeleted file mode 100644 index 6b0dabc..0000000 --- a/chrome/app/theme/go_d.png +++ /dev/null diff --git a/chrome/app/theme/go_h.png b/chrome/app/theme/go_h.png Binary files differdeleted file mode 100644 index 1c4ce08..0000000 --- a/chrome/app/theme/go_h.png +++ /dev/null diff --git a/chrome/app/theme/go_mask.png b/chrome/app/theme/go_mask.png Binary files differdeleted file mode 100644 index 32c47c2..0000000 --- a/chrome/app/theme/go_mask.png +++ /dev/null diff --git a/chrome/app/theme/go_noborder_center.png b/chrome/app/theme/go_noborder_center.png Binary files differdeleted file mode 100644 index f856a19..0000000 --- a/chrome/app/theme/go_noborder_center.png +++ /dev/null diff --git a/chrome/app/theme/go_p.png b/chrome/app/theme/go_p.png Binary files differdeleted file mode 100644 index 5b3aaf8..0000000 --- a/chrome/app/theme/go_p.png +++ /dev/null diff --git a/chrome/app/theme/reload.png b/chrome/app/theme/reload.png Binary files differindex 99550be..c033579 100644 --- a/chrome/app/theme/reload.png +++ b/chrome/app/theme/reload.png diff --git a/chrome/app/theme/reload_d.png b/chrome/app/theme/reload_d.png Binary files differindex 37a4d1d..ec5811a 100644 --- a/chrome/app/theme/reload_d.png +++ b/chrome/app/theme/reload_d.png diff --git a/chrome/app/theme/reload_h.png b/chrome/app/theme/reload_h.png Binary files differindex 7ee1024..196727d 100644 --- a/chrome/app/theme/reload_h.png +++ b/chrome/app/theme/reload_h.png diff --git a/chrome/app/theme/reload_mask.png b/chrome/app/theme/reload_mask.png Binary files differdeleted file mode 100644 index a04c2c6..0000000 --- a/chrome/app/theme/reload_mask.png +++ /dev/null diff --git a/chrome/app/theme/reload_p.png b/chrome/app/theme/reload_p.png Binary files differindex 47aee77..a4d6ddd 100644 --- a/chrome/app/theme/reload_p.png +++ b/chrome/app/theme/reload_p.png diff --git a/chrome/app/theme/stop_noborder_center.png b/chrome/app/theme/stop_noborder_center.png Binary files differdeleted file mode 100644 index 57996fb..0000000 --- a/chrome/app/theme/stop_noborder_center.png +++ /dev/null diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd index c6c952d..113ddb4 100644 --- a/chrome/app/theme/theme_resources.grd +++ b/chrome/app/theme/theme_resources.grd @@ -32,10 +32,6 @@ <include name="IDR_FORWARD_D" file="forward_d.png" type="BINDATA" /> <include name="IDR_FORWARD_H" file="forward_h.png" type="BINDATA" /> <include name="IDR_FORWARD_P" file="forward_p.png" type="BINDATA" /> - <include name="IDR_GO" file="go.png" type="BINDATA" /> - <include name="IDR_GO_NOBORDER_CENTER" file="go_noborder_center.png" type="BINDATA" /> - <include name="IDR_GO_H" file="go_h.png" type="BINDATA" /> - <include name="IDR_GO_P" file="go_p.png" type="BINDATA" /> <include name="IDR_INFO_BUBBLE_CLOSE" file="bubble_close.png" type="BINDATA" /> <include name="IDR_LOCATIONBG" file="locationbg.png" type="BINDATA" /> <include name="IDR_LOCATION_BAR_SELECTED_KEYWORD_BACKGROUND_C" file="location_bar_keyword_search_c.png" type="BINDATA" /> @@ -140,7 +136,6 @@ <include name="IDR_BLOCKED_POPUPS" file="blocked_popups.png" type="BINDATA" /> <include name="IDR_WARNING" file="alert_small.png" type="BINDATA" /> <include name="IDR_STOP" file="stop.png" type="BINDATA" /> - <include name="IDR_STOP_NOBORDER_CENTER" file="stop_noborder_center.png" type="BINDATA" /> <include name="IDR_STOP_H" file="stop_h.png" type="BINDATA" /> <include name="IDR_STOP_P" file="stop_p.png" type="BINDATA" /> <!-- The following (IDR_FIND_DLG_[LEFT|RIGHT|MIDDLE]_[BB]_BACKGROUND) are deprecated but are kept around for the Linux port --> @@ -309,8 +304,6 @@ <include name="IDR_FORWARD_MASK" file="forward_mask.png" type="BINDATA" /> <include name="IDR_BACK_MASK" file="back_mask.png" type="BINDATA" /> <include name="IDR_BUTTON_MASK" file="button_mask.png" type="BINDATA" /> - <include name="IDR_RELOAD_MASK" file="reload_mask.png" type="BINDATA" /> - <include name="IDR_GO_MASK" file="go_mask.png" type="BINDATA" /> <include name="IDR_NEWTAB_BUTTON_MASK" file="newtab_button_mask.png" type="BINDATA" /> <include name="IDR_CLOSE_BUTTON_MASK" file="close_button_mask.png" type="BINDATA" /> diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc index 63fbf03..82ddea5 100644 --- a/chrome/browser/browser.cc +++ b/chrome/browser/browser.cc @@ -1210,11 +1210,6 @@ void Browser::OpenCurrentURL() { location_bar->GetPageTransition(), -1, true); } -void Browser::Go(WindowOpenDisposition disposition) { - UserMetrics::RecordAction(UserMetricsAction("Go"), profile_); - window_->GetLocationBar()->AcceptInputWithDisposition(disposition); -} - void Browser::Stop() { UserMetrics::RecordAction(UserMetricsAction("Stop"), profile_); GetSelectedTabContents()->Stop(); @@ -1874,7 +1869,6 @@ void Browser::ExecuteCommandWithDisposition( case IDC_RELOAD_IGNORING_CACHE: ReloadIgnoringCache(disposition); break; case IDC_HOME: Home(disposition); break; case IDC_OPEN_CURRENT_URL: OpenCurrentURL(); break; - case IDC_GO: Go(disposition); break; case IDC_STOP: Stop(); break; // Window management commands @@ -2308,8 +2302,8 @@ void Browser::TabSelectedAt(TabContents* old_contents, // Propagate the profile to the location bar. UpdateToolbar(true); - // Update stop/go state. - UpdateStopGoState(new_contents->is_loading(), true); + // Update reload/stop state. + UpdateReloadStopState(new_contents->is_loading(), true); // Update commands to reflect current state. UpdateCommandsForTabState(); @@ -2475,7 +2469,7 @@ void Browser::LoadingStateChanged(TabContents* source) { window_->UpdateTitleBar(); if (source == GetSelectedTabContents()) { - UpdateStopGoState(source->is_loading(), false); + UpdateReloadStopState(source->is_loading(), false); if (GetStatusBubble()) GetStatusBubble()->SetStatus(GetSelectedTabContents()->GetStatusText()); @@ -3139,9 +3133,8 @@ void Browser::UpdateCommandsForTabState() { #endif } -void Browser::UpdateStopGoState(bool is_loading, bool force) { - window_->UpdateStopGoState(is_loading, force); - command_updater_.UpdateCommandEnabled(IDC_GO, !is_loading); +void Browser::UpdateReloadStopState(bool is_loading, bool force) { + window_->UpdateReloadStopState(is_loading, force); command_updater_.UpdateCommandEnabled(IDC_STOP, is_loading); } diff --git a/chrome/browser/browser.h b/chrome/browser/browser.h index 49329de..6f4ef76 100644 --- a/chrome/browser/browser.h +++ b/chrome/browser/browser.h @@ -435,7 +435,6 @@ class Browser : public TabStripModelDelegate, void ReloadIgnoringCache(WindowOpenDisposition disposition); // Shift-reload. void Home(WindowOpenDisposition disposition); void OpenCurrentURL(); - void Go(WindowOpenDisposition disposition); void Stop(); // Window management commands void NewWindow(); @@ -753,10 +752,10 @@ class Browser : public TabStripModelDelegate, // Update commands whose state depends on the tab's state. void UpdateCommandsForTabState(); - // Ask the Stop/Go button to change its icon, and update the Go and Stop - // command states. |is_loading| is true if the current TabContents is - // loading. |force| is true if the button should change its icon immediately. - void UpdateStopGoState(bool is_loading, bool force); + // Ask the Reload/Stop button to change its icon, and update the Stop command + // state. |is_loading| is true if the current TabContents is loading. + // |force| is true if the button should change its icon immediately. + void UpdateReloadStopState(bool is_loading, bool force); // UI update coalescing and handling //////////////////////////////////////// diff --git a/chrome/browser/browser_theme_pack.cc b/chrome/browser/browser_theme_pack.cc index 31f2866..2d8c7f6 100644 --- a/chrome/browser/browser_theme_pack.cc +++ b/chrome/browser/browser_theme_pack.cc @@ -23,7 +23,7 @@ namespace { // Version number of the current theme pack. We just throw out and rebuild // theme packs that aren't int-equal to this. -const int kThemePackVersion = 9; +const int kThemePackVersion = 10; // IDs that are in the DataPack won't clash with the positive integer // int32_t. kHeaderID should always have the maximum value because we want the @@ -119,30 +119,25 @@ PersistingImagesTable kPersistingImages[] = { { 20, IDR_FORWARD_D, NULL }, { 21, IDR_FORWARD_H, NULL }, { 22, IDR_FORWARD_P, NULL }, - { 23, IDR_RELOAD, NULL }, - { 24, IDR_RELOAD_H, NULL }, - { 25, IDR_RELOAD_P, NULL }, - { 26, IDR_HOME, NULL }, - { 27, IDR_HOME_H, NULL }, - { 28, IDR_HOME_P, NULL }, - { 29, IDR_GO, NULL }, - { 30, IDR_GO_NOBORDER_CENTER, NULL }, - { 31, IDR_GO_H, NULL }, - { 32, IDR_GO_P, NULL }, - { 33, IDR_STOP, NULL }, - { 34, IDR_STOP_NOBORDER_CENTER, NULL }, - { 35, IDR_STOP_H, NULL }, - { 36, IDR_STOP_P, NULL }, - { 37, IDR_MENU_BOOKMARK, NULL }, - { 38, IDR_MENU_PAGE, NULL }, - { 39, IDR_MENU_PAGE_RTL, NULL }, - { 40, IDR_MENU_CHROME, NULL }, - { 41, IDR_MENU_CHROME_RTL, NULL }, - { 42, IDR_MENU_DROPARROW, NULL }, - { 43, IDR_THROBBER, NULL }, - { 44, IDR_THROBBER_WAITING, NULL }, - { 45, IDR_THROBBER_LIGHT, NULL }, - { 46, IDR_LOCATIONBG, NULL } + { 23, IDR_HOME, NULL }, + { 24, IDR_HOME_H, NULL }, + { 25, IDR_HOME_P, NULL }, + { 26, IDR_RELOAD, NULL }, + { 27, IDR_RELOAD_H, NULL }, + { 28, IDR_RELOAD_P, NULL }, + { 29, IDR_STOP, NULL }, + { 30, IDR_STOP_H, NULL }, + { 31, IDR_STOP_P, NULL }, + { 32, IDR_LOCATIONBG, NULL }, + { 33, IDR_MENU_BOOKMARK, NULL }, + { 34, IDR_MENU_PAGE, NULL }, + { 35, IDR_MENU_PAGE_RTL, NULL }, + { 36, IDR_MENU_CHROME, NULL }, + { 37, IDR_MENU_CHROME_RTL, NULL }, + { 38, IDR_MENU_DROPARROW, NULL }, + { 39, IDR_THROBBER, NULL }, + { 40, IDR_THROBBER_WAITING, NULL }, + { 41, IDR_THROBBER_LIGHT, NULL }, }; int GetPersistentIDByName(const std::string& key) { diff --git a/chrome/browser/browser_theme_provider.cc b/chrome/browser/browser_theme_provider.cc index cea5568..244d2cf 100644 --- a/chrome/browser/browser_theme_provider.cc +++ b/chrome/browser/browser_theme_provider.cc @@ -142,16 +142,15 @@ bool HasThemeableImage(int themeable_image_id) { const int kToolbarButtonIDs[] = { IDR_BACK, IDR_BACK_D, IDR_BACK_H, IDR_BACK_P, IDR_FORWARD, IDR_FORWARD_D, IDR_FORWARD_H, IDR_FORWARD_P, - IDR_RELOAD, IDR_RELOAD_H, IDR_RELOAD_P, IDR_HOME, IDR_HOME_H, IDR_HOME_P, - IDR_GO, IDR_GO_NOBORDER_CENTER, IDR_GO_H, IDR_GO_P, - IDR_STOP, IDR_STOP_NOBORDER_CENTER, IDR_STOP_H, IDR_STOP_P, + IDR_RELOAD, IDR_RELOAD_H, IDR_RELOAD_P, + IDR_STOP, IDR_STOP_H, IDR_STOP_P, + IDR_LOCATIONBG, IDR_MENU_BOOKMARK, IDR_MENU_PAGE, IDR_MENU_PAGE_RTL, IDR_MENU_CHROME, IDR_MENU_CHROME_RTL, IDR_MENU_DROPARROW, IDR_THROBBER, IDR_THROBBER_WAITING, IDR_THROBBER_LIGHT, - IDR_LOCATIONBG }; // Writes the theme pack to disk on a separate thread. diff --git a/chrome/browser/browser_window.h b/chrome/browser/browser_window.h index ff80ab7..bc2305a 100644 --- a/chrome/browser/browser_window.h +++ b/chrome/browser/browser_window.h @@ -133,8 +133,8 @@ class BrowserWindow { virtual void SetFocusToLocationBar(bool select_all) = 0; // Informs the view whether or not a load is in progress for the current tab. - // The view can use this notification to update the go/stop button. - virtual void UpdateStopGoState(bool is_loading, bool force) = 0; + // The view can use this notification to update the reload/stop button. + virtual void UpdateReloadStopState(bool is_loading, bool force) = 0; // Updates the toolbar with the state for the specified |contents|. virtual void UpdateToolbar(TabContents* contents, diff --git a/chrome/browser/chromeos/compact_location_bar_view.cc b/chrome/browser/chromeos/compact_location_bar_view.cc index bec7646f..5456504 100644 --- a/chrome/browser/chromeos/compact_location_bar_view.cc +++ b/chrome/browser/chromeos/compact_location_bar_view.cc @@ -96,7 +96,7 @@ void CompactLocationBarView::Init() { reload_->SetImage(views::CustomButton::BS_PUSHED, tp->GetBitmapNamed(IDR_RELOAD_P)); reload_->SetBackground(color, background, - tp->GetBitmapNamed(IDR_RELOAD_MASK)); + tp->GetBitmapNamed(IDR_BUTTON_MASK)); AddChildView(reload_); diff --git a/chrome/browser/cocoa/browser_window_cocoa.h b/chrome/browser/cocoa/browser_window_cocoa.h index b6aa455..4d8f017 100644 --- a/chrome/browser/cocoa/browser_window_cocoa.h +++ b/chrome/browser/cocoa/browser_window_cocoa.h @@ -53,7 +53,7 @@ class BrowserWindowCocoa : public BrowserWindow, virtual bool IsFullscreenBubbleVisible() const; virtual LocationBar* GetLocationBar() const; virtual void SetFocusToLocationBar(bool select_all); - virtual void UpdateStopGoState(bool is_loading, bool force); + virtual void UpdateReloadStopState(bool is_loading, bool force); virtual void UpdateToolbar(TabContents* contents, bool should_restore_state); virtual void FocusToolbar(); diff --git a/chrome/browser/cocoa/browser_window_cocoa.mm b/chrome/browser/cocoa/browser_window_cocoa.mm index 78f2221..0b8111e 100644 --- a/chrome/browser/cocoa/browser_window_cocoa.mm +++ b/chrome/browser/cocoa/browser_window_cocoa.mm @@ -206,7 +206,7 @@ void BrowserWindowCocoa::SetFocusToLocationBar(bool select_all) { [controller_ focusLocationBar:select_all ? YES : NO]; } -void BrowserWindowCocoa::UpdateStopGoState(bool is_loading, bool force) { +void BrowserWindowCocoa::UpdateReloadStopState(bool is_loading, bool force) { [controller_ setIsLoading:is_loading ? YES : NO]; } diff --git a/chrome/browser/cocoa/location_bar_view_mac.h b/chrome/browser/cocoa/location_bar_view_mac.h index 2d8d57e..74c0451 100644 --- a/chrome/browser/cocoa/location_bar_view_mac.h +++ b/chrome/browser/cocoa/location_bar_view_mac.h @@ -54,7 +54,6 @@ class LocationBarViewMac : public AutocompleteEditController, virtual WindowOpenDisposition GetWindowOpenDisposition() const; virtual PageTransition::Type GetPageTransition() const; virtual void AcceptInput(); - virtual void AcceptInputWithDisposition(WindowOpenDisposition disposition); virtual void FocusLocation(bool select_all); virtual void FocusSearch(); virtual void UpdateContentSettingsIcons(); diff --git a/chrome/browser/cocoa/location_bar_view_mac.mm b/chrome/browser/cocoa/location_bar_view_mac.mm index ea02141..9be750a 100644 --- a/chrome/browser/cocoa/location_bar_view_mac.mm +++ b/chrome/browser/cocoa/location_bar_view_mac.mm @@ -124,11 +124,6 @@ PageTransition::Type LocationBarViewMac::GetPageTransition() const { void LocationBarViewMac::AcceptInput() { WindowOpenDisposition disposition = event_utils::WindowOpenDispositionFromNSEvent([NSApp currentEvent]); - AcceptInputWithDisposition(disposition); -} - -void LocationBarViewMac::AcceptInputWithDisposition( - WindowOpenDisposition disposition) { edit_view_->model()->AcceptInput(disposition, false); } diff --git a/chrome/browser/cocoa/side_tabs_toolbar_controller.h b/chrome/browser/cocoa/side_tabs_toolbar_controller.h index ce1ed7c..9516262 100644 --- a/chrome/browser/cocoa/side_tabs_toolbar_controller.h +++ b/chrome/browser/cocoa/side_tabs_toolbar_controller.h @@ -16,6 +16,10 @@ @interface SideTabsToolbarController : ToolbarController { @private + // TODO(shess): |goButton_| no longer exists in ToolbarController. + // It's not clear to me that |goButton_| is the right name for this + // class to use. + IBOutlet NSButton* goButton_; IBOutlet NSButton* starButton_; IBOutlet NSTextField* title_; IBOutlet NSProgressIndicator* loadingSpinner_; diff --git a/chrome/browser/cocoa/side_tabs_toolbar_controller.mm b/chrome/browser/cocoa/side_tabs_toolbar_controller.mm index 5e65111..989538d 100644 --- a/chrome/browser/cocoa/side_tabs_toolbar_controller.mm +++ b/chrome/browser/cocoa/side_tabs_toolbar_controller.mm @@ -35,6 +35,10 @@ NSString* const kSearchButtonImageName = @"omnibox_search.pdf"; - (void)awakeFromNib { [super awakeFromNib]; + // TODO(shess): |goButton_| is no longer in |ToolbarController|. + // AFAICT this code partially implements a new feature (see + // http://crbug.com/44773) which may be in conflict with + // http://crbug.com/45762 . [goButton_ setImage:nsimage_cache::ImageNamed(kSearchButtonImageName)]; [[locationBar_ autocompleteTextFieldCell] setStarIconView:nil]; } diff --git a/chrome/browser/cocoa/toolbar_controller.h b/chrome/browser/cocoa/toolbar_controller.h index 1c81543..86574b5 100644 --- a/chrome/browser/cocoa/toolbar_controller.h +++ b/chrome/browser/cocoa/toolbar_controller.h @@ -52,7 +52,6 @@ class ToolbarModel; IBOutlet DelayedMenuButton* forwardButton_; IBOutlet NSButton* reloadButton_; IBOutlet NSButton* homeButton_; - IBOutlet NSButton* goButton_; IBOutlet MenuButton* pageButton_; IBOutlet MenuButton* wrenchButton_; IBOutlet AutocompleteTextField* locationBar_; diff --git a/chrome/browser/cocoa/toolbar_controller.mm b/chrome/browser/cocoa/toolbar_controller.mm index 9d90a0c..a8974de 100644 --- a/chrome/browser/cocoa/toolbar_controller.mm +++ b/chrome/browser/cocoa/toolbar_controller.mm @@ -48,17 +48,17 @@ namespace { // Names of images in the bundle for buttons. NSString* const kBackButtonImageName = @"back_Template.pdf"; NSString* const kForwardButtonImageName = @"forward_Template.pdf"; -NSString* const kReloadButtonImageName = @"reload_Template.pdf"; +NSString* const kReloadButtonReloadImageName = @"reload_Template.pdf"; +NSString* const kReloadButtonStopImageName = @"stop_Template.pdf"; NSString* const kHomeButtonImageName = @"home_Template.pdf"; -NSString* const kGoButtonGoImageName = @"go_Template.pdf"; -NSString* const kGoButtonStopImageName = @"stop_Template.pdf"; NSString* const kPageButtonImageName = @"menu_page_Template.pdf"; NSString* const kWrenchButtonImageName = @"menu_chrome_Template.pdf"; // Height of the toolbar in pixels when the bookmark bar is closed. const CGFloat kBaseToolbarHeight = 36.0; -// The distance from the 'Go' button to the Browser Actions container in pixels. +// The distance from the location bar to the Browser Actions container +// in pixels. const CGFloat kBrowserActionsContainerLeftPadding = 5.0; // The minimum width of the location bar in pixels. @@ -75,13 +75,13 @@ const CGFloat kAnimationDuration = 0.2; - (void)prefChanged:(std::wstring*)prefName; - (BackgroundGradientView*)backgroundGradientView; - (void)toolbarFrameChanged; -- (void)pinGoButtonToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate; +- (void)pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate; - (void)maintainMinimumLocationBarWidth; - (void)adjustBrowserActionsContainerForNewWindow:(NSNotification*)notification; - (void)browserActionsContainerDragged:(NSNotification*)notification; - (void)browserActionsContainerDragFinished:(NSNotification*)notification; - (void)browserActionsVisibilityChanged:(NSNotification*)notification; -- (void)adjustLocationAndGoPositionsBy:(CGFloat)dX animate:(BOOL)animate; +- (void)adjustLocationSizeBy:(CGFloat)dX animate:(BOOL)animate; @end namespace ToolbarControllerInternal { @@ -217,9 +217,9 @@ class PrefObserverBridge : public NotificationObserver { // the xib, we must set them in code. [backButton_ setImage:nsimage_cache::ImageNamed(kBackButtonImageName)]; [forwardButton_ setImage:nsimage_cache::ImageNamed(kForwardButtonImageName)]; - [reloadButton_ setImage:nsimage_cache::ImageNamed(kReloadButtonImageName)]; + [reloadButton_ + setImage:nsimage_cache::ImageNamed(kReloadButtonReloadImageName)]; [homeButton_ setImage:nsimage_cache::ImageNamed(kHomeButtonImageName)]; - [goButton_ setImage:nsimage_cache::ImageNamed(kGoButtonGoImageName)]; [pageButton_ setImage:nsimage_cache::ImageNamed(kPageButtonImageName)]; [wrenchButton_ setImage:nsimage_cache::ImageNamed(kWrenchButtonImageName)]; @@ -271,9 +271,9 @@ class PrefObserverBridge : public NotificationObserver { NSView* toolbarView = [self view]; [toolbarView addTrackingArea:trackingArea_.get()]; - // We want a dynamic tooltip on the go button, so tell the go button to ask - // us for the tooltip. - [goButton_ addToolTipRect:[goButton_ bounds] owner:self userData:nil]; + // We want a dynamic tooltip on the reload button, so tell the + // reload button to ask us for the tooltip. + [reloadButton_ addToolTipRect:[reloadButton_ bounds] owner:self userData:nil]; // If the user has any Browser Actions installed, the container view for them // may have to be resized depending on the width of the toolbar frame. @@ -307,10 +307,6 @@ class PrefObserverBridge : public NotificationObserver { [[locationBar_ cell] accessibilitySetOverrideValue:description forAttribute:NSAccessibilityDescriptionAttribute]; - description = l10n_util::GetNSStringWithFixup(IDS_ACCNAME_GO); - [[goButton_ cell] - accessibilitySetOverrideValue:description - forAttribute:NSAccessibilityDescriptionAttribute]; description = l10n_util::GetNSStringWithFixup(IDS_ACCNAME_PAGE); [[pageButton_ cell] accessibilitySetOverrideValue:description @@ -410,15 +406,15 @@ class PrefObserverBridge : public NotificationObserver { } - (void)setIsLoading:(BOOL)isLoading { - NSString* imageName = kGoButtonGoImageName; - NSInteger tag = IDC_GO; + NSString* imageName = kReloadButtonReloadImageName; + NSInteger tag = IDC_RELOAD; if (isLoading) { - imageName = kGoButtonStopImageName; + imageName = kReloadButtonStopImageName; tag = IDC_STOP; } NSImage* stopStartImage = nsimage_cache::ImageNamed(imageName); - [goButton_ setImage:stopStartImage]; - [goButton_ setTag:tag]; + [reloadButton_ setImage:stopStartImage]; + [reloadButton_ setTag:tag]; } - (void)setHasToolbar:(BOOL)toolbar hasLocationBar:(BOOL)locBar { @@ -472,8 +468,8 @@ class PrefObserverBridge : public NotificationObserver { // Returns an array of views in the order of the outlets above. - (NSArray*)toolbarViews { return [NSArray arrayWithObjects:backButton_, forwardButton_, reloadButton_, - homeButton_, goButton_, pageButton_, wrenchButton_, - locationBar_, browserActionsContainerView_, nil]; + homeButton_, pageButton_, wrenchButton_, locationBar_, + browserActionsContainerView_, nil]; } // Moves |rect| to the right by |delta|, keeping the right side fixed by @@ -550,20 +546,18 @@ class PrefObserverBridge : public NotificationObserver { if (hide == [pageButton_ isHidden]) return; // Nothing to do, view state matches pref state. - // Shift the go button and resize the text field by the width of the - // page/wrench buttons plus two times the gap width. If we're showing the - // buttons, we have to reverse the direction of movement (to the left). Unlike - // the home button above, we only ever have to resize the text field, we don't - // have to move it. - CGFloat moveX = 2 * [self interButtonSpacing] + NSWidth([pageButton_ frame]) + + // Resize the text field and move the browser actions by the width + // of the page/wrench buttons plus two times the gap width. + CGFloat dX = 2 * [self interButtonSpacing] + NSWidth([pageButton_ frame]) + NSWidth([wrenchButton_ frame]); + // Larger if hiding menus, smaller if showing. if (!hide) - moveX *= -1; // Reverse the direction of the move. + dX *= -1; - [self adjustLocationAndGoPositionsBy:moveX animate:NO]; + [self adjustLocationSizeBy:dX animate:NO]; [browserActionsContainerView_ setFrame:NSOffsetRect( - [browserActionsContainerView_ frame], moveX, 0)]; + [browserActionsContainerView_ frame], dX, 0)]; [browserActionsContainerView_ setRightBorderShown:!hide]; [pageButton_ setHidden:hide]; @@ -608,7 +602,7 @@ class PrefObserverBridge : public NotificationObserver { CGFloat containerWidth = [browserActionsContainerView_ isHidden] ? 0.0 : NSWidth([browserActionsContainerView_ frame]); if (containerWidth > 0.0) - [self adjustLocationAndGoPositionsBy:(containerWidth * -1) animate:NO]; + [self adjustLocationSizeBy:(containerWidth * -1) animate:NO]; BOOL rightBorderShown = !([pageButton_ isHidden] && [wrenchButton_ isHidden]); [browserActionsContainerView_ setRightBorderShown:rightBorderShown]; } @@ -627,37 +621,37 @@ class PrefObserverBridge : public NotificationObserver { locationBarAtMinSize_ = locationBarWidth <= kMinimumLocationBarWidth; [browserActionsContainerView_ setCanDragLeft:!locationBarAtMinSize_]; [browserActionsContainerView_ setGrippyPinned:locationBarAtMinSize_]; - [self adjustLocationAndGoPositionsBy: + [self adjustLocationSizeBy: [browserActionsContainerView_ resizeDeltaX] animate:NO]; } - (void)browserActionsContainerDragFinished:(NSNotification*)notification { [browserActionsController_ resizeContainerAndAnimate:YES]; - [self pinGoButtonToLeftOfBrowserActionsContainerAndAnimate:YES]; + [self pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:YES]; } - (void)browserActionsVisibilityChanged:(NSNotification*)notification { - [self pinGoButtonToLeftOfBrowserActionsContainerAndAnimate:NO]; + [self pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:NO]; } -- (void)pinGoButtonToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate { - CGFloat goXPos = [goButton_ frame].origin.x + NSWidth([goButton_ frame]); +- (void)pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate { + CGFloat locationBarXPos = NSMaxX([locationBar_ frame]); CGFloat leftPadding; if ([browserActionsContainerView_ isHidden]) { CGFloat edgeXPos = [pageButton_ isHidden] ? - NSWidth([[goButton_ window] frame]) : [pageButton_ frame].origin.x; - leftPadding = edgeXPos - goXPos; + NSWidth([[locationBar_ window] frame]) : [pageButton_ frame].origin.x; + leftPadding = edgeXPos - locationBarXPos; } else { NSRect containerFrame = animate ? [browserActionsContainerView_ animationEndFrame] : [browserActionsContainerView_ frame]; - leftPadding = containerFrame.origin.x - goXPos; + leftPadding = containerFrame.origin.x - locationBarXPos; } if (leftPadding != kBrowserActionsContainerLeftPadding) { CGFloat dX = leftPadding - kBrowserActionsContainerLeftPadding; - [self adjustLocationAndGoPositionsBy:dX animate:animate]; + [self adjustLocationSizeBy:dX animate:animate]; } } @@ -666,7 +660,7 @@ class PrefObserverBridge : public NotificationObserver { locationBarAtMinSize_ = locationBarWidth <= kMinimumLocationBarWidth; if (locationBarAtMinSize_) { CGFloat dX = kMinimumLocationBarWidth - locationBarWidth; - [self adjustLocationAndGoPositionsBy:dX animate:NO]; + [self adjustLocationSizeBy:dX animate:NO]; } } @@ -684,7 +678,7 @@ class PrefObserverBridge : public NotificationObserver { NSRect containerFrame = [browserActionsContainerView_ frame]; // Determine how much the container needs to move in case it's overlapping // with the location bar. - CGFloat dX = ([goButton_ frame].origin.x + NSWidth([goButton_ frame])) - + CGFloat dX = NSMaxX([locationBar_ frame]) - containerFrame.origin.x + kBrowserActionsContainerLeftPadding; containerFrame = NSOffsetRect(containerFrame, dX, 0); containerFrame.size.width -= dX; @@ -707,31 +701,22 @@ class PrefObserverBridge : public NotificationObserver { [browserActionsContainerView_ setGrippyPinned:NO]; } [browserActionsContainerView_ setFrame:containerFrame]; - [self pinGoButtonToLeftOfBrowserActionsContainerAndAnimate:NO]; + [self pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:NO]; } } -- (void)adjustLocationAndGoPositionsBy:(CGFloat)dX animate:(BOOL)animate { - // Ensure that the 'Go' button is in its proper place. - NSRect goFrame = [goButton_ frame]; +- (void)adjustLocationSizeBy:(CGFloat)dX animate:(BOOL)animate { + // Ensure that the location bar is in its proper place. NSRect locationFrame = [locationBar_ frame]; - CGFloat rightDelta = (locationFrame.origin.x + NSWidth(locationFrame)) - - goFrame.origin.x; - if (rightDelta != 0.0) - [goButton_ setFrame:NSOffsetRect(goFrame, rightDelta, 0)]; - - goFrame = NSOffsetRect([goButton_ frame], dX, 0); locationFrame.size.width += dX; if (!animate) { - [goButton_ setFrame:goFrame]; [locationBar_ setFrame:locationFrame]; return; } [NSAnimationContext beginGrouping]; [[NSAnimationContext currentContext] setDuration:kAnimationDuration]; - [[goButton_ animator] setFrame:goFrame]; [[locationBar_ animator] setFrame:locationFrame]; [NSAnimationContext endGrouping]; } @@ -766,50 +751,10 @@ class PrefObserverBridge : public NotificationObserver { stringForToolTip:(NSToolTipTag)tag point:(NSPoint)point userData:(void*)userData { - DCHECK(view == goButton_); - - // Following chrome/browser/views/go_button.cc: GoButton::GetTooltipText() - - // Is it currently 'stop'? - if ([goButton_ tag] == IDC_STOP) { - return l10n_util::GetNSStringWithFixup(IDS_TOOLTIP_STOP); - } - - // It is 'go', so see what it would do... - - // Fetch the EditView and EditModel - LocationBar* locationBar = [self locationBarBridge]; - DCHECK(locationBar); - AutocompleteEditView* editView = locationBar->location_entry(); - DCHECK(editView); - AutocompleteEditModel* editModel = editView->model(); - DCHECK(editModel); - - std::wstring currentText(editView->GetText()); - if (currentText.empty()) { - return nil; - } - string16 currentText16(WideToUTF16Hack(currentText)); - - // It is simply an url it is gonna go to, build the tip with the info. - if (editModel->CurrentTextIsURL()) { - return l10n_util::GetNSStringF(IDS_TOOLTIP_GO_SITE, currentText16); - } - - // Build the tip based on what provide/template it will get. - std::wstring keyword(editModel->keyword()); - TemplateURLModel* template_url_model = - editModel->profile()->GetTemplateURLModel(); - const TemplateURL* provider = - (keyword.empty() || editModel->is_keyword_hint()) ? - template_url_model->GetDefaultSearchProvider() : - template_url_model->GetTemplateURLForKeyword(keyword); - if (!provider) - return nil; - std::wstring shortName(provider->AdjustedShortNameForLocaleDirection()); - return l10n_util::GetNSStringF(IDS_TOOLTIP_GO_SEARCH, - WideToUTF16(shortName), currentText16); + DCHECK(view == reloadButton_); + return l10n_util::GetNSStringWithFixup( + [reloadButton_ tag] == IDC_STOP ? IDS_TOOLTIP_STOP : IDS_TOOLTIP_RELOAD); } // (URLDropTargetController protocol) diff --git a/chrome/browser/cocoa/toolbar_controller_unittest.mm b/chrome/browser/cocoa/toolbar_controller_unittest.mm index b02ec0f..b892759 100644 --- a/chrome/browser/cocoa/toolbar_controller_unittest.mm +++ b/chrome/browser/cocoa/toolbar_controller_unittest.mm @@ -43,9 +43,8 @@ class ToolbarControllerTest : public CocoaTest { // Indexes that match the ordering returned by the private ToolbarController // |-toolbarViews| method. enum { - kBackIndex, kForwardIndex, kReloadIndex, kHomeIndex, kGoIndex, - kPageIndex, kWrenchIndex, kLocationIndex, - kBrowserActionContainerViewIndex + kBackIndex, kForwardIndex, kReloadIndex, kHomeIndex, kPageIndex, + kWrenchIndex, kLocationIndex, kBrowserActionContainerViewIndex }; ToolbarControllerTest() { @@ -151,14 +150,14 @@ TEST_F(ToolbarControllerTest, FocusLocation) { } TEST_F(ToolbarControllerTest, LoadingState) { - // In its initial state, the go button has a tag of IDC_GO. When loading, - // it should be IDC_STOP. - NSButton* go = [[bar_ toolbarViews] objectAtIndex:kGoIndex]; - EXPECT_EQ([go tag], IDC_GO); + // In its initial state, the reload button has a tag of + // IDC_RELOAD. When loading, it should be IDC_STOP. + NSButton* reload = [[bar_ toolbarViews] objectAtIndex:kReloadIndex]; + EXPECT_EQ([reload tag], IDC_RELOAD); [bar_ setIsLoading:YES]; - EXPECT_EQ([go tag], IDC_STOP); + EXPECT_EQ([reload tag], IDC_STOP); [bar_ setIsLoading:NO]; - EXPECT_EQ([go tag], IDC_GO); + EXPECT_EQ([reload tag], IDC_RELOAD); } // Check that toggling the state of the home button changes the visible @@ -191,9 +190,7 @@ TEST_F(ToolbarControllerTest, TogglePageWrench) { EXPECT_EQ(showButtons, ![pageButton isHidden]); EXPECT_EQ(showButtons, ![wrenchButton isHidden]); - NSView* goButton = [[bar_ toolbarViews] objectAtIndex:kGoIndex]; NSView* locationBar = [[bar_ toolbarViews] objectAtIndex:kLocationIndex]; - NSRect originalGoFrame = [goButton frame]; NSRect originalLocationBarFrame = [locationBar frame]; // Toggle the pref and make sure the buttons changed state and the other @@ -201,7 +198,6 @@ TEST_F(ToolbarControllerTest, TogglePageWrench) { prefs->SetBoolean(prefs::kShowPageOptionsButtons, !showButtons); EXPECT_EQ(showButtons, [pageButton isHidden]); EXPECT_EQ(showButtons, [wrenchButton isHidden]); - EXPECT_NE(NSMinX(originalGoFrame), NSMinX([goButton frame])); EXPECT_NE(NSWidth(originalLocationBarFrame), NSWidth([locationBar frame])); } diff --git a/chrome/browser/gtk/browser_toolbar_gtk.cc b/chrome/browser/gtk/browser_toolbar_gtk.cc index 30115f3..a3cd9cd 100644 --- a/chrome/browser/gtk/browser_toolbar_gtk.cc +++ b/chrome/browser/gtk/browser_toolbar_gtk.cc @@ -29,11 +29,11 @@ #include "chrome/browser/gtk/browser_window_gtk.h" #include "chrome/browser/gtk/cairo_cached_surface.h" #include "chrome/browser/gtk/custom_button.h" -#include "chrome/browser/gtk/go_button_gtk.h" #include "chrome/browser/gtk/gtk_chrome_button.h" #include "chrome/browser/gtk/gtk_theme_provider.h" #include "chrome/browser/gtk/gtk_util.h" #include "chrome/browser/gtk/location_bar_view_gtk.h" +#include "chrome/browser/gtk/reload_button_gtk.h" #include "chrome/browser/gtk/rounded_window.h" #include "chrome/browser/gtk/tabs/tab_strip_gtk.h" #include "chrome/browser/gtk/view_id_util.h" @@ -97,7 +97,6 @@ BrowserToolbarGtk::BrowserToolbarGtk(Browser* browser, BrowserWindowGtk* window) upgrade_reminder_animation_(this) { browser_->command_updater()->AddCommandObserver(IDC_BACK, this); browser_->command_updater()->AddCommandObserver(IDC_FORWARD, this); - browser_->command_updater()->AddCommandObserver(IDC_RELOAD, this); browser_->command_updater()->AddCommandObserver(IDC_HOME, this); browser_->command_updater()->AddCommandObserver(IDC_BOOKMARK_PAGE, this); @@ -117,7 +116,6 @@ BrowserToolbarGtk::BrowserToolbarGtk(Browser* browser, BrowserWindowGtk* window) BrowserToolbarGtk::~BrowserToolbarGtk() { browser_->command_updater()->RemoveCommandObserver(IDC_BACK, this); browser_->command_updater()->RemoveCommandObserver(IDC_FORWARD, this); - browser_->command_updater()->RemoveCommandObserver(IDC_RELOAD, this); browser_->command_updater()->RemoveCommandObserver(IDC_HOME, this); browser_->command_updater()->RemoveCommandObserver(IDC_BOOKMARK_PAGE, this); @@ -174,17 +172,16 @@ void BrowserToolbarGtk::Init(Profile* profile, gtk_box_pack_start(GTK_BOX(toolbar_left_), back_forward_hbox_, FALSE, FALSE, kToolbarWidgetSpacing); + reload_.reset(new ReloadButtonGtk(location_bar_.get(), browser_)); + gtk_box_pack_start(GTK_BOX(toolbar_left_), reload_->widget(), FALSE, FALSE, + 0); + home_.reset(BuildToolbarButton(IDR_HOME, IDR_HOME_P, IDR_HOME_H, 0, IDR_BUTTON_MASK, l10n_util::GetStringUTF8(IDS_TOOLTIP_HOME), GTK_STOCK_HOME, kToolbarWidgetSpacing)); gtk_util::SetButtonTriggersNavigation(home_->widget()); - reload_.reset(BuildToolbarButton(IDR_RELOAD, IDR_RELOAD_P, IDR_RELOAD_H, 0, - IDR_RELOAD_MASK, - l10n_util::GetStringUTF8(IDS_TOOLTIP_RELOAD), - GTK_STOCK_REFRESH, 0)); - gtk_box_pack_start(GTK_BOX(toolbar_), toolbar_left_, FALSE, FALSE, 0); location_hbox_ = gtk_hbox_new(FALSE, 0); @@ -199,9 +196,6 @@ void BrowserToolbarGtk::Init(Profile* profile, toolbar_right_ = gtk_hbox_new(FALSE, 0); - go_.reset(new GoButtonGtk(location_bar_.get(), browser_)); - gtk_box_pack_start(GTK_BOX(toolbar_right_), go_->widget(), FALSE, FALSE, 0); - if (!ShouldOnlyShowLocation()) { actions_toolbar_.reset(new BrowserActionsToolbarGtk(browser_)); gtk_box_pack_start(GTK_BOX(toolbar_right_), actions_toolbar_->widget(), @@ -255,7 +249,6 @@ void BrowserToolbarGtk::Init(Profile* profile, gtk_widget_show(toolbar_); gtk_widget_show_all(location_hbox_); gtk_widget_hide(reload_->widget()); - gtk_widget_hide(go_->widget()); } else { gtk_widget_show_all(event_box_); if (actions_toolbar_->button_count() == 0) @@ -279,7 +272,6 @@ void BrowserToolbarGtk::SetViewIDs() { ViewIDUtil::SetID(reload_->widget(), VIEW_ID_RELOAD_BUTTON); ViewIDUtil::SetID(home_->widget(), VIEW_ID_HOME_BUTTON); ViewIDUtil::SetID(location_bar_->widget(), VIEW_ID_LOCATION_BAR); - ViewIDUtil::SetID(go_->widget(), VIEW_ID_GO_BUTTON); if (page_menu_button_.get()) ViewIDUtil::SetID(page_menu_button_.get(), VIEW_ID_PAGE_MENU); ViewIDUtil::SetID(app_menu_button_.get(), VIEW_ID_APP_MENU); @@ -325,12 +317,6 @@ void BrowserToolbarGtk::EnabledStateChangedForCommand(int id, bool enabled) { case IDC_FORWARD: widget = forward_->widget(); break; - case IDC_RELOAD: - widget = reload_->widget(); - break; - case IDC_GO: - widget = go_->widget(); - break; case IDC_HOME: if (home_.get()) widget = home_->widget(); @@ -430,19 +416,6 @@ void BrowserToolbarGtk::Observe(NotificationType type, gtk_image_set_from_pixbuf(GTK_IMAGE(app_menu_image_), theme_provider_->GetRTLEnabledPixbufNamed(IDR_MENU_CHROME)); - // Update the spacing between the reload button and the location bar. - gtk_box_set_child_packing( - GTK_BOX(toolbar_), reload_->widget(), - FALSE, FALSE, - theme_provider_->UseGtkTheme() ? kToolbarWidgetSpacing : 0, - GTK_PACK_START); - gtk_box_set_child_packing( - GTK_BOX(toolbar_), location_hbox_, - TRUE, TRUE, - (theme_provider_->UseGtkTheme() ? kToolbarWidgetSpacing : 0) + - (ShouldOnlyShowLocation() ? 1 : 0), - GTK_PACK_START); - // Force the height of the toolbar so we get the right amount of padding // above and below the location bar. We always force the size of the hboxes // to either side of the location box, but we only force the location box @@ -705,29 +678,9 @@ void BrowserToolbarGtk::OnButtonClick(GtkWidget* button) { return; } - int command = -1; - GdkModifierType modifier_state; - gtk_get_current_event_state(&modifier_state); - guint modifier_state_uint = modifier_state; - if (button == reload_->widget()) { - if (modifier_state_uint & GDK_SHIFT_MASK) { - command = IDC_RELOAD_IGNORING_CACHE; - // Mask off shift so it isn't interpreted as affecting the disposition - // below. - modifier_state_uint &= ~GDK_SHIFT_MASK; - } else { - command = IDC_RELOAD; - } - if (event_utils::DispositionFromEventFlags(modifier_state_uint) == - CURRENT_TAB) - location_bar_->Revert(); - } else if (home_.get() && button == home_->widget()) { - command = IDC_HOME; - } - - DCHECK_NE(command, -1) << "Unexpected button click callback"; - browser_->ExecuteCommandWithDisposition(command, - event_utils::DispositionFromEventFlags(modifier_state_uint)); + DCHECK(home_.get() && button == home_->widget()) << + "Unexpected button click callback"; + browser_->Home(gtk_util::DispositionForCurrentButtonPressEvent()); } gboolean BrowserToolbarGtk::OnMenuButtonPressEvent(GtkWidget* button, diff --git a/chrome/browser/gtk/browser_toolbar_gtk.h b/chrome/browser/gtk/browser_toolbar_gtk.h index 51a25d6..48d984a 100644 --- a/chrome/browser/gtk/browser_toolbar_gtk.h +++ b/chrome/browser/gtk/browser_toolbar_gtk.h @@ -30,10 +30,10 @@ class BrowserActionsToolbarGtk; class BrowserWindowGtk; class CustomDrawButton; class GtkThemeProvider; -class GoButtonGtk; class LocationBar; class LocationBarViewGtk; class Profile; +class ReloadButtonGtk; class TabContents; class ToolbarModel; @@ -71,7 +71,7 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver, virtual LocationBar* GetLocationBar() const; - GoButtonGtk* GetGoButton() { return go_.get(); } + ReloadButtonGtk* GetReloadButton() { return reload_.get(); } GtkWidget* GetAppMenuButton() { return app_menu_button_.get(); } @@ -219,8 +219,7 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver, // All the buttons in the toolbar. scoped_ptr<BackForwardButtonGtk> back_, forward_; scoped_ptr<CustomDrawButton> home_; - scoped_ptr<CustomDrawButton> reload_; - scoped_ptr<GoButtonGtk> go_; + scoped_ptr<ReloadButtonGtk> reload_; scoped_ptr<BrowserActionsToolbarGtk> actions_toolbar_; OwnedWidgetGtk page_menu_button_, app_menu_button_; diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc index 5d2b7f0..f31b6e8a 100644 --- a/chrome/browser/gtk/browser_window_gtk.cc +++ b/chrome/browser/gtk/browser_window_gtk.cc @@ -47,7 +47,6 @@ #include "chrome/browser/gtk/edit_search_engine_dialog.h" #include "chrome/browser/gtk/find_bar_gtk.h" #include "chrome/browser/gtk/fullscreen_exit_bubble_gtk.h" -#include "chrome/browser/gtk/go_button_gtk.h" #include "chrome/browser/gtk/gtk_floating_container.h" #include "chrome/browser/gtk/gtk_theme_provider.h" #include "chrome/browser/gtk/gtk_util.h" @@ -59,6 +58,7 @@ #include "chrome/browser/gtk/location_bar_view_gtk.h" #include "chrome/browser/gtk/nine_box.h" #include "chrome/browser/gtk/options/content_settings_window_gtk.h" +#include "chrome/browser/gtk/reload_button_gtk.h" #include "chrome/browser/gtk/repost_form_warning_gtk.h" #include "chrome/browser/gtk/status_bubble_gtk.h" #include "chrome/browser/gtk/tab_contents_container_gtk.h" @@ -828,9 +828,10 @@ void BrowserWindowGtk::SetFocusToLocationBar(bool select_all) { GetLocationBar()->FocusLocation(select_all); } -void BrowserWindowGtk::UpdateStopGoState(bool is_loading, bool force) { - toolbar_->GetGoButton()->ChangeMode( - is_loading ? GoButtonGtk::MODE_STOP : GoButtonGtk::MODE_GO, force); +void BrowserWindowGtk::UpdateReloadStopState(bool is_loading, bool force) { + toolbar_->GetReloadButton()->ChangeMode( + is_loading ? ReloadButtonGtk::MODE_STOP : ReloadButtonGtk::MODE_RELOAD, + force); } void BrowserWindowGtk::UpdateToolbar(TabContents* contents, diff --git a/chrome/browser/gtk/browser_window_gtk.h b/chrome/browser/gtk/browser_window_gtk.h index 2a66f5f..3f86f43 100644 --- a/chrome/browser/gtk/browser_window_gtk.h +++ b/chrome/browser/gtk/browser_window_gtk.h @@ -71,7 +71,7 @@ class BrowserWindowGtk : public BrowserWindow, virtual bool IsFullscreenBubbleVisible() const; virtual LocationBar* GetLocationBar() const; virtual void SetFocusToLocationBar(bool select_all); - virtual void UpdateStopGoState(bool is_loading, bool force); + virtual void UpdateReloadStopState(bool is_loading, bool force); virtual void UpdateToolbar(TabContents* contents, bool should_restore_state); virtual void FocusToolbar(); diff --git a/chrome/browser/gtk/go_button_gtk.cc b/chrome/browser/gtk/go_button_gtk.cc deleted file mode 100644 index cf0d926..0000000 --- a/chrome/browser/gtk/go_button_gtk.cc +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/gtk/go_button_gtk.h" - -#include "app/l10n_util.h" -#include "base/i18n/rtl.h" -#include "base/logging.h" -#include "base/message_loop.h" -#include "chrome/app/chrome_dll_resource.h" -#include "chrome/browser/browser.h" -#include "chrome/browser/gtk/gtk_chrome_button.h" -#include "chrome/browser/gtk/gtk_theme_provider.h" -#include "chrome/browser/gtk/gtk_util.h" -#include "chrome/browser/gtk/location_bar_view_gtk.h" -#include "chrome/browser/profile.h" -#include "chrome/browser/search_engines/template_url_model.h" -#include "chrome/common/notification_service.h" -#include "grit/generated_resources.h" -#include "grit/theme_resources.h" - -// Limit the length of the tooltip text. This applies only to the text in the -// omnibox (e.g. X in "Go to X"); -const size_t kMaxTooltipTextLength = 400; - -GoButtonGtk::GoButtonGtk(LocationBarViewGtk* location_bar, Browser* browser) - : location_bar_(location_bar), - browser_(browser), - button_delay_(0), - stop_timer_(this), - intended_mode_(MODE_GO), - visible_mode_(MODE_GO), - theme_provider_(browser ? - GtkThemeProvider::GetFrom(browser->profile()) : NULL), - go_(theme_provider_, IDR_GO, IDR_GO_P, IDR_GO_H, 0, IDR_GO_MASK), - stop_(theme_provider_, IDR_STOP, IDR_STOP_P, IDR_STOP_H, 0, IDR_GO_MASK), - widget_(gtk_chrome_button_new()) { - gtk_widget_set_size_request(widget_.get(), go_.Width(), go_.Height()); - - gtk_widget_set_app_paintable(widget_.get(), TRUE); - - g_signal_connect(widget_.get(), "expose-event", - G_CALLBACK(OnExposeThunk), this); - g_signal_connect(widget_.get(), "leave-notify-event", - G_CALLBACK(OnLeaveNotifyThunk), this); - g_signal_connect(widget_.get(), "clicked", - G_CALLBACK(OnClickedThunk), this); - GTK_WIDGET_UNSET_FLAGS(widget_.get(), GTK_CAN_FOCUS); - - gtk_widget_set_has_tooltip(widget_.get(), TRUE); - g_signal_connect(widget_.get(), "query-tooltip", - G_CALLBACK(OnQueryTooltipThunk), this); - - hover_controller_.Init(widget()); - gtk_util::SetButtonTriggersNavigation(widget()); - - if (theme_provider_) { - theme_provider_->InitThemesFor(this); - registrar_.Add(this, - NotificationType::BROWSER_THEME_CHANGED, - Source<GtkThemeProvider>(theme_provider_)); - } -} - -GoButtonGtk::~GoButtonGtk() { - widget_.Destroy(); -} - -void GoButtonGtk::ChangeMode(Mode mode, bool force) { - intended_mode_ = mode; - - // If the change is forced, or the user isn't hovering the icon, or it's safe - // to change it to the other image type, make the change immediately; - // otherwise we'll let it happen later. - if (force || GTK_WIDGET_STATE(widget()) == GTK_STATE_NORMAL || - ((mode == MODE_STOP) ? - stop_timer_.empty() : (visible_mode_ != MODE_STOP))) { - stop_timer_.RevokeAll(); - visible_mode_ = mode; - gtk_widget_queue_draw(widget_.get()); - - UpdateThemeButtons(); - } -} - -void GoButtonGtk::Observe(NotificationType type, - const NotificationSource& source, const NotificationDetails& details) { - DCHECK(NotificationType::BROWSER_THEME_CHANGED == type); - - GtkThemeProvider* provider = static_cast<GtkThemeProvider*>( - Source<GtkThemeProvider>(source).ptr()); - DCHECK(provider == theme_provider_); - UpdateThemeButtons(); -} - -Task* GoButtonGtk::CreateButtonTimerTask() { - return stop_timer_.NewRunnableMethod(&GoButtonGtk::OnButtonTimer); -} - -void GoButtonGtk::OnButtonTimer() { - stop_timer_.RevokeAll(); - ChangeMode(intended_mode_, true); -} - -gboolean GoButtonGtk::OnExpose(GtkWidget* widget, - GdkEventExpose* e) { - if (theme_provider_ && theme_provider_->UseGtkTheme()) { - return FALSE; - } else { - double hover_state = hover_controller_.GetCurrentValue(); - if (visible_mode_ == MODE_GO) { - return go_.OnExpose(widget, e, hover_state); - } else { - return stop_.OnExpose(widget, e, hover_state); - } - } -} - -gboolean GoButtonGtk::OnLeaveNotify(GtkWidget* widget, - GdkEventCrossing* event) { - ChangeMode(intended_mode_, true); - return FALSE; -} - -void GoButtonGtk::OnClicked(GtkWidget* sender) { - if (visible_mode_ == MODE_STOP) { - if (browser_) - browser_->Stop(); - - // The user has clicked, so we can feel free to update the button, - // even if the mouse is still hovering. - ChangeMode(MODE_GO, true); - } else if (visible_mode_ == MODE_GO && stop_timer_.empty()) { - // If the go button is visible and not within the double click timer, go. - if (browser_) { - browser_->ExecuteCommandWithDisposition(IDC_GO, - gtk_util::DispositionForCurrentButtonPressEvent()); - } - - // Figure out the system double-click time. - if (button_delay_ == 0) { - GtkSettings* settings = gtk_settings_get_default(); - g_object_get(G_OBJECT(settings), - "gtk-double-click-time", - &button_delay_, - NULL); - } - - // Stop any existing timers. - stop_timer_.RevokeAll(); - - // Start a timer - while this timer is running, the go button - // cannot be changed to a stop button. We do not set intended_mode_ - // to MODE_STOP here as we want to wait for the browser to tell - // us that it has started loading (and this may occur only after - // some delay). - MessageLoop::current()->PostDelayedTask(FROM_HERE, - CreateButtonTimerTask(), - button_delay_); - } -} - -gboolean GoButtonGtk::OnQueryTooltip(GtkWidget* sender, - gint x, gint y, gboolean keyboard_mode, - GtkTooltip* tooltip) { - // |location_bar_| can be NULL in tests. - if (!location_bar_) - return FALSE; - - std::string text; - if (visible_mode_ == MODE_GO) { - std::wstring current_text_wstr(location_bar_->location_entry()->GetText()); - base::i18n::GetDisplayStringInLTRDirectionality(¤t_text_wstr); - string16 current_text = WideToUTF16Hack( - l10n_util::TruncateString(current_text_wstr, kMaxTooltipTextLength)); - - AutocompleteEditModel* edit_model = - location_bar_->location_entry()->model(); - if (edit_model->CurrentTextIsURL()) { - text = l10n_util::GetStringFUTF8(IDS_TOOLTIP_GO_SITE, current_text); - } else { - std::wstring keyword(edit_model->keyword()); - TemplateURLModel* template_url_model = - browser_->profile()->GetTemplateURLModel(); - const TemplateURL* provider = - (keyword.empty() || edit_model->is_keyword_hint()) ? - template_url_model->GetDefaultSearchProvider() : - template_url_model->GetTemplateURLForKeyword(keyword); - if (!provider) - return FALSE; // Don't show a tooltip. - text = l10n_util::GetStringFUTF8(IDS_TOOLTIP_GO_SEARCH, - WideToUTF16Hack(provider->AdjustedShortNameForLocaleDirection()), - current_text); - } - } else { - text = l10n_util::GetStringUTF8(IDS_TOOLTIP_STOP); - } - - gtk_tooltip_set_text(tooltip, text.c_str()); - return TRUE; -} - -void GoButtonGtk::UpdateThemeButtons() { - bool use_gtk = theme_provider_ && theme_provider_->UseGtkTheme(); - - if (use_gtk) { - GdkPixbuf* pixbuf = NULL; - if (intended_mode_ == MODE_GO) { - pixbuf = theme_provider_->GetPixbufNamed(IDR_GO_NOBORDER_CENTER); - } else { - pixbuf = theme_provider_->GetPixbufNamed(IDR_STOP_NOBORDER_CENTER); - } - - gtk_button_set_image( - GTK_BUTTON(widget_.get()), - gtk_image_new_from_pixbuf(pixbuf)); - - gtk_widget_set_size_request(widget_.get(), -1, -1); - gtk_widget_set_app_paintable(widget_.get(), FALSE); - gtk_widget_set_double_buffered(widget_.get(), TRUE); - } else { - gtk_widget_set_size_request(widget_.get(), go_.Width(), go_.Height()); - - gtk_widget_set_app_paintable(widget_.get(), TRUE); - // We effectively double-buffer by virtue of having only one image... - gtk_widget_set_double_buffered(widget_.get(), FALSE); - } - - gtk_chrome_button_set_use_gtk_rendering( - GTK_CHROME_BUTTON(widget_.get()), use_gtk); -} diff --git a/chrome/browser/gtk/go_button_gtk_unittest.cc b/chrome/browser/gtk/go_button_gtk_unittest.cc deleted file mode 100644 index b714193..0000000 --- a/chrome/browser/gtk/go_button_gtk_unittest.cc +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/gtk/go_button_gtk.h" -#include "base/task.h" -#include "testing/gtest/include/gtest/gtest.h" - -class GoButtonGtkPeer { - public: - explicit GoButtonGtkPeer(GoButtonGtk* go) : go_(go) { } - - // const accessors for internal state - GoButtonGtk::Mode intended_mode() const { return go_->intended_mode_; } - GoButtonGtk::Mode visible_mode() const { return go_->visible_mode_; } - - // mutable accessors for internal state - ScopedRunnableMethodFactory<GoButtonGtk>* stop_timer() { - return &go_->stop_timer_; - } - - void SetState(GtkStateType state) { - gtk_widget_set_state(go_->widget(), state); - } - - // mutators for internal state - void set_intended_mode(GoButtonGtk::Mode mode) { go_->intended_mode_ = mode; } - void set_visible_mode(GoButtonGtk::Mode mode) { go_->visible_mode_ = mode; } - - // forwarders to private methods - Task* CreateButtonTimerTask() { return go_->CreateButtonTimerTask(); } - gboolean OnLeave() { - return go_->OnLeaveNotify(go_->widget(), NULL); - } - - void OnClicked() { - go_->OnClicked(go_->widget()); - } - - private: - GoButtonGtk* const go_; -}; - -namespace { - -class GoButtonGtkTest : public testing::Test { - protected: - GoButtonGtkTest() : go_(NULL, NULL), peer_(&go_) { } - - protected: - GoButtonGtk go_; - GoButtonGtkPeer peer_; -}; - -TEST_F(GoButtonGtkTest, ChangeModeGo) { - go_.ChangeMode(GoButtonGtk::MODE_GO, true); - EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.intended_mode()); - EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.visible_mode()); -} - -TEST_F(GoButtonGtkTest, ChangeModeStop) { - go_.ChangeMode(GoButtonGtk::MODE_STOP, true); - EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.intended_mode()); - EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.visible_mode()); -} - -TEST_F(GoButtonGtkTest, ScheduleChangeModeNormalGo) { - peer_.set_visible_mode(GoButtonGtk::MODE_STOP); - peer_.SetState(GTK_STATE_NORMAL); - go_.ChangeMode(GoButtonGtk::MODE_GO, false); - EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.intended_mode()); - EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.visible_mode()); -} - -TEST_F(GoButtonGtkTest, ScheduleChangeModeHotGo) { - peer_.set_visible_mode(GoButtonGtk::MODE_STOP); - peer_.SetState(GTK_STATE_PRELIGHT); - go_.ChangeMode(GoButtonGtk::MODE_GO, false); - EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.intended_mode()); - EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.visible_mode()); -} - -TEST_F(GoButtonGtkTest, ScheduleChangeModeNormalStop) { - peer_.set_visible_mode(GoButtonGtk::MODE_GO); - peer_.SetState(GTK_STATE_NORMAL); - go_.ChangeMode(GoButtonGtk::MODE_STOP, false); - EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.intended_mode()); - EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.visible_mode()); -} - -TEST_F(GoButtonGtkTest, ScheduleChangeModeHotStop) { - peer_.set_visible_mode(GoButtonGtk::MODE_GO); - peer_.SetState(GTK_STATE_PRELIGHT); - go_.ChangeMode(GoButtonGtk::MODE_STOP, false); - EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.intended_mode()); - EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.visible_mode()); -} - -TEST_F(GoButtonGtkTest, ScheduleChangeModeTimerHotStop) { - peer_.set_visible_mode(GoButtonGtk::MODE_GO); - peer_.SetState(GTK_STATE_PRELIGHT); - scoped_ptr<Task> task(peer_.CreateButtonTimerTask()); - go_.ChangeMode(GoButtonGtk::MODE_STOP, false); - EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.intended_mode()); - EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.visible_mode()); -} - -TEST_F(GoButtonGtkTest, OnLeaveIntendedStop) { - peer_.SetState(GTK_STATE_PRELIGHT); - peer_.set_visible_mode(GoButtonGtk::MODE_GO); - peer_.set_intended_mode(GoButtonGtk::MODE_STOP); - peer_.OnLeave(); - EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.visible_mode()); - EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.intended_mode()); -} - -TEST_F(GoButtonGtkTest, OnLeaveIntendedGo) { - peer_.SetState(GTK_STATE_PRELIGHT); - peer_.set_visible_mode(GoButtonGtk::MODE_STOP); - peer_.set_intended_mode(GoButtonGtk::MODE_GO); - peer_.OnLeave(); - EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.visible_mode()); - EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.intended_mode()); -} - -TEST_F(GoButtonGtkTest, OnClickedStop) { - peer_.set_visible_mode(GoButtonGtk::MODE_STOP); - peer_.OnClicked(); - EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.visible_mode()); - EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.intended_mode()); -} - -} // namespace diff --git a/chrome/browser/gtk/location_bar_view_gtk.cc b/chrome/browser/gtk/location_bar_view_gtk.cc index 1b89b07..3343615 100644 --- a/chrome/browser/gtk/location_bar_view_gtk.cc +++ b/chrome/browser/gtk/location_bar_view_gtk.cc @@ -540,12 +540,7 @@ PageTransition::Type LocationBarViewGtk::GetPageTransition() const { } void LocationBarViewGtk::AcceptInput() { - AcceptInputWithDisposition(CURRENT_TAB); -} - -void LocationBarViewGtk::AcceptInputWithDisposition( - WindowOpenDisposition disposition) { - location_entry_->model()->AcceptInput(disposition, false); + location_entry_->model()->AcceptInput(CURRENT_TAB, false); } void LocationBarViewGtk::FocusLocation(bool select_all) { diff --git a/chrome/browser/gtk/location_bar_view_gtk.h b/chrome/browser/gtk/location_bar_view_gtk.h index 4cd11f9..412adf0 100644 --- a/chrome/browser/gtk/location_bar_view_gtk.h +++ b/chrome/browser/gtk/location_bar_view_gtk.h @@ -101,7 +101,6 @@ class LocationBarViewGtk : public AutocompleteEditController, virtual WindowOpenDisposition GetWindowOpenDisposition() const; virtual PageTransition::Type GetPageTransition() const; virtual void AcceptInput(); - virtual void AcceptInputWithDisposition(WindowOpenDisposition); virtual void FocusLocation(bool select_all); virtual void FocusSearch(); virtual void UpdateContentSettingsIcons(); diff --git a/chrome/browser/gtk/reload_button_gtk.cc b/chrome/browser/gtk/reload_button_gtk.cc new file mode 100644 index 0000000..8e3cb8f --- /dev/null +++ b/chrome/browser/gtk/reload_button_gtk.cc @@ -0,0 +1,218 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/gtk/reload_button_gtk.h" + +#include "app/l10n_util.h" +#include "base/logging.h" +#include "chrome/app/chrome_dll_resource.h" +#include "chrome/browser/browser.h" +#include "chrome/browser/gtk/gtk_chrome_button.h" +#include "chrome/browser/gtk/gtk_theme_provider.h" +#include "chrome/browser/gtk/gtk_util.h" +#include "chrome/browser/gtk/location_bar_view_gtk.h" +#include "chrome/common/notification_service.h" +#include "grit/generated_resources.h" +#include "grit/theme_resources.h" + +// The width of this button in GTK+ theme mode. The Stop and Refresh stock icons +// can be different sizes; this variable is used to make sure that the button +// doesn't change sizes when switching between the two. +static int GtkButtonWidth = 0; + +ReloadButtonGtk::ReloadButtonGtk(LocationBarViewGtk* location_bar, + Browser* browser) + : location_bar_(location_bar), + browser_(browser), + button_delay_(0), + pretend_timer_is_running_for_unittest_(false), + intended_mode_(MODE_RELOAD), + visible_mode_(MODE_RELOAD), + theme_provider_(browser ? + GtkThemeProvider::GetFrom(browser->profile()) : NULL), + reload_(theme_provider_, IDR_RELOAD, IDR_RELOAD_P, IDR_RELOAD_H, 0, + IDR_BUTTON_MASK), + stop_(theme_provider_, IDR_STOP, IDR_STOP_P, IDR_STOP_H, 0, + IDR_BUTTON_MASK), + widget_(gtk_chrome_button_new()) { + gtk_widget_set_size_request(widget_.get(), reload_.Width(), reload_.Height()); + + gtk_widget_set_app_paintable(widget_.get(), TRUE); + + g_signal_connect(widget_.get(), "expose-event", + G_CALLBACK(OnExposeThunk), this); + g_signal_connect(widget_.get(), "leave-notify-event", + G_CALLBACK(OnLeaveNotifyThunk), this); + g_signal_connect(widget_.get(), "clicked", + G_CALLBACK(OnClickedThunk), this); + GTK_WIDGET_UNSET_FLAGS(widget_.get(), GTK_CAN_FOCUS); + + gtk_widget_set_has_tooltip(widget_.get(), TRUE); + g_signal_connect(widget_.get(), "query-tooltip", + G_CALLBACK(OnQueryTooltipThunk), this); + + hover_controller_.Init(widget()); + gtk_util::SetButtonTriggersNavigation(widget()); + + if (theme_provider_) { + theme_provider_->InitThemesFor(this); + registrar_.Add(this, + NotificationType::BROWSER_THEME_CHANGED, + Source<GtkThemeProvider>(theme_provider_)); + } +} + +ReloadButtonGtk::~ReloadButtonGtk() { + widget_.Destroy(); +} + +void ReloadButtonGtk::ChangeMode(Mode mode, bool force) { + intended_mode_ = mode; + + // If the change is forced, or the user isn't hovering the icon, or it's safe + // to change it to the other image type, make the change immediately; + // otherwise we'll let it happen later. + if (force || GTK_WIDGET_STATE(widget()) == GTK_STATE_NORMAL || + ((mode == MODE_STOP) ? + !timer_running() : (visible_mode_ != MODE_STOP))) { + timer_.Stop(); + visible_mode_ = mode; + gtk_widget_queue_draw(widget_.get()); + + UpdateThemeButtons(); + } +} + +void ReloadButtonGtk::Observe(NotificationType type, + const NotificationSource& source, + const NotificationDetails& details) { + DCHECK(NotificationType::BROWSER_THEME_CHANGED == type); + + GtkThemeProvider* provider = static_cast<GtkThemeProvider*>( + Source<GtkThemeProvider>(source).ptr()); + DCHECK_EQ(provider, theme_provider_); + GtkButtonWidth = 0; + UpdateThemeButtons(); +} + +void ReloadButtonGtk::OnButtonTimer() { + ChangeMode(intended_mode_, true); +} + +gboolean ReloadButtonGtk::OnExpose(GtkWidget* widget, + GdkEventExpose* e) { + if (theme_provider_ && theme_provider_->UseGtkTheme()) + return FALSE; + return ((visible_mode_ == MODE_RELOAD) ? reload_ : stop_).OnExpose( + widget, e, hover_controller_.GetCurrentValue()); +} + +gboolean ReloadButtonGtk::OnLeaveNotify(GtkWidget* widget, + GdkEventCrossing* event) { + ChangeMode(intended_mode_, true); + return FALSE; +} + +void ReloadButtonGtk::OnClicked(GtkWidget* sender) { + if (visible_mode_ == MODE_STOP) { + if (browser_) + browser_->Stop(); + + // The user has clicked, so we can feel free to update the button, + // even if the mouse is still hovering. + ChangeMode(MODE_RELOAD, true); + } else if (!timer_running()) { + // Shift-clicking or Ctrl-clicking the reload button means we should ignore + // any cached content. + int command; + GdkModifierType modifier_state; + gtk_get_current_event_state(&modifier_state); + guint modifier_state_uint = modifier_state; + if (modifier_state_uint & GDK_SHIFT_MASK) { + command = IDC_RELOAD_IGNORING_CACHE; + // Mask off shift so it isn't interpreted as affecting the disposition + // below. + modifier_state_uint &= ~GDK_SHIFT_MASK; + } else { + command = IDC_RELOAD; + } + + WindowOpenDisposition disposition = + event_utils::DispositionFromEventFlags(modifier_state_uint); + if (disposition == CURRENT_TAB) { + // Forcibly reset the location bar, since otherwise it won't discard any + // ongoing user edits, since it doesn't realize this is a user-initiated + // action. + location_bar_->Revert(); + } + + if (browser_) + browser_->ExecuteCommandWithDisposition(command, disposition); + + // Figure out the system double-click time. + if (button_delay_ == 0) { + GtkSettings* settings = gtk_settings_get_default(); + g_object_get(G_OBJECT(settings), "gtk-double-click-time", &button_delay_, + NULL); + } + + // Stop the timer. + timer_.Stop(); + + // Start a timer - while this timer is running, the reload button cannot be + // changed to a stop button. We do not set |intended_mode_| to MODE_STOP + // here as we want to wait for the browser to tell us that it has started + // loading (and this may occur only after some delay). + timer_.Start(base::TimeDelta::FromMilliseconds(button_delay_), this, + &ReloadButtonGtk::OnButtonTimer); + } +} + +gboolean ReloadButtonGtk::OnQueryTooltip(GtkWidget* sender, + gint x, + gint y, + gboolean keyboard_mode, + GtkTooltip* tooltip) { + // |location_bar_| can be NULL in tests. + if (!location_bar_) + return FALSE; + + gtk_tooltip_set_text(tooltip, l10n_util::GetStringUTF8( + (visible_mode_ == MODE_RELOAD) ? + IDS_TOOLTIP_RELOAD : IDS_TOOLTIP_STOP).c_str()); + return TRUE; +} + +void ReloadButtonGtk::UpdateThemeButtons() { + bool use_gtk = theme_provider_ && theme_provider_->UseGtkTheme(); + + if (use_gtk) { + GdkPixbuf* pixbuf = gtk_widget_render_icon(widget(), + (intended_mode_ == MODE_RELOAD) ? GTK_STOCK_REFRESH : GTK_STOCK_STOP, + GTK_ICON_SIZE_SMALL_TOOLBAR, NULL); + + gtk_button_set_image(GTK_BUTTON(widget_.get()), + gtk_image_new_from_pixbuf(pixbuf)); + g_object_unref(pixbuf); + + gtk_widget_set_size_request(widget_.get(), -1, -1); + GtkRequisition req; + gtk_widget_size_request(widget(), &req); + GtkButtonWidth = std::max(GtkButtonWidth, req.width); + gtk_widget_set_size_request(widget_.get(), GtkButtonWidth, -1); + + gtk_widget_set_app_paintable(widget_.get(), FALSE); + gtk_widget_set_double_buffered(widget_.get(), TRUE); + } else { + gtk_widget_set_size_request(widget_.get(), reload_.Width(), + reload_.Height()); + + gtk_widget_set_app_paintable(widget_.get(), TRUE); + // We effectively double-buffer by virtue of having only one image... + gtk_widget_set_double_buffered(widget_.get(), FALSE); + } + + gtk_chrome_button_set_use_gtk_rendering( + GTK_CHROME_BUTTON(widget_.get()), use_gtk); +} diff --git a/chrome/browser/gtk/go_button_gtk.h b/chrome/browser/gtk/reload_button_gtk.h index 9626256..6cc3a13 100644 --- a/chrome/browser/gtk/go_button_gtk.h +++ b/chrome/browser/gtk/reload_button_gtk.h @@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_GTK_GO_BUTTON_GTK_H_ -#define CHROME_BROWSER_GTK_GO_BUTTON_GTK_H_ +#ifndef CHROME_BROWSER_GTK_RELOAD_BUTTON_GTK_H_ +#define CHROME_BROWSER_GTK_RELOAD_BUTTON_GTK_H_ #include <gtk/gtk.h> #include "app/gtk_signal.h" #include "base/basictypes.h" -#include "base/task.h" +#include "base/timer.h" #include "chrome/browser/gtk/custom_button.h" #include "chrome/common/notification_observer.h" #include "chrome/common/notification_registrar.h" @@ -20,12 +20,12 @@ class GtkThemeProvider; class LocationBarViewGtk; class Task; -class GoButtonGtk : public NotificationObserver { +class ReloadButtonGtk : public NotificationObserver { public: - enum Mode { MODE_GO = 0, MODE_STOP }; + enum Mode { MODE_RELOAD = 0, MODE_STOP }; - GoButtonGtk(LocationBarViewGtk* location_bar, Browser* browser); - ~GoButtonGtk(); + ReloadButtonGtk(LocationBarViewGtk* location_bar, Browser* browser); + ~ReloadButtonGtk(); GtkWidget* widget() const { return widget_.get(); } @@ -39,18 +39,23 @@ class GoButtonGtk : public NotificationObserver { const NotificationDetails& details); private: - friend class GoButtonGtkPeer; + friend class ReloadButtonGtkPeer; - CHROMEGTK_CALLBACK_1(GoButtonGtk, gboolean, OnExpose, GdkEventExpose*); - CHROMEGTK_CALLBACK_1(GoButtonGtk, gboolean, OnLeaveNotify, GdkEventCrossing*); - CHROMEGTK_CALLBACK_0(GoButtonGtk, void, OnClicked); - CHROMEGTK_CALLBACK_4(GoButtonGtk, gboolean, OnQueryTooltip, - gint, gint, gboolean, GtkTooltip*); + CHROMEGTK_CALLBACK_1(ReloadButtonGtk, gboolean, OnExpose, GdkEventExpose*); + CHROMEGTK_CALLBACK_1(ReloadButtonGtk, gboolean, OnLeaveNotify, + GdkEventCrossing*); + CHROMEGTK_CALLBACK_0(ReloadButtonGtk, void, OnClicked); + CHROMEGTK_CALLBACK_4(ReloadButtonGtk, gboolean, OnQueryTooltip, gint, gint, + gboolean, GtkTooltip*); void SetToggled(); - Task* CreateButtonTimerTask(); + bool timer_running() const { + return timer_.IsRunning() || pretend_timer_is_running_for_unittest_; + } + void OnButtonTimer(); + void UpdateThemeButtons(); // Used to listen for theme change notifications. @@ -64,7 +69,8 @@ class GoButtonGtk : public NotificationObserver { // Delay time to wait before allowing a mode change. This is to prevent a // mode switch while the user is double clicking. int button_delay_; - ScopedRunnableMethodFactory<GoButtonGtk> stop_timer_; + base::OneShotTimer<ReloadButtonGtk> timer_; + bool pretend_timer_is_running_for_unittest_; // The mode we should be in. Mode intended_mode_; @@ -74,13 +80,13 @@ class GoButtonGtk : public NotificationObserver { GtkThemeProvider* theme_provider_; - CustomDrawButtonBase go_; + CustomDrawButtonBase reload_; CustomDrawButtonBase stop_; CustomDrawHoverController hover_controller_; OwnedWidgetGtk widget_; - DISALLOW_COPY_AND_ASSIGN(GoButtonGtk); + DISALLOW_IMPLICIT_CONSTRUCTORS(ReloadButtonGtk); }; -#endif // CHROME_BROWSER_GTK_GO_BUTTON_GTK_H_ +#endif // CHROME_BROWSER_GTK_RELOAD_BUTTON_GTK_H_ diff --git a/chrome/browser/gtk/reload_button_gtk_unittest.cc b/chrome/browser/gtk/reload_button_gtk_unittest.cc new file mode 100644 index 0000000..12384b6 --- /dev/null +++ b/chrome/browser/gtk/reload_button_gtk_unittest.cc @@ -0,0 +1,138 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/gtk/reload_button_gtk.h" +#include "testing/gtest/include/gtest/gtest.h" + +class ReloadButtonGtkPeer { + public: + explicit ReloadButtonGtkPeer(ReloadButtonGtk* reload) : reload_(reload) { } + + // const accessors for internal state + ReloadButtonGtk::Mode intended_mode() const { + return reload_->intended_mode_; + } + ReloadButtonGtk::Mode visible_mode() const { return reload_->visible_mode_; } + + // mutators for internal state + void SetState(GtkStateType state) { + gtk_widget_set_state(reload_->widget(), state); + } + void set_intended_mode(ReloadButtonGtk::Mode mode) { + reload_->intended_mode_ = mode; + } + void set_visible_mode(ReloadButtonGtk::Mode mode) { + reload_->visible_mode_ = mode; + } + void set_timer_running() { + reload_->pretend_timer_is_running_for_unittest_ = true; + } + void set_timer_stopped() { + reload_->pretend_timer_is_running_for_unittest_ = false; + } + + // forwarders to private methods + gboolean OnLeave() { + return reload_->OnLeaveNotify(reload_->widget(), NULL); + } + + void OnClicked() { + reload_->OnClicked(reload_->widget()); + } + + private: + ReloadButtonGtk* const reload_; +}; + +namespace { + +class ReloadButtonGtkTest : public testing::Test { + protected: + ReloadButtonGtkTest() : reload_(NULL, NULL), peer_(&reload_) { } + + protected: + ReloadButtonGtk reload_; + ReloadButtonGtkPeer peer_; +}; + +TEST_F(ReloadButtonGtkTest, ChangeModeReload) { + reload_.ChangeMode(ReloadButtonGtk::MODE_RELOAD, true); + EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.intended_mode()); + EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.visible_mode()); +} + +TEST_F(ReloadButtonGtkTest, ChangeModeStop) { + reload_.ChangeMode(ReloadButtonGtk::MODE_STOP, true); + EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.intended_mode()); + EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.visible_mode()); +} + +TEST_F(ReloadButtonGtkTest, ScheduleChangeModeNormalReload) { + peer_.set_visible_mode(ReloadButtonGtk::MODE_STOP); + peer_.SetState(GTK_STATE_NORMAL); + reload_.ChangeMode(ReloadButtonGtk::MODE_RELOAD, false); + EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.intended_mode()); + EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.visible_mode()); +} + +TEST_F(ReloadButtonGtkTest, ScheduleChangeModeHotReload) { + peer_.set_visible_mode(ReloadButtonGtk::MODE_STOP); + peer_.SetState(GTK_STATE_PRELIGHT); + reload_.ChangeMode(ReloadButtonGtk::MODE_RELOAD, false); + EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.intended_mode()); + EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.visible_mode()); +} + +TEST_F(ReloadButtonGtkTest, ScheduleChangeModeNormalStop) { + peer_.set_visible_mode(ReloadButtonGtk::MODE_RELOAD); + peer_.SetState(GTK_STATE_NORMAL); + reload_.ChangeMode(ReloadButtonGtk::MODE_STOP, false); + EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.intended_mode()); + EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.visible_mode()); +} + +TEST_F(ReloadButtonGtkTest, ScheduleChangeModeHotStop) { + peer_.set_visible_mode(ReloadButtonGtk::MODE_RELOAD); + peer_.SetState(GTK_STATE_PRELIGHT); + reload_.ChangeMode(ReloadButtonGtk::MODE_STOP, false); + EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.intended_mode()); + EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.visible_mode()); +} + +TEST_F(ReloadButtonGtkTest, ScheduleChangeModeTimerHotStop) { + peer_.set_visible_mode(ReloadButtonGtk::MODE_RELOAD); + peer_.SetState(GTK_STATE_PRELIGHT); + peer_.set_timer_running(); + reload_.ChangeMode(ReloadButtonGtk::MODE_STOP, false); + peer_.set_timer_stopped(); + EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.intended_mode()); + EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.visible_mode()); +} + +TEST_F(ReloadButtonGtkTest, OnLeaveIntendedStop) { + peer_.SetState(GTK_STATE_PRELIGHT); + peer_.set_visible_mode(ReloadButtonGtk::MODE_RELOAD); + peer_.set_intended_mode(ReloadButtonGtk::MODE_STOP); + peer_.OnLeave(); + EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.visible_mode()); + EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.intended_mode()); +} + +TEST_F(ReloadButtonGtkTest, OnLeaveIntendedReload) { + peer_.SetState(GTK_STATE_PRELIGHT); + peer_.set_visible_mode(ReloadButtonGtk::MODE_STOP); + peer_.set_intended_mode(ReloadButtonGtk::MODE_RELOAD); + peer_.OnLeave(); + EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.visible_mode()); + EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.intended_mode()); +} + +TEST_F(ReloadButtonGtkTest, OnClickedStop) { + peer_.set_visible_mode(ReloadButtonGtk::MODE_STOP); + peer_.OnClicked(); + EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.visible_mode()); + EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.intended_mode()); +} + +} // namespace diff --git a/chrome/browser/gtk/view_id_util.cc b/chrome/browser/gtk/view_id_util.cc index ad4328c..95ef79e 100644 --- a/chrome/browser/gtk/view_id_util.cc +++ b/chrome/browser/gtk/view_id_util.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -83,9 +83,6 @@ const char* GetNameFromID(ViewID id) { case VIEW_ID_LOCATION_BAR: return "chrome-location-bar"; - case VIEW_ID_GO_BUTTON: - return "chrome-toolbar-go-button"; - case VIEW_ID_BROWSER_ACTION_TOOLBAR: return "chrome-toolbar-browser-actions-container"; diff --git a/chrome/browser/location_bar.h b/chrome/browser/location_bar.h index 0ceee05..8b18be6 100644 --- a/chrome/browser/location_bar.h +++ b/chrome/browser/location_bar.h @@ -41,9 +41,6 @@ class LocationBar { // Accepts the current string of text entered in the location bar. virtual void AcceptInput() = 0; - // Accepts the current input, overriding the disposition. - virtual void AcceptInputWithDisposition(WindowOpenDisposition) = 0; - // Focuses the location bar. Optionally also selects its contents. virtual void FocusLocation(bool select_all) = 0; diff --git a/chrome/browser/theme_resources_util_unittest.cc b/chrome/browser/theme_resources_util_unittest.cc index 6153e75..84e9395 100644 --- a/chrome/browser/theme_resources_util_unittest.cc +++ b/chrome/browser/theme_resources_util_unittest.cc @@ -19,7 +19,7 @@ struct TestCase { TEST(ThemeResourcesUtil, SpotCheckIds) { const TestCase kTestCases[] = { {"back", IDR_BACK}, - {"go", IDR_GO}, + {"stop", IDR_STOP}, {"omnibox_star", IDR_OMNIBOX_STAR}, {"sad_tab", IDR_SAD_TAB}, }; diff --git a/chrome/browser/view_ids.h b/chrome/browser/view_ids.h index 8e788dd..0ce057b 100644 --- a/chrome/browser/view_ids.h +++ b/chrome/browser/view_ids.h @@ -39,7 +39,6 @@ enum ViewID { VIEW_ID_HOME_BUTTON, VIEW_ID_STAR_BUTTON, VIEW_ID_LOCATION_BAR, - VIEW_ID_GO_BUTTON, VIEW_ID_PAGE_MENU, VIEW_ID_APP_MENU, VIEW_ID_AUTOCOMPLETE, diff --git a/chrome/browser/views/browser_views_accessibility_browsertest.cc b/chrome/browser/views/browser_views_accessibility_browsertest.cc index 000bc0f..bebb693 100644 --- a/chrome/browser/views/browser_views_accessibility_browsertest.cc +++ b/chrome/browser/views/browser_views_accessibility_browsertest.cc @@ -241,14 +241,6 @@ IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, ROLE_SYSTEM_GROUPING); } -// Retrieve accessibility object for Go button and verify accessibility info. -IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestGoButtonAccObj) { - // Verify Go button MSAA name and role. - TestViewAccessibilityObject(GetToolbarView()->GetViewByID(VIEW_ID_GO_BUTTON), - l10n_util::GetString(IDS_ACCNAME_GO), - ROLE_SYSTEM_PUSHBUTTON); -} - // Retrieve accessibility object for Page menu button and verify accessibility // info. IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestPageMenuAccObj) { diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc index 7bc300f..b6d5c94 100644 --- a/chrome/browser/views/frame/browser_view.cc +++ b/chrome/browser/views/frame/browser_view.cc @@ -858,9 +858,9 @@ void BrowserView::SetFocusToLocationBar(bool select_all) { } } -void BrowserView::UpdateStopGoState(bool is_loading, bool force) { - toolbar_->go_button()->ChangeMode( - is_loading ? GoButton::MODE_STOP : GoButton::MODE_GO, force); +void BrowserView::UpdateReloadStopState(bool is_loading, bool force) { + toolbar_->reload_button()->ChangeMode( + is_loading ? ReloadButton::MODE_STOP : ReloadButton::MODE_RELOAD, force); } void BrowserView::UpdateToolbar(TabContents* contents, diff --git a/chrome/browser/views/frame/browser_view.h b/chrome/browser/views/frame/browser_view.h index a4cdd57..6c6c4b4 100644 --- a/chrome/browser/views/frame/browser_view.h +++ b/chrome/browser/views/frame/browser_view.h @@ -283,7 +283,7 @@ class BrowserView : public BrowserBubbleHost, virtual bool IsFullscreen() const; virtual LocationBar* GetLocationBar() const; virtual void SetFocusToLocationBar(bool select_all); - virtual void UpdateStopGoState(bool is_loading, bool force); + virtual void UpdateReloadStopState(bool is_loading, bool force); virtual void UpdateToolbar(TabContents* contents, bool should_restore_state); virtual void FocusToolbar(); virtual void FocusPageAndAppMenus(); diff --git a/chrome/browser/views/go_button.cc b/chrome/browser/views/go_button.cc deleted file mode 100644 index 80d993b..0000000 --- a/chrome/browser/views/go_button.cc +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/views/go_button.h" - -#include "app/l10n_util.h" -#include "base/compiler_specific.h" -#include "base/i18n/rtl.h" -#include "base/message_loop.h" -#include "chrome/app/chrome_dll_resource.h" -#include "chrome/browser/browser.h" -#include "chrome/browser/profile.h" -#include "chrome/browser/search_engines/template_url_model.h" -#include "chrome/browser/views/event_utils.h" -#include "chrome/browser/views/location_bar/location_bar_view.h" -#include "grit/generated_resources.h" - -//////////////////////////////////////////////////////////////////////////////// -// GoButton, public: - -GoButton::GoButton(LocationBarView* location_bar, Browser* browser) - : ToggleImageButton(this), - ALLOW_THIS_IN_INITIALIZER_LIST(stop_timer_(this)), - location_bar_(location_bar), - browser_(browser), - intended_mode_(MODE_GO), - visible_mode_(MODE_GO) { - DCHECK(location_bar_); - set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | - views::Event::EF_MIDDLE_BUTTON_DOWN); -} - -GoButton::~GoButton() { - stop_timer_.RevokeAll(); -} - -void GoButton::ChangeMode(Mode mode, bool force) { - intended_mode_ = mode; - - // If the change is forced, or the user isn't hovering the icon, or it's safe - // to change it to the other image type, make the change immediately; - // otherwise we'll let it happen later. - if (force || (state() != BS_HOT) || ((mode == MODE_STOP) ? - stop_timer_.empty() : (visible_mode_ != MODE_STOP))) { - stop_timer_.RevokeAll(); - SetToggled(mode == MODE_STOP); - visible_mode_ = mode; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// GoButton, views::ButtonListener implementation: - -void GoButton::ButtonPressed(views::Button* button, const views::Event& event) { - if (visible_mode_ == MODE_STOP) { - browser_->Stop(); - - // The user has clicked, so we can feel free to update the button, - // even if the mouse is still hovering. - ChangeMode(MODE_GO, true); - } else if (visible_mode_ == MODE_GO && stop_timer_.empty()) { - // If the go button is visible and not within the double click timer, go. - browser_->Go(event_utils::DispositionFromEventFlags(mouse_event_flags())); - - // Stop any existing timers. - stop_timer_.RevokeAll(); - - // Start a timer - while this timer is running, the go button - // cannot be changed to a stop button. We do not set intended_mode_ - // to MODE_STOP here as we want to wait for the browser to tell - // us that it has started loading (and this may occur only after - // some delay). - MessageLoop::current()->PostDelayedTask(FROM_HERE, - stop_timer_.NewRunnableMethod(&GoButton::OnButtonTimer), - GetDoubleClickTimeMS()); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// GoButton, View overrides: - -void GoButton::OnMouseExited(const views::MouseEvent& e) { - ChangeMode(intended_mode_, true); - if (state() != BS_DISABLED) - SetState(BS_NORMAL); -} - -bool GoButton::GetTooltipText(const gfx::Point& p, std::wstring* tooltip) { - if (visible_mode_ == MODE_STOP) { - tooltip->assign(l10n_util::GetString(IDS_TOOLTIP_STOP)); - return true; - } - - std::wstring current_text(location_bar_->location_entry()->GetText()); - if (current_text.empty()) - return false; - - // Need to make sure the text direction is adjusted based on the locale so - // that pure LTR strings are displayed appropriately on RTL locales. For - // example, not adjusting the string will cause the URL - // "http://www.google.com/" to be displayed in the tooltip as - // "/http://www.google.com". - // - // Note that we mark the URL's text as LTR (instead of examining the - // characters and guessing the text directionality) since URLs are always - // treated as left-to-right text, even when they contain RTL characters. - base::i18n::GetDisplayStringInLTRDirectionality(¤t_text); - - AutocompleteEditModel* edit_model = location_bar_->location_entry()->model(); - if (edit_model->CurrentTextIsURL()) { - tooltip->assign(l10n_util::GetStringF(IDS_TOOLTIP_GO_SITE, current_text)); - } else { - std::wstring keyword(edit_model->keyword()); - TemplateURLModel* template_url_model = - location_bar_->profile()->GetTemplateURLModel(); - const TemplateURL* provider = - (keyword.empty() || edit_model->is_keyword_hint()) ? - template_url_model->GetDefaultSearchProvider() : - template_url_model->GetTemplateURLForKeyword(keyword); - if (!provider) - return false; - tooltip->assign(l10n_util::GetStringF(IDS_TOOLTIP_GO_SEARCH, - provider->AdjustedShortNameForLocaleDirection(), current_text)); - } - return true; -} - -//////////////////////////////////////////////////////////////////////////////// -// GoButton, private: - -void GoButton::OnButtonTimer() { - stop_timer_.RevokeAll(); - ChangeMode(intended_mode_, true); -} diff --git a/chrome/browser/views/location_bar/location_bar_view.cc b/chrome/browser/views/location_bar/location_bar_view.cc index 828ce02..59dab7e 100644 --- a/chrome/browser/views/location_bar/location_bar_view.cc +++ b/chrome/browser/views/location_bar/location_bar_view.cc @@ -892,10 +892,6 @@ void LocationBarView::AcceptInput() { location_entry_->model()->AcceptInput(CURRENT_TAB, false); } -void LocationBarView::AcceptInputWithDisposition(WindowOpenDisposition disp) { - location_entry_->model()->AcceptInput(disp, false); -} - void LocationBarView::FocusLocation(bool select_all) { location_entry_->SetFocus(); if (select_all) diff --git a/chrome/browser/views/location_bar/location_bar_view.h b/chrome/browser/views/location_bar/location_bar_view.h index 51fa80e..1e40e63 100644 --- a/chrome/browser/views/location_bar/location_bar_view.h +++ b/chrome/browser/views/location_bar/location_bar_view.h @@ -184,7 +184,6 @@ class LocationBarView : public LocationBar, virtual WindowOpenDisposition GetWindowOpenDisposition() const; virtual PageTransition::Type GetPageTransition() const; virtual void AcceptInput(); - virtual void AcceptInputWithDisposition(WindowOpenDisposition); virtual void FocusLocation(bool select_all); virtual void FocusSearch(); virtual void UpdateContentSettingsIcons(); diff --git a/chrome/browser/views/reload_button.cc b/chrome/browser/views/reload_button.cc new file mode 100644 index 0000000..5ebd9bd --- /dev/null +++ b/chrome/browser/views/reload_button.cc @@ -0,0 +1,112 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/views/reload_button.h" + +#include "app/l10n_util.h" +#include "chrome/app/chrome_dll_resource.h" +#include "chrome/browser/browser.h" +#include "chrome/browser/views/event_utils.h" +#include "chrome/browser/views/location_bar/location_bar_view.h" +#include "grit/generated_resources.h" + +//////////////////////////////////////////////////////////////////////////////// +// ReloadButton, public: + +ReloadButton::ReloadButton(LocationBarView* location_bar, Browser* browser) + : ALLOW_THIS_IN_INITIALIZER_LIST(ToggleImageButton(this)), + location_bar_(location_bar), + browser_(browser), + intended_mode_(MODE_RELOAD), + visible_mode_(MODE_RELOAD) { + DCHECK(location_bar_); +} + +ReloadButton::~ReloadButton() { +} + +void ReloadButton::ChangeMode(Mode mode, bool force) { + intended_mode_ = mode; + + // If the change is forced, or the user isn't hovering the icon, or it's safe + // to change it to the other image type, make the change immediately; + // otherwise we'll let it happen later. + if (force || (state() != BS_HOT) || ((mode == MODE_STOP) ? + !timer_.IsRunning() : (visible_mode_ != MODE_STOP))) { + timer_.Stop(); + SetToggled(mode == MODE_STOP); + visible_mode_ = mode; + } +} + +//////////////////////////////////////////////////////////////////////////////// +// ReloadButton, views::ButtonListener implementation: + +void ReloadButton::ButtonPressed(views::Button* button, + const views::Event& event) { + if (visible_mode_ == MODE_STOP) { + browser_->Stop(); + // The user has clicked, so we can feel free to update the button, + // even if the mouse is still hovering. + ChangeMode(MODE_RELOAD, true); + } else if (!timer_.IsRunning()) { + // Shift-clicking or ctrl-clicking the reload button means we should ignore + // any cached content. + // TODO(avayvod): eliminate duplication of this logic in + // CompactLocationBarView. + int command; + int flags = mouse_event_flags(); + if (event.IsShiftDown() || event.IsControlDown()) { + command = IDC_RELOAD_IGNORING_CACHE; + // Mask off shift/ctrl so they aren't interpreted as affecting the + // disposition below. + flags &= ~(views::Event::EF_SHIFT_DOWN | views::Event::EF_CONTROL_DOWN); + } else { + command = IDC_RELOAD; + } + + WindowOpenDisposition disposition = + event_utils::DispositionFromEventFlags(flags); + if (disposition == CURRENT_TAB) { + // Forcibly reset the location bar, since otherwise it won't discard any + // ongoing user edits, since it doesn't realize this is a user-initiated + // action. + location_bar_->Revert(); + } + + browser_->ExecuteCommandWithDisposition(command, disposition); + + // Stop the timer. + timer_.Stop(); + + // Start a timer - while this timer is running, the reload button cannot be + // changed to a stop button. We do not set |intended_mode_| to MODE_STOP + // here as we want to wait for the browser to tell us that it has started + // loading (and this may occur only after some delay). + timer_.Start(base::TimeDelta::FromMilliseconds(GetDoubleClickTimeMS()), + this, &ReloadButton::OnButtonTimer); + } +} + +//////////////////////////////////////////////////////////////////////////////// +// ReloadButton, View overrides: + +void ReloadButton::OnMouseExited(const views::MouseEvent& e) { + ChangeMode(intended_mode_, true); + if (state() != BS_DISABLED) + SetState(BS_NORMAL); +} + +bool ReloadButton::GetTooltipText(const gfx::Point& p, std::wstring* tooltip) { + tooltip->assign(l10n_util::GetString((visible_mode_ == MODE_RELOAD) ? + IDS_TOOLTIP_RELOAD : IDS_TOOLTIP_STOP)); + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +// ReloadButton, private: + +void ReloadButton::OnButtonTimer() { + ChangeMode(intended_mode_, true); +} diff --git a/chrome/browser/views/go_button.h b/chrome/browser/views/reload_button.h index 8855b5a..20991f9 100644 --- a/chrome/browser/views/go_button.h +++ b/chrome/browser/views/reload_button.h @@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_VIEWS_GO_BUTTON_H__ -#define CHROME_BROWSER_VIEWS_GO_BUTTON_H__ +#ifndef CHROME_BROWSER_VIEWS_RELOAD_BUTTON_H__ +#define CHROME_BROWSER_VIEWS_RELOAD_BUTTON_H__ #include "base/basictypes.h" -#include "base/task.h" +#include "base/timer.h" #include "views/controls/button/image_button.h" class Browser; @@ -14,23 +14,22 @@ class LocationBarView; //////////////////////////////////////////////////////////////////////////////// // -// GoButton +// ReloadButton // -// The go button attached to the toolbar. It shows different tooltips -// according to the content of the location bar and changes to a stop -// button when a page load is in progress. Trickiness comes from the -// desire to have the 'stop' button not change back to 'go' if the user's -// mouse is hovering over it (to prevent mis-clicks). +// The reload button in the toolbar, which changes to a stop button when a page +// load is in progress. Trickiness comes from the desire to have the 'stop' +// button not change back to 'reload' if the user's mouse is hovering over it +// (to prevent mis-clicks). // //////////////////////////////////////////////////////////////////////////////// -class GoButton : public views::ToggleImageButton, - public views::ButtonListener { +class ReloadButton : public views::ToggleImageButton, + public views::ButtonListener { public: - enum Mode { MODE_GO = 0, MODE_STOP }; + enum Mode { MODE_RELOAD = 0, MODE_STOP }; - GoButton(LocationBarView* location_bar, Browser* Browser); - virtual ~GoButton(); + ReloadButton(LocationBarView* location_bar, Browser* Browser); + virtual ~ReloadButton(); // Ask for a specified button state. If |force| is true this will be applied // immediately. @@ -46,7 +45,7 @@ class GoButton : public views::ToggleImageButton, private: void OnButtonTimer(); - ScopedRunnableMethodFactory<GoButton> stop_timer_; + base::OneShotTimer<ReloadButton> timer_; LocationBarView* location_bar_; Browser* browser_; @@ -57,7 +56,7 @@ class GoButton : public views::ToggleImageButton, // The currently-visible mode - this may different from the intended mode Mode visible_mode_; - DISALLOW_COPY_AND_ASSIGN(GoButton); + DISALLOW_IMPLICIT_CONSTRUCTORS(ReloadButton); }; -#endif // CHROME_BROWSER_VIEWS_GO_BUTTON_H__ +#endif // CHROME_BROWSER_VIEWS_RELOAD_BUTTON_H__ diff --git a/chrome/browser/views/toolbar_view.cc b/chrome/browser/views/toolbar_view.cc index ad6fd6a..2db68f8 100644 --- a/chrome/browser/views/toolbar_view.cc +++ b/chrome/browser/views/toolbar_view.cc @@ -74,7 +74,6 @@ ToolbarView::ToolbarView(Browser* browser) home_(NULL), reload_(NULL), location_bar_(NULL), - go_(NULL), browser_actions_(NULL), page_menu_(NULL), app_menu_(NULL), @@ -92,7 +91,6 @@ ToolbarView::ToolbarView(Browser* browser) browser_->command_updater()->AddCommandObserver(IDC_BACK, this); browser_->command_updater()->AddCommandObserver(IDC_FORWARD, this); browser_->command_updater()->AddCommandObserver(IDC_HOME, this); - browser_->command_updater()->AddCommandObserver(IDC_RELOAD, this); display_mode_ = browser->SupportsWindowFeature(Browser::FEATURE_TABSTRIP) ? DISPLAYMODE_NORMAL : DISPLAYMODE_LOCATION; @@ -154,7 +152,13 @@ void ToolbarView::Init(Profile* profile) { home_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_HOME)); home_->SetID(VIEW_ID_HOME_BUTTON); - reload_ = new views::ImageButton(this); + // Have to create this before |reload_| as |reload_|'s constructor needs it. + location_bar_ = new LocationBarView(profile, browser_->command_updater(), + model_, this, (display_mode_ == DISPLAYMODE_LOCATION) ? + LocationBarView::POPUP : LocationBarView::NORMAL); + location_bar_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_LOCATION)); + + reload_ = new ReloadButton(location_bar_, browser_); reload_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | views::Event::EF_MIDDLE_BUTTON_DOWN); reload_->set_tag(IDC_RELOAD); @@ -162,15 +166,6 @@ void ToolbarView::Init(Profile* profile) { reload_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_RELOAD)); reload_->SetID(VIEW_ID_RELOAD_BUTTON); - location_bar_ = new LocationBarView(profile, browser_->command_updater(), - model_, this, (display_mode_ == DISPLAYMODE_LOCATION) ? - LocationBarView::POPUP : LocationBarView::NORMAL); - location_bar_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_LOCATION)); - - go_ = new GoButton(location_bar_, browser_); - go_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_GO)); - go_->SetID(VIEW_ID_GO_BUTTON); - browser_actions_ = new BrowserActionsContainer(browser_, this, true); bool use_wrench_menu = @@ -203,7 +198,6 @@ void ToolbarView::Init(Profile* profile) { AddChildView(home_); AddChildView(reload_); AddChildView(location_bar_); - AddChildView(go_); AddChildView(browser_actions_); AddChildView(app_menu_); @@ -403,9 +397,6 @@ void ToolbarView::EnabledStateChangedForCommand(int id, bool enabled) { case IDC_HOME: button = home_; break; - case IDC_RELOAD: - button = reload_; - break; } if (button) button->SetEnabled(enabled); @@ -417,31 +408,14 @@ void ToolbarView::EnabledStateChangedForCommand(int id, bool enabled) { void ToolbarView::ButtonPressed(views::Button* sender, const views::Event& event) { int command = sender->tag(); - int flags = sender->mouse_event_flags(); - // Shift-clicking or Ctrl-clicking the reload button means we should ignore - // any cached content. - // TODO(avayvod): eliminate duplication of this logic in - // CompactLocationBarView. - if ((command == IDC_RELOAD) && - (event.IsShiftDown() || event.IsControlDown())) { - command = IDC_RELOAD_IGNORING_CACHE; - // Mask off shift/ctrl so they aren't interpreted as affecting the - // disposition below. - flags &= ~(views::Event::EF_SHIFT_DOWN | views::Event::EF_CONTROL_DOWN); - } WindowOpenDisposition disposition = - event_utils::DispositionFromEventFlags(flags); - switch (command) { - case IDC_BACK: - case IDC_FORWARD: - case IDC_RELOAD: - case IDC_RELOAD_IGNORING_CACHE: - if (disposition == CURRENT_TAB) { - // Forcibly reset the location bar, since otherwise it won't discard any - // ongoing user edits, since it doesn't realize this is a user-initiated - // action. - location_bar_->Revert(); - } + event_utils::DispositionFromEventFlags(sender->mouse_event_flags()); + if ((disposition == CURRENT_TAB) && + ((command == IDC_BACK) || (command == IDC_FORWARD))) { + // Forcibly reset the location bar, since otherwise it won't discard any + // ongoing user edits, since it doesn't realize this is a user-initiated + // action. + location_bar_->Revert(); } browser_->ExecuteCommandWithDisposition(command, disposition); } @@ -544,9 +518,8 @@ gfx::Size ToolbarView::GetPreferredSize() { forward_->GetPreferredSize().width() + kControlHorizOffset + (show_home_button_.GetValue() ? (home_->GetPreferredSize().width() + kControlHorizOffset) : 0) + - reload_->GetPreferredSize().width() + + reload_->GetPreferredSize().width() + kControlHorizOffset + browser_actions_->GetPreferredSize().width() + - go_->GetPreferredSize().width() + kMenuButtonOffset + (bookmark_menu_ ? bookmark_menu_->GetPreferredSize().width() : 0) + (page_menu_ ? page_menu_->GetPreferredSize().width() : 0) + @@ -620,24 +593,21 @@ void ToolbarView::Layout() { reload_->SetBounds(home_->x() + home_->width() + kControlHorizOffset, child_y, reload_->GetPreferredSize().width(), child_height); - int go_button_width = go_->GetPreferredSize().width(); int browser_actions_width = browser_actions_->GetPreferredSize().width(); int page_menu_width = page_menu_ ? page_menu_->GetPreferredSize().width() : 0; int app_menu_width = app_menu_->GetPreferredSize().width(); int bookmark_menu_width = bookmark_menu_ ? bookmark_menu_->GetPreferredSize().width() : 0; - int location_x = reload_->x() + reload_->width(); + int location_x = reload_->x() + reload_->width() + kControlHorizOffset; int available_width = width() - kPaddingRight - bookmark_menu_width - app_menu_width - page_menu_width - browser_actions_width - - kMenuButtonOffset - go_button_width - location_x; + kMenuButtonOffset - location_x; location_bar_->SetBounds(location_x, child_y, std::max(available_width, 0), child_height); - - go_->SetBounds(location_bar_->x() + location_bar_->width(), child_y, - go_button_width, child_height); - int next_menu_x = go_->x() + go_->width() + kMenuButtonOffset; + int next_menu_x = + location_bar_->x() + location_bar_->width() + kMenuButtonOffset; browser_actions_->SetBounds(next_menu_x, 0, browser_actions_width, height()); // The browser actions need to do a layout explicitly, because when an @@ -737,20 +707,14 @@ void ToolbarView::LoadImages() { tp->GetBitmapNamed(IDR_RELOAD_H)); reload_->SetImage(views::CustomButton::BS_PUSHED, tp->GetBitmapNamed(IDR_RELOAD_P)); - reload_->SetBackground(color, background, - tp->GetBitmapNamed(IDR_RELOAD_MASK)); - - go_->SetImage(views::CustomButton::BS_NORMAL, tp->GetBitmapNamed(IDR_GO)); - go_->SetImage(views::CustomButton::BS_HOT, tp->GetBitmapNamed(IDR_GO_H)); - go_->SetImage(views::CustomButton::BS_PUSHED, tp->GetBitmapNamed(IDR_GO_P)); - go_->SetToggledImage(views::CustomButton::BS_NORMAL, + reload_->SetToggledImage(views::CustomButton::BS_NORMAL, tp->GetBitmapNamed(IDR_STOP)); - go_->SetToggledImage(views::CustomButton::BS_HOT, + reload_->SetToggledImage(views::CustomButton::BS_HOT, tp->GetBitmapNamed(IDR_STOP_H)); - go_->SetToggledImage(views::CustomButton::BS_PUSHED, + reload_->SetToggledImage(views::CustomButton::BS_PUSHED, tp->GetBitmapNamed(IDR_STOP_P)); - go_->SetBackground(color, background, - tp->GetBitmapNamed(IDR_GO_MASK)); + reload_->SetBackground(color, background, + tp->GetBitmapNamed(IDR_BUTTON_MASK)); // We use different menu button images if the locale is right-to-left. if (page_menu_) { diff --git a/chrome/browser/views/toolbar_view.h b/chrome/browser/views/toolbar_view.h index 60c985c..a99d658 100644 --- a/chrome/browser/views/toolbar_view.h +++ b/chrome/browser/views/toolbar_view.h @@ -16,8 +16,8 @@ #include "chrome/browser/page_menu_model.h" #include "chrome/browser/pref_member.h" #include "chrome/browser/views/accessible_toolbar_view.h" -#include "chrome/browser/views/go_button.h" #include "chrome/browser/views/location_bar/location_bar_view.h" +#include "chrome/browser/views/reload_button.h" #include "views/controls/button/menu_button.h" #include "views/controls/menu/menu.h" #include "views/controls/menu/menu_wrapper.h" @@ -85,7 +85,7 @@ class ToolbarView : public AccessibleToolbarView, // Accessors... Browser* browser() const { return browser_; } BrowserActionsContainer* browser_actions() const { return browser_actions_; } - GoButton* go_button() const { return go_; } + ReloadButton* reload_button() const { return reload_; } LocationBarView* location_bar() const { return location_bar_; } views::MenuButton* page_menu() const { return page_menu_; } views::MenuButton* app_menu() const { return app_menu_; } @@ -194,9 +194,8 @@ class ToolbarView : public AccessibleToolbarView, views::ImageButton* back_; views::ImageButton* forward_; views::ImageButton* home_; - views::ImageButton* reload_; + ReloadButton* reload_; LocationBarView* location_bar_; - GoButton* go_; BrowserActionsContainer* browser_actions_; views::MenuButton* page_menu_; views::MenuButton* app_menu_; diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 3131dcb..f9ad2d2 100755 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1339,8 +1339,6 @@ 'browser/gtk/focus_store_gtk.h', 'browser/gtk/fullscreen_exit_bubble_gtk.cc', 'browser/gtk/fullscreen_exit_bubble_gtk.h', - 'browser/gtk/go_button_gtk.cc', - 'browser/gtk/go_button_gtk.h', 'browser/gtk/gtk_chrome_button.cc', 'browser/gtk/gtk_chrome_button.h', 'browser/gtk/gtk_chrome_link_button.cc', @@ -1439,6 +1437,8 @@ 'browser/gtk/page_info_window_gtk.cc', 'browser/gtk/process_singleton_dialog.cc', 'browser/gtk/process_singleton_dialog.h', + 'browser/gtk/reload_button_gtk.cc', + 'browser/gtk/reload_button_gtk.h', 'browser/gtk/repost_form_warning_gtk.cc', 'browser/gtk/repost_form_warning_gtk.h', 'browser/gtk/rounded_window.cc', @@ -2402,8 +2402,6 @@ 'browser/views/fullscreen_exit_bubble.h', 'browser/views/generic_info_view.cc', 'browser/views/generic_info_view.h', - 'browser/views/go_button.cc', - 'browser/views/go_button.h', 'browser/views/html_dialog_view.cc', 'browser/views/html_dialog_view.h', 'browser/views/hung_renderer_view.cc', @@ -2520,6 +2518,8 @@ 'browser/views/page_info_window_view.cc', 'browser/views/pinned_contents_info_bubble.cc', 'browser/views/pinned_contents_info_bubble.h', + 'browser/views/reload_button.cc', + 'browser/views/reload_button.h', 'browser/views/repost_form_warning_view.cc', 'browser/views/repost_form_warning_view.h', 'browser/views/restart_message_box.cc', @@ -3056,8 +3056,6 @@ ['include', '^browser/views/find_bar_host.h'], ['include', '^browser/views/fullscreen_exit_bubble.cc'], ['include', '^browser/views/fullscreen_exit_bubble.h'], - ['include', '^browser/views/go_button.cc'], - ['include', '^browser/views/go_button.h'], ['include', '^browser/views/html_dialog_view.cc'], ['include', '^browser/views/html_dialog_view.h'], ['include', '^browser/views/theme_install_bubble_view.cc'], @@ -3104,6 +3102,10 @@ ['include', '^browser/views/location_bar/star_view.h'], ['include', '^browser/views/location_bar_view.cc'], ['include', '^browser/views/location_bar_view.h'], + ['include', '^browser/views/modal_dialog_delegate.cc'], + ['include', '^browser/views/modal_dialog_delegate.h'], + ['include', '^browser/views/notifications/balloon_view_host.cc'], + ['include', '^browser/views/notifications/balloon_view_host.h'], ['include', '^browser/views/options/options_page_view.cc'], ['include', '^browser/views/options/options_page_view.h'], ['include', '^browser/views/page_info_window_view.cc'], @@ -3113,21 +3115,15 @@ ['include', '^browser/views/panels/panel_container.h'], ['include', '^browser/views/panels/panel_scroller.cc'], ['include', '^browser/views/panels/panel_scroller.h'], - ['include', '^browser/views/panels/panel_scroller_header.cc'], - ['include', '^browser/views/panels/panel_scroller_header.h'], - ['include', '^browser/views/modal_dialog_delegate.cc'], - ['include', '^browser/views/modal_dialog_delegate.h'], - ['include', '^browser/views/notifications/balloon_view_host.cc'], - ['include', '^browser/views/notifications/balloon_view_host.h'], # Not necessary unless you're trying to build ChromeOS+views. - #['include', '^browser/views/panels/panel_scroller.cc'], - #['include', '^browser/views/panels/panel_scroller.h'], #['include', '^browser/views/panels/panel_scroller_container.cc'], #['include', '^browser/views/panels/panel_scroller_container.h'], - #['include', '^browser/views/panels/panel_scroller_header.cc'], - #['include', '^browser/views/panels/panel_scroller_header.h'], + ['include', '^browser/views/panels/panel_scroller_header.cc'], + ['include', '^browser/views/panels/panel_scroller_header.h'], ['include', '^browser/views/pinned_contents_info_bubble.cc'], ['include', '^browser/views/pinned_contents_info_bubble.h'], + ['include', '^browser/views/reload_button.cc'], + ['include', '^browser/views/reload_button.h'], ['include', '^browser/views/restart_message_box.cc'], ['include', '^browser/views/restart_message_box.h'], ['include', '^browser/views/sad_tab_view.cc'], diff --git a/chrome/chrome_dll.gypi b/chrome/chrome_dll.gypi index faede25..614746f 100644 --- a/chrome/chrome_dll.gypi +++ b/chrome/chrome_dll.gypi @@ -251,7 +251,6 @@ 'app/theme/find_next_Template.pdf', 'app/theme/find_prev_Template.pdf', 'app/theme/forward_Template.pdf', - 'app/theme/go_Template.pdf', 'app/theme/home_Template.pdf', 'app/theme/menu_chrome_rtl_Template.pdf', 'app/theme/menu_chrome_Template.pdf', diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 50c785c..041c8a2 100755 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -797,13 +797,13 @@ 'browser/gtk/bookmark_bar_gtk_unittest.cc', 'browser/gtk/bookmark_editor_gtk_unittest.cc', 'browser/gtk/bookmark_utils_gtk_unittest.cc', - 'browser/gtk/go_button_gtk_unittest.cc', 'browser/gtk/gtk_chrome_shrinkable_hbox_unittest.cc', 'browser/gtk/gtk_expanded_container_unittest.cc', 'browser/gtk/gtk_theme_provider_unittest.cc', 'browser/gtk/keyword_editor_view_unittest.cc', 'browser/gtk/options/cookies_view_unittest.cc', 'browser/gtk/options/languages_page_gtk_unittest.cc', + 'browser/gtk/reload_button_gtk_unittest.cc', 'browser/gtk/status_icons/status_tray_gtk_unittest.cc', 'browser/gtk/tabs/tab_renderer_gtk_unittest.cc', 'browser/history/expire_history_backend_unittest.cc', @@ -1095,12 +1095,12 @@ 'sources/': [ ['exclude', 'browser/gtk/bookmark_bar_gtk_unittest\\.cc$'], ['exclude', 'browser/gtk/bookmark_editor_gtk_unittest\\.cc$'], - ['exclude', 'browser/gtk/go_button_gtk_unittest\\.cc$'], ['exclude', 'browser/gtk/gtk_chrome_shrinkable_hbox_unittest\\.cc$'], ['exclude', 'browser/gtk/gtk_expanded_container_unittest\\.cc$'], ['exclude', 'browser/gtk/gtk_theme_provider_unittest\\.cc$'], ['exclude', 'browser/gtk/options/cookies_view_unittest\\.cc$'], ['exclude', 'browser/gtk/options/languages_page_gtk_unittest\\.cc$'], + ['exclude', 'browser/gtk/reload_button_gtk_unittest\\.cc$'], ['exclude', 'browser/gtk/status_icons/status_tray_gtk_unittest\\.cc$'], ['exclude', 'browser/gtk/tabs/tab_renderer_gtk_unittest\\.cc$'], ['include', 'browser/views/bookmark_context_menu_test.cc$'], @@ -1131,11 +1131,11 @@ 'sources!': [ # Blocked on bookmark manager. 'browser/bookmarks/bookmark_context_menu_controller_unittest.cc', - 'browser/views/accessibility_event_router_views_unittest.cc', + 'browser/gtk/reload_button_gtk_unittest.cc', + 'browser/gtk/tabs/tab_renderer_gtk_unittest.cc', 'browser/password_manager/password_store_default_unittest.cc', + 'browser/views/accessibility_event_router_views_unittest.cc', 'browser/views/bookmark_context_menu_test.cc', - 'browser/gtk/go_button_gtk_unittest.cc', - 'browser/gtk/tabs/tab_renderer_gtk_unittest.cc', 'tools/convert_dict/convert_dict_unittest.cc', '../third_party/hunspell/google/hunspell_tests.cc', ], diff --git a/chrome/test/data/profiles/complex_theme/Default/Extensions/mblmlcbknbnfebdfjnolmcapmdofhmme/1.1/Cached Theme.pak b/chrome/test/data/profiles/complex_theme/Default/Extensions/mblmlcbknbnfebdfjnolmcapmdofhmme/1.1/Cached Theme.pak Binary files differindex 42bd2fd..0de5e42 100644 --- a/chrome/test/data/profiles/complex_theme/Default/Extensions/mblmlcbknbnfebdfjnolmcapmdofhmme/1.1/Cached Theme.pak +++ b/chrome/test/data/profiles/complex_theme/Default/Extensions/mblmlcbknbnfebdfjnolmcapmdofhmme/1.1/Cached Theme.pak diff --git a/chrome/test/test_browser_window.h b/chrome/test/test_browser_window.h index b35e070..adf3277 100644 --- a/chrome/test/test_browser_window.h +++ b/chrome/test/test_browser_window.h @@ -43,7 +43,7 @@ class TestBrowserWindow : public BrowserWindow { return const_cast<TestLocationBar*>(&location_bar_); } virtual void SetFocusToLocationBar(bool select_all) {} - virtual void UpdateStopGoState(bool is_loading, bool force) {} + virtual void UpdateReloadStopState(bool is_loading, bool force) {} virtual void UpdateToolbar(TabContents* contents, bool should_restore_state) {} virtual void FocusToolbar() {} diff --git a/chrome/test/test_location_bar.h b/chrome/test/test_location_bar.h index 6face25..3b329bd 100644 --- a/chrome/test/test_location_bar.h +++ b/chrome/test/test_location_bar.h @@ -35,7 +35,6 @@ class TestLocationBar : public LocationBar { } virtual PageTransition::Type GetPageTransition() const { return transition_; } virtual void AcceptInput() {} - virtual void AcceptInputWithDisposition(WindowOpenDisposition) {} virtual void FocusLocation(bool select_all) {} virtual void FocusSearch() {} virtual void UpdateContentSettingsIcons() {} |