Merge pull request #3402 from igrechuhin/MAPSME-1210

[ios] Added rank info to profile.
This commit is contained in:
Vlad Mihaylenko 2016-06-01 16:51:53 +04:00
commit fa288be437
4 changed files with 423 additions and 563 deletions

View file

@ -7,6 +7,8 @@
#import "Statistics.h"
#import "UIColor+MapsMeColor.h"
#include "Framework.h"
#include "editor/server_api.hpp"
#include "indexer/osm_editor.hpp"
@ -20,11 +22,9 @@ namespace
NSString * const kWebViewAuthSegue = @"Authorization2WebViewAuthorizationSegue";
NSString * const kOSMAuthSegue = @"Authorization2OSMAuthorizationSegue";
CGFloat const kUploadedChangesTopOffset = 48.;
CGFloat const kStatusBarHeight = 20.;
// I don't use block here because there is big chance to get retain cycle and std::function syntax looks prety easy and cute.
using TActionSheetFunctor = std::function<void()>;
NSString * const kCancel = L(@"cancel");
NSString * const kLogout = L(@"logout");
NSString * const kRefresh = L(@"refresh");
} // namespace
using namespace osm;
@ -32,29 +32,20 @@ using namespace osm_auth_ios;
@interface MWMAuthorizationLoginViewController () <UIActionSheetDelegate>
@property (weak, nonatomic) IBOutlet UIView * changesView;
@property (weak, nonatomic) IBOutlet UIView * authView;
@property (weak, nonatomic) IBOutlet UIView * accountView;
@property (weak, nonatomic) IBOutlet UIButton * loginGoogleButton;
@property (weak, nonatomic) IBOutlet UIButton * loginFacebookButton;
@property (weak, nonatomic) IBOutlet UIButton * loginOSMButton;
@property (weak, nonatomic) IBOutlet UIButton * signupButton;
@property (weak, nonatomic) IBOutlet UIButton * logoutButton;
@property (weak, nonatomic) IBOutlet UILabel * changesCountLabel;
@property (weak, nonatomic) IBOutlet UILabel * lastUpdateLabel;
@property (weak, nonatomic) IBOutlet UILabel * rankLabel;
@property (weak, nonatomic) IBOutlet UILabel * changesToNextPlaceLabel;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint * yourPlaceLabelCenterYAlignment;
@property (weak, nonatomic) IBOutlet UIView * localChangesView;
@property (weak, nonatomic) IBOutlet UILabel * localChangesLabel;
@property (weak, nonatomic) IBOutlet UIView * uploadedChangesView;
@property (weak, nonatomic) IBOutlet UILabel * uploadedChangesLabel;
@property (weak, nonatomic) IBOutlet UILabel * lastUploadLabel;
@property (weak, nonatomic) IBOutlet UIView * emptyProfileView;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint * uploadedChangesTop;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint * scrollViewContentHeight;
@property (nonatomic) TActionSheetFunctor actionSheetFunctor;
@end
@implementation MWMAuthorizationLoginViewController
@ -75,27 +66,6 @@ using namespace osm_auth_ios;
[self configNoAuth];
AuthorizationSetNeedCheck(NO);
[self configChanges];
[self configEmptyProfile];
[self setContentHeight];
}
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[self setContentHeight];
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[self setContentHeight];
}
- (void)setContentHeight
{
CGSize const size = [UIScreen mainScreen].bounds.size;
CGFloat const height = MAX(size.width, size.height) - self.navigationController.navigationBar.height - kStatusBarHeight;
self.scrollViewContentHeight.constant = height;
}
- (void)checkConnection
@ -121,61 +91,17 @@ using namespace osm_auth_ios;
NSString * osmUserName = OSMUserName();
self.title = osmUserName.length > 0 ? osmUserName : L(@"osm_account").capitalizedString;
self.authView.hidden = YES;
self.logoutButton.hidden = NO;
self.accountView.hidden = NO;
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"•••" style:UIBarButtonItemStylePlain target:self action:@selector(showActionSheet)];
[self refresh];
}
- (void)configNoAuth
{
self.title = L(@"profile").capitalizedString;
self.logoutButton.hidden = YES;
self.authView.hidden = NO;
}
- (void)configEmptyProfile
{
if (self.authView.hidden && self.changesView.hidden)
self.emptyProfileView.hidden = NO;
}
- (void)configChanges
{
auto const stats = Editor::Instance().GetStats();
if (stats.m_edits.empty())
{
self.changesView.hidden = YES;
}
else
{
self.changesView.hidden = NO;
size_t const totalChanges = stats.m_edits.size();
size_t const uploadedChanges = stats.m_uploadedCount;
size_t const localChanges = totalChanges - uploadedChanges;
BOOL const noLocalChanges = (localChanges == 0);
[self setLocalChangesHidden:noLocalChanges];
if (!noLocalChanges)
self.localChangesLabel.text = [NSString stringWithFormat:@"%@ %@", L(@"editor_profile_unsent_changes"), @(localChanges)];
BOOL const noUploadedChanges = (uploadedChanges == 0) || !AuthorizationHaveCredentials();
self.uploadedChangesView.hidden = noUploadedChanges;
if (noUploadedChanges)
return;
self.uploadedChangesLabel.text = [NSString stringWithFormat:@"%@ %@", L(@"editor_profile_changes"), @(uploadedChanges)];
NSString * lastUploadDate = [NSDateFormatter
localizedStringFromDate:[NSDate dateWithTimeIntervalSince1970:stats.m_lastUploadTimestamp]
dateStyle:NSDateFormatterShortStyle
timeStyle:NSDateFormatterNoStyle];
self.lastUploadLabel.text = [NSString stringWithFormat:@"%@ %@", L(@"last_upload"), lastUploadDate];
}
}
- (void)setLocalChangesHidden:(BOOL)hidden
{
self.uploadedChangesView.hidden = hidden;
self.uploadedChangesTop.constant = hidden ? 0 : kUploadedChangesTopOffset;
self.accountView.hidden = YES;
}
#pragma mark - Actions
@ -224,58 +150,92 @@ using namespace osm_auth_ios;
}];
}
- (IBAction)logout:(UIButton *)sender
- (IBAction)osmTap
{
self.actionSheetFunctor = [self]
{
[Statistics logEvent:kStatEventName(kStatAuthorization, kStatLogout)];
AuthorizationStoreCredentials({});
[self cancel];
};
[self showWarningActionSheetWithActionTitle:L(@"logout") sourceView:sender];
NSURL * url = [NSURL URLWithString:@"https://wiki.openstreetmap.org/wiki/Main_Page"];
UIApplication * app = [UIApplication sharedApplication];
if ([app canOpenURL:url])
[app openURL:url];
}
- (IBAction)cancel
- (void)logout
{
[Statistics logEvent:kStatEventName(kStatAuthorization, kStatLogout)];
GetFramework().DropUserStats(OSMUserName().UTF8String);
AuthorizationStoreCredentials({});
[self.navigationController popViewControllerAnimated:YES];
}
- (IBAction)localChangesAction:(UIButton *)sender
- (void)refresh
{
self.actionSheetFunctor = [self]
[self updateUI];
__weak auto weakSelf = self;
GetFramework().UpdateUserStats(OSMUserName().UTF8String, ^
{
Editor::Instance().ClearAllLocalEdits();
[self configChanges];
[self configEmptyProfile];
};
[self showWarningActionSheetWithActionTitle:L(@"delete") sourceView:sender];
[weakSelf updateUI];
});
}
- (void)updateUI
{
editor::UserStats stats = GetFramework().GetUserStats(OSMUserName().UTF8String);
if (!stats)
return;
int32_t changesCount;
if (stats.GetChangesCount(changesCount))
self.changesCountLabel.text = @(changesCount).stringValue;
int32_t rank;
if (stats.GetRank(rank))
self.rankLabel.text = @(rank).stringValue;
string levelUpFeat;
if (stats.GetLevelUpRequiredFeat(levelUpFeat))
{
self.yourPlaceLabelCenterYAlignment.priority = UILayoutPriorityDefaultLow;
self.changesToNextPlaceLabel.hidden = NO;
self.changesToNextPlaceLabel.text =
[NSString stringWithFormat:@"%@ %@", L(@"editor_profile_changes_for_next_place"),
@(levelUpFeat.c_str())];
}
else
{
self.yourPlaceLabelCenterYAlignment.priority = UILayoutPriorityDefaultHigh;
self.changesToNextPlaceLabel.hidden = YES;
}
NSString * lastUploadDate = [NSDateFormatter
localizedStringFromDate:[NSDate dateWithTimeIntervalSince1970:stats.GetLastUpdate()]
dateStyle:NSDateFormatterShortStyle
timeStyle:NSDateFormatterNoStyle];
self.lastUpdateLabel.text =
[NSString stringWithFormat:@"%@ %@", L(@"last_update"), lastUploadDate];
}
#pragma mark - ActionSheet
- (void)showWarningActionSheetWithActionTitle:(NSString *)title sourceView:(UIView *)view
- (void)showActionSheet
{
NSString * cancel = L(@"cancel");
if (isIOS7)
{
UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:cancel destructiveButtonTitle:title otherButtonTitles:nil];
UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:kCancel destructiveButtonTitle:kLogout otherButtonTitles:kRefresh, nil];
[actionSheet showInView:self.view];
}
else
{
UIAlertController * alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction * cancelAction = [UIAlertAction actionWithTitle:cancel style:UIAlertActionStyleCancel handler:nil];
UIAlertAction * commonAction = [UIAlertAction actionWithTitle:title style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action)
[alertController addAction:[UIAlertAction actionWithTitle:kRefresh style:UIAlertActionStyleDefault handler:^(UIAlertAction * action)
{
[self performActionSheetFunctor];
}];
[alertController addAction:cancelAction];
[alertController addAction:commonAction];
[self refresh];
}]];
[alertController addAction:[UIAlertAction actionWithTitle:kLogout style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action)
{
[self logout];
}]];
[alertController addAction:[UIAlertAction actionWithTitle:kCancel style:UIAlertActionStyleCancel handler:nil]];
if (IPAD)
{
UIPopoverPresentationController * popPresenter = [alertController popoverPresentationController];
popPresenter.sourceView = view;
popPresenter.barButtonItem = self.navigationItem.rightBarButtonItem;
}
[self presentViewController:alertController animated:YES completion:nil];
}
@ -285,17 +245,10 @@ using namespace osm_auth_ios;
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (actionSheet.destructiveButtonIndex != buttonIndex)
return;
[self performActionSheetFunctor];
}
- (void)performActionSheetFunctor
{
if (!self.actionSheetFunctor)
return;
self.actionSheetFunctor();
self.actionSheetFunctor = nullptr;
if (actionSheet.destructiveButtonIndex == buttonIndex)
[self logout];
else if ([[actionSheet buttonTitleAtIndex:buttonIndex] isEqualToString:kRefresh])
[self refresh];
}
#pragma mark - Segue

View file

@ -1249,469 +1249,373 @@
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iKi-eN-brO">
<rect key="frame" x="0.0" y="20" width="600" height="580"/>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="S0n-BM-V4o" userLabel="Auth view">
<rect key="frame" x="20" y="116" width="560" height="249"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YBb-Op-jt9" userLabel="contentView">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<subviews>
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qmM-9t-aS0" userLabel="Empty profile view">
<rect key="frame" x="16" y="40" width="568" height="278"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_profile_empty_light" translatesAutoresizingMaskIntoConstraints="NO" id="e2l-P3-VEv">
<rect key="frame" x="184" y="0.0" width="200" height="200"/>
<constraints>
<constraint firstAttribute="height" constant="200" id="GMT-cg-0fn"/>
<constraint firstAttribute="width" constant="200" id="TVp-f8-pS5"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="mwm_name" value="img_profile_empty"/>
</userDefinedRuntimeAttributes>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="552" translatesAutoresizingMaskIntoConstraints="NO" id="o6T-mk-245">
<rect key="frame" x="8" y="220" width="552" height="21"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="15" id="8ae-3X-Zyn"/>
<constraint firstAttribute="width" constant="552" id="uc1-SE-ctk"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="whitePrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium20"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="editor_no_local_edits_description"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="552" translatesAutoresizingMaskIntoConstraints="NO" id="OrE-1s-ae6">
<rect key="frame" x="8" y="257" width="552" height="21"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="15" id="9bh-ZR-dEg"/>
<constraint firstAttribute="width" constant="552" id="UBa-Yp-6ML"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="whitePrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="editor_no_local_edits_title"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="OrE-1s-ae6" secondAttribute="bottom" id="5Ox-ws-JlO"/>
<constraint firstItem="OrE-1s-ae6" firstAttribute="centerX" secondItem="qmM-9t-aS0" secondAttribute="centerX" id="D3m-YD-MJ7"/>
<constraint firstItem="e2l-P3-VEv" firstAttribute="top" secondItem="qmM-9t-aS0" secondAttribute="top" id="IlA-5v-0kP"/>
<constraint firstItem="o6T-mk-245" firstAttribute="centerX" secondItem="qmM-9t-aS0" secondAttribute="centerX" id="ItS-zK-knS"/>
<constraint firstItem="e2l-P3-VEv" firstAttribute="centerX" secondItem="qmM-9t-aS0" secondAttribute="centerX" id="QYh-cG-Srm"/>
<constraint firstItem="o6T-mk-245" firstAttribute="top" secondItem="e2l-P3-VEv" secondAttribute="bottom" constant="20" id="Z6Q-mu-0iM"/>
<constraint firstItem="OrE-1s-ae6" firstAttribute="top" secondItem="o6T-mk-245" secondAttribute="bottom" constant="16" id="tcK-Am-O99"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NhV-I9-K6M" userLabel="Changes view">
<rect key="frame" x="20" y="16" width="568" height="112"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="76x-zf-kIz" userLabel="Local Changes View">
<rect key="frame" x="0.0" y="0.0" width="568" height="44"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_device" translatesAutoresizingMaskIntoConstraints="NO" id="UJu-4R-Fgg">
<rect key="frame" x="16" y="8" width="28" height="28"/>
<constraints>
<constraint firstAttribute="height" constant="28" id="cQM-vC-1fk"/>
<constraint firstAttribute="width" constant="28" id="rHn-pg-8lc"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="coloring" value="MWMBlue"/>
</userDefinedRuntimeAttributes>
</imageView>
<button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="IHU-D3-OHh" customClass="MWMButton">
<rect key="frame" x="520" y="0.0" width="48" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="kpz-KB-mBX"/>
<constraint firstAttribute="width" constant="48" id="o9U-Vc-W4w"/>
</constraints>
<state key="normal" image="ic_more"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="coloringName" value="MWMGray"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="localChangesAction:" destination="iZ6-Zi-bkZ" eventType="touchUpInside" id="4Gi-vX-ESJ"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Changes: 4" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="444" translatesAutoresizingMaskIntoConstraints="NO" id="6t0-ph-htV">
<rect key="frame" x="60" y="12" width="444" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="hSb-1t-KUe"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="editor_profile_unsent_changes"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="IHU-D3-OHh" firstAttribute="leading" secondItem="6t0-ph-htV" secondAttribute="trailing" constant="16" id="Bkl-rs-qm5"/>
<constraint firstAttribute="height" constant="44" id="IC7-k9-WqX"/>
<constraint firstItem="UJu-4R-Fgg" firstAttribute="leading" secondItem="76x-zf-kIz" secondAttribute="leading" constant="16" id="INw-m3-k4p"/>
<constraint firstItem="6t0-ph-htV" firstAttribute="centerY" secondItem="76x-zf-kIz" secondAttribute="centerY" id="NC6-eR-D2q"/>
<constraint firstItem="6t0-ph-htV" firstAttribute="leading" secondItem="UJu-4R-Fgg" secondAttribute="trailing" constant="16" id="SIR-fC-wDg"/>
<constraint firstItem="UJu-4R-Fgg" firstAttribute="top" secondItem="76x-zf-kIz" secondAttribute="top" constant="8" id="Zf8-Th-bSi"/>
<constraint firstAttribute="trailing" secondItem="IHU-D3-OHh" secondAttribute="trailing" id="iMQ-D5-wNi"/>
<constraint firstItem="IHU-D3-OHh" firstAttribute="top" secondItem="76x-zf-kIz" secondAttribute="top" id="sJe-A3-6ua"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="white"/>
</userDefinedRuntimeAttributes>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CCh-RG-hju">
<rect key="frame" x="0.0" y="48" width="568" height="64"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_upload" translatesAutoresizingMaskIntoConstraints="NO" id="K0H-Ik-G96">
<rect key="frame" x="16" y="18" width="28" height="28"/>
<constraints>
<constraint firstAttribute="height" constant="28" id="2zO-ZT-uNm"/>
<constraint firstAttribute="width" constant="28" id="Hco-pY-yYW"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="coloring" value="MWMBlue"/>
</userDefinedRuntimeAttributes>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Changes: 2036" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="492" translatesAutoresizingMaskIntoConstraints="NO" id="AOM-R5-eiO">
<rect key="frame" x="60" y="14" width="492" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="biE-B8-9Rd"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Last upload 12.01.2015" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="444" translatesAutoresizingMaskIntoConstraints="NO" id="byf-d2-8rS">
<rect key="frame" x="60" y="36" width="492" height="17"/>
<constraints>
<constraint firstAttribute="height" constant="17" id="gDD-jR-Z7A"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium14"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="AOM-R5-eiO" secondAttribute="trailing" constant="16" id="34h-f1-7SC"/>
<constraint firstAttribute="trailing" secondItem="byf-d2-8rS" secondAttribute="trailing" constant="16" id="3fO-FU-fH7"/>
<constraint firstItem="AOM-R5-eiO" firstAttribute="top" secondItem="CCh-RG-hju" secondAttribute="top" constant="14" id="854-Mf-1sN"/>
<constraint firstAttribute="height" constant="64" id="8e7-AF-bMG"/>
<constraint firstItem="K0H-Ik-G96" firstAttribute="leading" secondItem="CCh-RG-hju" secondAttribute="leading" constant="16" id="V90-Sy-Hjx"/>
<constraint firstItem="byf-d2-8rS" firstAttribute="leading" secondItem="K0H-Ik-G96" secondAttribute="trailing" constant="16" id="XFm-fM-dg3"/>
<constraint firstItem="K0H-Ik-G96" firstAttribute="top" secondItem="CCh-RG-hju" secondAttribute="top" constant="18" id="mWM-wY-cPT"/>
<constraint firstItem="AOM-R5-eiO" firstAttribute="leading" secondItem="K0H-Ik-G96" secondAttribute="trailing" constant="16" id="pUD-3y-kR9"/>
<constraint firstAttribute="bottom" secondItem="byf-d2-8rS" secondAttribute="bottom" constant="11" id="pdu-0r-bVJ"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="white"/>
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="CCh-RG-hju" firstAttribute="top" secondItem="NhV-I9-K6M" secondAttribute="top" constant="48" id="0Km-sC-aJd"/>
<constraint firstItem="CCh-RG-hju" firstAttribute="leading" secondItem="NhV-I9-K6M" secondAttribute="leading" id="1CM-f1-eEs"/>
<constraint firstItem="76x-zf-kIz" firstAttribute="top" secondItem="NhV-I9-K6M" secondAttribute="top" id="5Iw-Dl-pJ4"/>
<constraint firstAttribute="trailing" secondItem="CCh-RG-hju" secondAttribute="trailing" id="QD9-MU-7Aq"/>
<constraint firstItem="76x-zf-kIz" firstAttribute="leading" secondItem="NhV-I9-K6M" secondAttribute="leading" id="T2X-01-RYT"/>
<constraint firstAttribute="trailing" secondItem="76x-zf-kIz" secondAttribute="trailing" id="ZVw-lC-TR2"/>
<constraint firstAttribute="height" constant="112" id="ela-0h-AoD"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="S0n-BM-V4o" userLabel="Auth view">
<rect key="frame" x="16" y="96" width="568" height="249"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="568" translatesAutoresizingMaskIntoConstraints="NO" id="tzz-yF-441">
<rect key="frame" x="0.0" y="0.0" width="568" height="40"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="sq5-AS-HML"/>
</constraints>
<string key="text">Войдите, чтобы ваши изменения увидели
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tzz-yF-441">
<rect key="frame" x="0.0" y="0.0" width="560" height="40"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="sq5-AS-HML"/>
</constraints>
<string key="text">Войдите, чтобы ваши изменения увидели
другие пользователи</string>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium17"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="whitePrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="login_to_make_edits_visible"/>
</userDefinedRuntimeAttributes>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MzH-tk-9iS" userLabel="Google btn">
<rect key="frame" x="0.0" y="56" width="278" height="44"/>
<subviews>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cT8-b7-zTj">
<rect key="frame" x="0.0" y="0.0" width="278" height="44"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<state key="normal" title="Google">
<color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
<integer key="value" value="1"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="loginGoogle" destination="iZ6-Zi-bkZ" eventType="touchUpInside" id="ozK-l5-X1m"/>
</connections>
</button>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_google" translatesAutoresizingMaskIntoConstraints="NO" id="VTY-T1-l6q">
<rect key="frame" x="12" y="8" width="28" height="28"/>
<constraints>
<constraint firstAttribute="width" constant="28" id="7sp-hE-lQy"/>
<constraint firstAttribute="height" constant="28" id="lYn-b1-63D"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="VTY-T1-l6q" firstAttribute="top" secondItem="MzH-tk-9iS" secondAttribute="top" constant="8" id="PSG-RC-UTK"/>
<constraint firstAttribute="height" constant="44" id="X9t-ER-03M"/>
<constraint firstItem="cT8-b7-zTj" firstAttribute="top" secondItem="MzH-tk-9iS" secondAttribute="top" id="cow-i1-Rdm"/>
<constraint firstAttribute="bottom" secondItem="cT8-b7-zTj" secondAttribute="bottom" id="jbE-Mq-MJR"/>
<constraint firstItem="cT8-b7-zTj" firstAttribute="leading" secondItem="MzH-tk-9iS" secondAttribute="leading" id="nNL-Cq-Up9"/>
<constraint firstAttribute="trailing" secondItem="cT8-b7-zTj" secondAttribute="trailing" id="rdf-T1-cRg"/>
<constraint firstItem="VTY-T1-l6q" firstAttribute="leading" secondItem="MzH-tk-9iS" secondAttribute="leading" constant="12" id="vUP-Ej-L30"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="y6o-0o-dz7" userLabel="FB btn">
<rect key="frame" x="290" y="56" width="278" height="44"/>
<subviews>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="U4B-pb-aFf">
<rect key="frame" x="0.0" y="0.0" width="278" height="44"/>
<color key="backgroundColor" red="0.026881167763157895" green="0.0" blue="0.93857935855263153" alpha="1" colorSpace="calibratedRGB"/>
<state key="normal" title="Facebook"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
<integer key="value" value="1"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="loginFacebook" destination="iZ6-Zi-bkZ" eventType="touchUpInside" id="osd-dp-2jK"/>
</connections>
</button>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_facebook" translatesAutoresizingMaskIntoConstraints="NO" id="bGN-fy-oFg">
<rect key="frame" x="12" y="8" width="28" height="28"/>
<constraints>
<constraint firstAttribute="width" constant="28" id="kNG-X2-lZ8"/>
<constraint firstAttribute="height" constant="28" id="vzD-Ed-9X7"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="bGN-fy-oFg" firstAttribute="top" secondItem="y6o-0o-dz7" secondAttribute="top" constant="8" id="LOd-HZ-bTJ"/>
<constraint firstAttribute="trailing" secondItem="U4B-pb-aFf" secondAttribute="trailing" id="aWL-hw-cpk"/>
<constraint firstItem="bGN-fy-oFg" firstAttribute="leading" secondItem="y6o-0o-dz7" secondAttribute="leading" constant="12" id="cpf-Rx-9Er"/>
<constraint firstAttribute="bottom" secondItem="U4B-pb-aFf" secondAttribute="bottom" id="gTc-cd-mkR"/>
<constraint firstItem="U4B-pb-aFf" firstAttribute="top" secondItem="y6o-0o-dz7" secondAttribute="top" id="lF0-Iz-WoN"/>
<constraint firstItem="U4B-pb-aFf" firstAttribute="leading" secondItem="y6o-0o-dz7" secondAttribute="leading" id="pUz-vb-zDW"/>
<constraint firstAttribute="height" constant="44" id="zwq-5V-dGB"/>
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Gqm-JS-hos">
<rect key="frame" x="0.0" y="112" width="568" height="44"/>
<color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="BfT-9z-7iV"/>
</constraints>
<state key="normal" title="OpenStreetMap"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
<integer key="value" value="1"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="loginOSM" destination="iZ6-Zi-bkZ" eventType="touchUpInside" id="U8A-dL-xzX"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Don't have OpenStreetMap account?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="568" translatesAutoresizingMaskIntoConstraints="NO" id="nhm-W1-U8A">
<rect key="frame" x="0.0" y="180" width="568" height="17"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="16" id="ntS-Lm-ZFB"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="whitePrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="no_osm_account"/>
</userDefinedRuntimeAttributes>
</label>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="s0p-dL-PG8">
<rect key="frame" x="0.0" y="205" width="568" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="4EG-ux-LH6"/>
</constraints>
<state key="normal" title="Sign Up Now"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="whitePrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="whitePrimaryTextHighlighted"/>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="clearColor"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="register_at_openstreetmap"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="signup" destination="iZ6-Zi-bkZ" eventType="touchUpInside" id="jMD-gB-R6e"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="y6o-0o-dz7" firstAttribute="width" secondItem="MzH-tk-9iS" secondAttribute="width" id="0rS-To-gGZ"/>
<constraint firstAttribute="trailing" secondItem="nhm-W1-U8A" secondAttribute="trailing" id="1tj-If-gNH"/>
<constraint firstItem="s0p-dL-PG8" firstAttribute="leading" secondItem="S0n-BM-V4o" secondAttribute="leading" id="6ve-gW-sY4"/>
<constraint firstItem="nhm-W1-U8A" firstAttribute="leading" secondItem="S0n-BM-V4o" secondAttribute="leading" id="7Ei-dL-0sY"/>
<constraint firstItem="Gqm-JS-hos" firstAttribute="top" secondItem="y6o-0o-dz7" secondAttribute="bottom" constant="12" id="Aq8-ex-HQZ"/>
<constraint firstItem="tzz-yF-441" firstAttribute="leading" secondItem="S0n-BM-V4o" secondAttribute="leading" id="BXe-q8-WSf"/>
<constraint firstAttribute="trailing" secondItem="Gqm-JS-hos" secondAttribute="trailing" id="Bmb-Hs-40s"/>
<constraint firstAttribute="trailing" secondItem="y6o-0o-dz7" secondAttribute="trailing" id="IdJ-zH-f1O"/>
<constraint firstItem="nhm-W1-U8A" firstAttribute="top" secondItem="Gqm-JS-hos" secondAttribute="bottom" constant="24" id="LEz-aI-70A"/>
<constraint firstItem="tzz-yF-441" firstAttribute="top" secondItem="S0n-BM-V4o" secondAttribute="top" id="Tfx-ro-4f5"/>
<constraint firstItem="y6o-0o-dz7" firstAttribute="leading" secondItem="MzH-tk-9iS" secondAttribute="trailing" constant="12" id="bwf-Ko-us1"/>
<constraint firstItem="MzH-tk-9iS" firstAttribute="leading" secondItem="S0n-BM-V4o" secondAttribute="leading" id="c0m-nd-K22"/>
<constraint firstItem="y6o-0o-dz7" firstAttribute="top" secondItem="tzz-yF-441" secondAttribute="bottom" constant="16" id="cwS-6P-cG8"/>
<constraint firstItem="s0p-dL-PG8" firstAttribute="top" secondItem="nhm-W1-U8A" secondAttribute="bottom" constant="8" id="f1G-qk-ZxV"/>
<constraint firstAttribute="trailing" secondItem="tzz-yF-441" secondAttribute="trailing" id="itw-Vw-hX3"/>
<constraint firstAttribute="bottom" secondItem="s0p-dL-PG8" secondAttribute="bottom" id="ixM-kI-0RH"/>
<constraint firstItem="Gqm-JS-hos" firstAttribute="leading" secondItem="S0n-BM-V4o" secondAttribute="leading" id="oZr-Ac-QKa"/>
<constraint firstItem="MzH-tk-9iS" firstAttribute="top" secondItem="tzz-yF-441" secondAttribute="bottom" constant="16" id="tEx-sE-uOu"/>
<constraint firstAttribute="trailing" secondItem="s0p-dL-PG8" secondAttribute="trailing" id="tZN-SO-5WH"/>
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Swf-Rn-H3g">
<rect key="frame" x="20" y="544" width="568" height="44"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="44" id="nuD-Ig-YjK"/>
<constraint firstAttribute="height" constant="44" id="wgR-y8-L89"/>
</constraints>
<state key="normal" title="Log Out"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium17"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="whitePrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="login_to_make_edits_visible"/>
</userDefinedRuntimeAttributes>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MzH-tk-9iS" userLabel="Google btn">
<rect key="frame" x="0.0" y="56" width="274" height="44"/>
<subviews>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cT8-b7-zTj">
<rect key="frame" x="0.0" y="0.0" width="274" height="44"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<inset key="titleEdgeInsets" minX="20" minY="0.0" maxX="0.0" maxY="0.0"/>
<state key="normal" title="Google">
<color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="whitePrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="whitePrimaryTextHighlighted"/>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="clearColor"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="logout"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
<integer key="value" value="1"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="layer.borderColorName" value="whitePrimaryText"/>
<userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="logout:" destination="iZ6-Zi-bkZ" eventType="touchUpInside" id="FcC-iH-0c0"/>
<action selector="loginGoogle" destination="iZ6-Zi-bkZ" eventType="touchUpInside" id="ozK-l5-X1m"/>
</connections>
</button>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_google" translatesAutoresizingMaskIntoConstraints="NO" id="VTY-T1-l6q">
<rect key="frame" x="12" y="8" width="28" height="28"/>
<constraints>
<constraint firstAttribute="width" constant="28" id="7sp-hE-lQy"/>
<constraint firstAttribute="height" constant="28" id="lYn-b1-63D"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="qmM-9t-aS0" secondAttribute="trailing" constant="16" id="1Od-p5-8e0"/>
<constraint firstItem="S0n-BM-V4o" firstAttribute="top" secondItem="YBb-Op-jt9" secondAttribute="top" constant="96" id="2cN-Zu-cbN"/>
<constraint firstAttribute="trailing" secondItem="Swf-Rn-H3g" secondAttribute="trailing" constant="12" id="BeZ-Um-N2J"/>
<constraint firstAttribute="bottom" secondItem="Swf-Rn-H3g" secondAttribute="bottom" constant="12" id="Kp2-li-yC7"/>
<constraint firstItem="NhV-I9-K6M" firstAttribute="leading" secondItem="YBb-Op-jt9" secondAttribute="leading" constant="20" id="P0J-zr-wVr"/>
<constraint firstItem="qmM-9t-aS0" firstAttribute="leading" secondItem="YBb-Op-jt9" secondAttribute="leading" constant="16" id="Q0X-Im-EBz"/>
<constraint firstAttribute="trailing" secondItem="S0n-BM-V4o" secondAttribute="trailing" constant="16" id="T9b-2e-Krf"/>
<constraint firstItem="Swf-Rn-H3g" firstAttribute="leading" secondItem="YBb-Op-jt9" secondAttribute="leading" constant="20" id="aH5-Iq-fIZ"/>
<constraint firstAttribute="bottom" secondItem="Swf-Rn-H3g" secondAttribute="bottom" constant="12" id="izw-7u-WX0"/>
<constraint firstItem="qmM-9t-aS0" firstAttribute="top" secondItem="YBb-Op-jt9" secondAttribute="top" constant="40" id="lxR-oy-eBb"/>
<constraint firstItem="Swf-Rn-H3g" firstAttribute="leading" secondItem="YBb-Op-jt9" secondAttribute="leading" constant="20" id="oHC-PU-oOR"/>
<constraint firstItem="NhV-I9-K6M" firstAttribute="top" secondItem="YBb-Op-jt9" secondAttribute="top" constant="16" id="sqM-bX-m2V"/>
<constraint firstItem="qmM-9t-aS0" firstAttribute="centerX" secondItem="YBb-Op-jt9" secondAttribute="centerX" id="uXt-Kv-pFd"/>
<constraint firstAttribute="height" constant="600" id="w1I-mi-hQq"/>
<constraint firstItem="S0n-BM-V4o" firstAttribute="leading" secondItem="YBb-Op-jt9" secondAttribute="leading" constant="16" id="xnz-4R-L7R"/>
<constraint firstAttribute="trailing" secondItem="NhV-I9-K6M" secondAttribute="trailing" constant="12" id="yLL-6w-S3m"/>
<constraint firstAttribute="trailing" secondItem="Swf-Rn-H3g" secondAttribute="trailing" constant="12" id="zIO-ik-drJ"/>
<constraint firstItem="S0n-BM-V4o" firstAttribute="centerX" secondItem="YBb-Op-jt9" secondAttribute="centerX" id="zfK-Xc-Ffj"/>
<constraint firstItem="VTY-T1-l6q" firstAttribute="top" secondItem="MzH-tk-9iS" secondAttribute="top" constant="8" id="PSG-RC-UTK"/>
<constraint firstAttribute="height" constant="44" id="X9t-ER-03M"/>
<constraint firstItem="cT8-b7-zTj" firstAttribute="top" secondItem="MzH-tk-9iS" secondAttribute="top" id="cow-i1-Rdm"/>
<constraint firstAttribute="bottom" secondItem="cT8-b7-zTj" secondAttribute="bottom" id="jbE-Mq-MJR"/>
<constraint firstItem="cT8-b7-zTj" firstAttribute="leading" secondItem="MzH-tk-9iS" secondAttribute="leading" id="nNL-Cq-Up9"/>
<constraint firstAttribute="trailing" secondItem="cT8-b7-zTj" secondAttribute="trailing" id="rdf-T1-cRg"/>
<constraint firstItem="VTY-T1-l6q" firstAttribute="leading" secondItem="MzH-tk-9iS" secondAttribute="leading" constant="12" id="vUP-Ej-L30"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="y6o-0o-dz7" userLabel="FB btn">
<rect key="frame" x="286" y="56" width="274" height="44"/>
<subviews>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="U4B-pb-aFf">
<rect key="frame" x="0.0" y="0.0" width="274" height="44"/>
<color key="backgroundColor" red="0.026881167763157895" green="0.0" blue="0.93857935855263153" alpha="1" colorSpace="calibratedRGB"/>
<inset key="titleEdgeInsets" minX="20" minY="0.0" maxX="0.0" maxY="0.0"/>
<state key="normal" title="Facebook"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
<integer key="value" value="1"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="loginFacebook" destination="iZ6-Zi-bkZ" eventType="touchUpInside" id="osd-dp-2jK"/>
</connections>
</button>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_facebook" translatesAutoresizingMaskIntoConstraints="NO" id="bGN-fy-oFg">
<rect key="frame" x="12" y="8" width="28" height="28"/>
<constraints>
<constraint firstAttribute="width" constant="28" id="kNG-X2-lZ8"/>
<constraint firstAttribute="height" constant="28" id="vzD-Ed-9X7"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="bGN-fy-oFg" firstAttribute="top" secondItem="y6o-0o-dz7" secondAttribute="top" constant="8" id="LOd-HZ-bTJ"/>
<constraint firstAttribute="trailing" secondItem="U4B-pb-aFf" secondAttribute="trailing" id="aWL-hw-cpk"/>
<constraint firstItem="bGN-fy-oFg" firstAttribute="leading" secondItem="y6o-0o-dz7" secondAttribute="leading" constant="12" id="cpf-Rx-9Er"/>
<constraint firstAttribute="bottom" secondItem="U4B-pb-aFf" secondAttribute="bottom" id="gTc-cd-mkR"/>
<constraint firstItem="U4B-pb-aFf" firstAttribute="top" secondItem="y6o-0o-dz7" secondAttribute="top" id="lF0-Iz-WoN"/>
<constraint firstItem="U4B-pb-aFf" firstAttribute="leading" secondItem="y6o-0o-dz7" secondAttribute="leading" id="pUz-vb-zDW"/>
<constraint firstAttribute="height" constant="44" id="zwq-5V-dGB"/>
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Gqm-JS-hos">
<rect key="frame" x="0.0" y="112" width="560" height="44"/>
<color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="BfT-9z-7iV"/>
</constraints>
<state key="normal" title="OpenStreetMap"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
<integer key="value" value="1"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="loginOSM" destination="iZ6-Zi-bkZ" eventType="touchUpInside" id="U8A-dL-xzX"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Don't have OpenStreetMap account?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nhm-W1-U8A">
<rect key="frame" x="0.0" y="180" width="560" height="17"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="16" id="ntS-Lm-ZFB"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="whitePrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="no_osm_account"/>
</userDefinedRuntimeAttributes>
</label>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="s0p-dL-PG8">
<rect key="frame" x="0.0" y="205" width="560" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="4EG-ux-LH6"/>
</constraints>
<state key="normal" title="Sign Up Now"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="whitePrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="whitePrimaryTextHighlighted"/>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="clearColor"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="register_at_openstreetmap"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="signup" destination="iZ6-Zi-bkZ" eventType="touchUpInside" id="jMD-gB-R6e"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="YBb-Op-jt9" secondAttribute="bottom" id="04w-On-GOf"/>
<constraint firstItem="YBb-Op-jt9" firstAttribute="centerX" secondItem="iKi-eN-brO" secondAttribute="centerX" id="OVE-Ea-UP9"/>
<constraint firstItem="YBb-Op-jt9" firstAttribute="top" secondItem="iKi-eN-brO" secondAttribute="top" id="csD-U1-nGy"/>
<constraint firstItem="YBb-Op-jt9" firstAttribute="leading" secondItem="iKi-eN-brO" secondAttribute="leading" id="kEa-pY-gWe"/>
<constraint firstAttribute="trailing" secondItem="YBb-Op-jt9" secondAttribute="trailing" id="uHC-b4-YFN"/>
<constraint firstItem="y6o-0o-dz7" firstAttribute="width" secondItem="MzH-tk-9iS" secondAttribute="width" id="0rS-To-gGZ"/>
<constraint firstAttribute="trailing" secondItem="nhm-W1-U8A" secondAttribute="trailing" id="1tj-If-gNH"/>
<constraint firstItem="s0p-dL-PG8" firstAttribute="leading" secondItem="S0n-BM-V4o" secondAttribute="leading" id="6ve-gW-sY4"/>
<constraint firstItem="nhm-W1-U8A" firstAttribute="leading" secondItem="S0n-BM-V4o" secondAttribute="leading" id="7Ei-dL-0sY"/>
<constraint firstItem="Gqm-JS-hos" firstAttribute="top" secondItem="y6o-0o-dz7" secondAttribute="bottom" constant="12" id="Aq8-ex-HQZ"/>
<constraint firstItem="tzz-yF-441" firstAttribute="leading" secondItem="S0n-BM-V4o" secondAttribute="leading" id="BXe-q8-WSf"/>
<constraint firstAttribute="trailing" secondItem="Gqm-JS-hos" secondAttribute="trailing" id="Bmb-Hs-40s"/>
<constraint firstAttribute="trailing" secondItem="y6o-0o-dz7" secondAttribute="trailing" id="IdJ-zH-f1O"/>
<constraint firstItem="nhm-W1-U8A" firstAttribute="top" secondItem="Gqm-JS-hos" secondAttribute="bottom" constant="24" id="LEz-aI-70A"/>
<constraint firstItem="tzz-yF-441" firstAttribute="top" secondItem="S0n-BM-V4o" secondAttribute="top" id="Tfx-ro-4f5"/>
<constraint firstItem="y6o-0o-dz7" firstAttribute="leading" secondItem="MzH-tk-9iS" secondAttribute="trailing" constant="12" id="bwf-Ko-us1"/>
<constraint firstItem="MzH-tk-9iS" firstAttribute="leading" secondItem="S0n-BM-V4o" secondAttribute="leading" id="c0m-nd-K22"/>
<constraint firstItem="y6o-0o-dz7" firstAttribute="top" secondItem="tzz-yF-441" secondAttribute="bottom" constant="16" id="cwS-6P-cG8"/>
<constraint firstItem="s0p-dL-PG8" firstAttribute="top" secondItem="nhm-W1-U8A" secondAttribute="bottom" constant="8" id="f1G-qk-ZxV"/>
<constraint firstAttribute="trailing" secondItem="tzz-yF-441" secondAttribute="trailing" id="itw-Vw-hX3"/>
<constraint firstAttribute="bottom" secondItem="s0p-dL-PG8" secondAttribute="bottom" id="ixM-kI-0RH"/>
<constraint firstItem="Gqm-JS-hos" firstAttribute="leading" secondItem="S0n-BM-V4o" secondAttribute="leading" id="oZr-Ac-QKa"/>
<constraint firstItem="MzH-tk-9iS" firstAttribute="top" secondItem="tzz-yF-441" secondAttribute="bottom" constant="16" id="tEx-sE-uOu"/>
<constraint firstAttribute="trailing" secondItem="s0p-dL-PG8" secondAttribute="trailing" id="tZN-SO-5WH"/>
</constraints>
</scrollView>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qZp-mj-lui" userLabel="Account view">
<rect key="frame" x="0.0" y="20" width="600" height="580"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="WGF-rs-oH8" userLabel="Main view">
<rect key="frame" x="0.0" y="0.0" width="600" height="212"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5mN-XO-0Df">
<rect key="frame" x="16" y="32" width="568" height="114"/>
<constraints>
<constraint firstAttribute="height" constant="114" id="LK9-Pd-uVa">
<variation key="heightClass=compact" constant="67"/>
</constraint>
</constraints>
<fontDescription key="fontDescription" type="boldSystem" pointSize="96"/>
<color key="textColor" red="0.96078431369999995" green="0.96078431369999995" blue="0.96078431369999995" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="whitePrimaryText"/>
</userDefinedRuntimeAttributes>
<variation key="heightClass=compact-widthClass=compact">
<fontDescription key="fontDescription" type="boldSystem" pointSize="56"/>
</variation>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="VERIFIED CHANGES" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="61G-Rv-3df">
<rect key="frame" x="20" y="146" width="560" height="17"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
<color key="textColor" red="0.96078431369999995" green="0.96078431369999995" blue="0.96078431369999995" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="bold14"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="whitePrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="#VERIFIED CHANGES#"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Last send 12.01.2015" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2UV-ZB-sPO">
<rect key="frame" x="0.0" y="171" width="600" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="1" green="1" blue="1" alpha="0.40000000000000002" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular12"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="whiteSecondaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="last_upload"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" red="0.1176470588" green="0.58823529409999997" blue="0.31372549020000001" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="5mN-XO-0Df" firstAttribute="top" secondItem="WGF-rs-oH8" secondAttribute="top" constant="32" id="0K3-rp-7d2">
<variation key="heightClass=compact" constant="0.0"/>
</constraint>
<constraint firstItem="2UV-ZB-sPO" firstAttribute="leading" secondItem="WGF-rs-oH8" secondAttribute="leading" id="AGA-f3-rF6"/>
<constraint firstItem="61G-Rv-3df" firstAttribute="top" secondItem="5mN-XO-0Df" secondAttribute="bottom" id="f9h-1H-6HT"/>
<constraint firstItem="5mN-XO-0Df" firstAttribute="leading" secondItem="WGF-rs-oH8" secondAttribute="leading" constant="16" id="gxd-OE-22s"/>
<constraint firstItem="61G-Rv-3df" firstAttribute="leading" secondItem="WGF-rs-oH8" secondAttribute="leading" constant="20" id="mv3-Lh-cOw"/>
<constraint firstItem="2UV-ZB-sPO" firstAttribute="top" secondItem="61G-Rv-3df" secondAttribute="bottom" constant="8" id="u1s-ZY-7CV"/>
<constraint firstAttribute="trailing" secondItem="61G-Rv-3df" secondAttribute="trailing" constant="20" id="yO9-AG-xmw"/>
<constraint firstAttribute="trailing" secondItem="2UV-ZB-sPO" secondAttribute="trailing" id="ybr-ki-kQ3"/>
<constraint firstAttribute="trailing" secondItem="5mN-XO-0Df" secondAttribute="trailing" constant="16" id="yt1-Bf-pdB"/>
<constraint firstAttribute="height" constant="212" id="zGh-R9-Qqk">
<variation key="heightClass=compact" constant="128"/>
</constraint>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="primary"/>
</userDefinedRuntimeAttributes>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7f3-Rm-QqW" userLabel="Detailed info">
<rect key="frame" x="0.0" y="248" width="600" height="64"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JuL-pe-mJl">
<rect key="frame" x="16" y="16" width="52" height="32"/>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="27"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium28"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Your Place" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ksi-Oz-YxU">
<rect key="frame" x="84" y="12" width="83" height="21"/>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.87" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium17"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="#Your Place#"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Changes to the next place: " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wuZ-au-bo9">
<rect key="frame" x="84" y="35" width="204" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="#Changes to the next place:#"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="ksi-Oz-YxU" firstAttribute="leading" secondItem="JuL-pe-mJl" secondAttribute="trailing" constant="16" id="AhN-ts-4gy"/>
<constraint firstItem="JuL-pe-mJl" firstAttribute="centerY" secondItem="7f3-Rm-QqW" secondAttribute="centerY" id="Ope-fZ-TUA"/>
<constraint firstAttribute="height" constant="64" id="d1D-4g-rUC"/>
<constraint firstItem="wuZ-au-bo9" firstAttribute="leading" secondItem="JuL-pe-mJl" secondAttribute="trailing" constant="16" id="g46-1s-aFv"/>
<constraint firstItem="ksi-Oz-YxU" firstAttribute="centerY" secondItem="7f3-Rm-QqW" secondAttribute="centerY" priority="250" id="qaH-U1-XpF"/>
<constraint firstAttribute="bottom" secondItem="wuZ-au-bo9" secondAttribute="bottom" constant="12" id="rk0-ju-MtU"/>
<constraint firstItem="JuL-pe-mJl" firstAttribute="leading" secondItem="7f3-Rm-QqW" secondAttribute="leading" constant="16" id="uQL-79-8Oz"/>
<constraint firstItem="ksi-Oz-YxU" firstAttribute="top" secondItem="7f3-Rm-QqW" secondAttribute="top" priority="500" constant="12" id="w48-Zm-FvN"/>
</constraints>
</view>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="bottom" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7m7-zW-Tcq">
<rect key="frame" x="20" y="540" width="560" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="Z6L-ma-g9a"/>
</constraints>
<state key="normal" title="More about OpenStreetMap"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="editor_more_about_osm"/>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="linkBlue"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="linkBlueHighlighted"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="osmTap" destination="iZ6-Zi-bkZ" eventType="touchUpInside" id="BXZ-nq-gjL"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" red="0.96078431372549022" green="0.96078431372549022" blue="0.96078431372549022" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="WGF-rs-oH8" firstAttribute="leading" secondItem="qZp-mj-lui" secondAttribute="leading" id="49S-ia-ak6"/>
<constraint firstItem="WGF-rs-oH8" firstAttribute="top" secondItem="qZp-mj-lui" secondAttribute="top" id="F1A-oD-eOM"/>
<constraint firstAttribute="trailing" secondItem="7m7-zW-Tcq" secondAttribute="trailing" constant="20" id="R0b-kc-lqD"/>
<constraint firstItem="7f3-Rm-QqW" firstAttribute="leading" secondItem="qZp-mj-lui" secondAttribute="leading" id="Rl3-Ro-sv6"/>
<constraint firstAttribute="trailing" secondItem="7f3-Rm-QqW" secondAttribute="trailing" id="Tgr-9w-YGC"/>
<constraint firstItem="7f3-Rm-QqW" firstAttribute="top" secondItem="WGF-rs-oH8" secondAttribute="bottom" constant="36" id="iCv-yg-gKX">
<variation key="heightClass=compact" constant="16"/>
</constraint>
<constraint firstItem="7m7-zW-Tcq" firstAttribute="leading" secondItem="qZp-mj-lui" secondAttribute="leading" constant="20" id="lpB-qb-8un"/>
<constraint firstAttribute="trailing" secondItem="WGF-rs-oH8" secondAttribute="trailing" id="n8x-zU-lXP"/>
<constraint firstAttribute="bottom" secondItem="7m7-zW-Tcq" secondAttribute="bottom" constant="20" id="yVL-CJ-bcb">
<variation key="heightClass=compact" constant="12"/>
</constraint>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="pressBackground"/>
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" red="0.1176470588" green="0.58823529409999997" blue="0.31372549020000001" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="iKi-eN-brO" firstAttribute="top" secondItem="Yup-ms-er9" secondAttribute="bottom" id="GmV-KH-WX3"/>
<constraint firstItem="y41-VX-XhB" firstAttribute="top" secondItem="iKi-eN-brO" secondAttribute="bottom" id="foi-KQ-2tL"/>
<constraint firstAttribute="trailing" secondItem="iKi-eN-brO" secondAttribute="trailing" id="lxi-d5-Mix"/>
<constraint firstItem="iKi-eN-brO" firstAttribute="leading" secondItem="i64-CY-UO1" secondAttribute="leading" id="qZP-zI-3Gk"/>
<constraint firstItem="y41-VX-XhB" firstAttribute="top" secondItem="qZp-mj-lui" secondAttribute="bottom" id="11a-17-5z7"/>
<constraint firstItem="qZp-mj-lui" firstAttribute="top" secondItem="Yup-ms-er9" secondAttribute="bottom" id="1LV-nh-oGb"/>
<constraint firstAttribute="trailing" secondItem="S0n-BM-V4o" secondAttribute="trailing" constant="20" id="Rg1-Lp-MOi"/>
<constraint firstItem="S0n-BM-V4o" firstAttribute="centerX" secondItem="i64-CY-UO1" secondAttribute="centerX" id="hiF-Gl-4BZ"/>
<constraint firstAttribute="trailing" secondItem="qZp-mj-lui" secondAttribute="trailing" id="l4J-0M-bwW"/>
<constraint firstItem="S0n-BM-V4o" firstAttribute="leading" secondItem="i64-CY-UO1" secondAttribute="leading" constant="20" id="p8d-aP-wx0"/>
<constraint firstItem="qZp-mj-lui" firstAttribute="leading" secondItem="i64-CY-UO1" secondAttribute="leading" id="szu-H2-kce"/>
<constraint firstItem="S0n-BM-V4o" firstAttribute="top" secondItem="Yup-ms-er9" secondAttribute="bottom" constant="96" id="ts0-lk-o7V">
<variation key="heightClass=compact" constant="16"/>
</constraint>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="primary"/>
</userDefinedRuntimeAttributes>
</view>
<connections>
<outlet property="accountView" destination="qZp-mj-lui" id="Iin-Uf-uWe"/>
<outlet property="authView" destination="S0n-BM-V4o" id="pei-fj-H81"/>
<outlet property="changesView" destination="NhV-I9-K6M" id="rAf-gd-z6l"/>
<outlet property="emptyProfileView" destination="qmM-9t-aS0" id="PcV-ha-4j5"/>
<outlet property="lastUploadLabel" destination="byf-d2-8rS" id="zUr-9t-H02"/>
<outlet property="localChangesLabel" destination="6t0-ph-htV" id="4io-4R-QlC"/>
<outlet property="localChangesView" destination="76x-zf-kIz" id="0kI-AG-WLp"/>
<outlet property="changesCountLabel" destination="5mN-XO-0Df" id="bcc-Gp-vgH"/>
<outlet property="changesToNextPlaceLabel" destination="wuZ-au-bo9" id="aw3-G0-edF"/>
<outlet property="lastUpdateLabel" destination="2UV-ZB-sPO" id="CCE-Q5-ikN"/>
<outlet property="loginFacebookButton" destination="U4B-pb-aFf" id="dnr-oP-1WM"/>
<outlet property="loginGoogleButton" destination="cT8-b7-zTj" id="SrU-zj-32M"/>
<outlet property="loginOSMButton" destination="Gqm-JS-hos" id="zJS-TR-HDM"/>
<outlet property="logoutButton" destination="Swf-Rn-H3g" id="xk6-3O-unV"/>
<outlet property="scrollViewContentHeight" destination="w1I-mi-hQq" id="azh-PG-GQp"/>
<outlet property="rankLabel" destination="JuL-pe-mJl" id="pkl-ad-RX0"/>
<outlet property="signupButton" destination="s0p-dL-PG8" id="3eb-cg-uku"/>
<outlet property="uploadedChangesLabel" destination="AOM-R5-eiO" id="6hh-Ri-fb8"/>
<outlet property="uploadedChangesTop" destination="0Km-sC-aJd" id="bwb-nZ-Eqg"/>
<outlet property="uploadedChangesView" destination="CCh-RG-hju" id="ngN-nc-7WQ"/>
<outlet property="yourPlaceLabelCenterYAlignment" destination="qaH-U1-XpF" id="Gfi-Gv-0Ij"/>
<segue destination="anB-7S-ebY" kind="custom" identifier="Authorization2WebViewAuthorizationSegue" customClass="MWMSegue" id="Pet-Wq-d4a"/>
<segue destination="4R7-Vk-fQr" kind="custom" identifier="Authorization2OSMAuthorizationSegue" customClass="MWMSegue" id="nJf-7z-2TX"/>
</connections>
@ -2692,23 +2596,19 @@
<image name="ic_add_button" width="28" height="28"/>
<image name="ic_arrow_gray_down" width="28" height="28"/>
<image name="ic_arrow_gray_right" width="28" height="28"/>
<image name="ic_device" width="28" height="28"/>
<image name="ic_more" width="28" height="28"/>
<image name="ic_nav_bar_back" width="14" height="22"/>
<image name="ic_upload" width="28" height="28"/>
<image name="img_no_maps" width="160" height="160"/>
<image name="img_profile_empty_light" width="200" height="200"/>
<image name="img_whatsnew_migration" width="240" height="240"/>
<image name="login_facebook" width="28" height="28"/>
<image name="login_google" width="28" height="28"/>
<image name="separator_image" width="1" height="1"/>
</resources>
<inferredMetricsTieBreakers>
<segue reference="Pet-Wq-d4a"/>
<segue reference="4Cc-99-mlN"/>
<segue reference="Tkr-Ad-FQL"/>
<segue reference="OEF-kR-jKi"/>
<segue reference="4ye-8o-cjF"/>
<segue reference="nJf-7z-2TX"/>
<segue reference="gFM-Ca-ARt"/>
<segue reference="urr-1u-jhn"/>
<segue reference="0A8-4b-0A2"/>
<segue reference="hU6-lr-OOV"/>
<segue reference="Pet-Wq-d4a"/>
</inferredMetricsTieBreakers>
</document>

View file

@ -18,6 +18,7 @@
+ (UIFont *)medium18;
+ (UIFont *)medium20;
+ (UIFont *)medium24;
+ (UIFont *)medium28;
+ (UIFont *)medium36;
+ (UIFont *)medium40;
+ (UIFont *)medium44;

View file

@ -151,6 +151,12 @@ NSString * fontName(FontWeight weight, CGFloat size)
return [UIFont fontWithName:fontName(FontWeightMedium, size) size:size];
}
+ (UIFont *)medium28
{
CGFloat const size = 28;
return [UIFont fontWithName:fontName(FontWeightMedium, size) size:size];
}
+ (UIFont *)medium36
{
CGFloat const size = 36;