From 47e1bf04521dd63ce2755ad74ea410ee9ffc83d9 Mon Sep 17 00:00:00 2001 From: acevest Date: Thu, 30 Apr 2015 22:48:20 +0800 Subject: [PATCH] ... --- learn/swift/.DS_Store | Bin 0 -> 6148 bytes .../contents.xcworkspacedata | 7 + .../xcshareddata/MyPlayground.xccheckout | 41 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7305 bytes .../MyPlayground.playground/section-1.swift | 2 + tools/.DS_Store | Bin 0 -> 6148 bytes tools/AceBox/.DS_Store | Bin 0 -> 6148 bytes tools/AceBox/AceBox.xcodeproj/project.pbxproj | 432 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/AceBox.xccheckout | 41 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 18767 bytes .../Ace.xcuserdatad/xcschemes/AceBox.xcscheme | 112 +++++ .../xcschemes/xcschememanagement.plist | 27 ++ tools/AceBox/AceBox/AppDelegate.swift | 46 ++ .../AceBox/AceBox/Base.lproj/LaunchScreen.xib | 41 ++ .../AceBox/AceBox/Base.lproj/Main.storyboard | 134 ++++++ tools/AceBox/AceBox/FirstViewController.swift | 25 + .../AppIcon.appiconset/AceBoxIcon-76@1x.png | Bin 0 -> 4116 bytes .../AppIcon.appiconset/AceBoxIcon-76@2x.png | Bin 0 -> 19256 bytes .../AppIcon.appiconset/AceBoxIcon@2x.png | Bin 0 -> 7213 bytes .../AppIcon.appiconset/AceBoxIcon@3x.png | Bin 0 -> 17095 bytes .../AppIcon.appiconset/Contents.json | 72 +++ .../first.imageset/Contents.json | 12 + .../Images.xcassets/first.imageset/first.pdf | Bin 0 -> 2465 bytes .../second.imageset/Contents.json | 12 + .../second.imageset/second.pdf | Bin 0 -> 2423 bytes tools/AceBox/AceBox/Info.plist | 57 +++ .../AceBox/AceBox/SecondViewController.swift | 25 + tools/AceBox/AceBoxTests/AceBoxTests.swift | 36 ++ tools/AceBox/AceBoxTests/Info.plist | 24 + tools/comm/dec2hex.py | 13 + 31 files changed, 1166 insertions(+) create mode 100644 learn/swift/.DS_Store create mode 100644 learn/swift/MyPlayground.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 learn/swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout create mode 100644 learn/swift/MyPlayground.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 tools/.DS_Store create mode 100644 tools/AceBox/.DS_Store create mode 100644 tools/AceBox/AceBox.xcodeproj/project.pbxproj create mode 100644 tools/AceBox/AceBox.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcshareddata/AceBox.xccheckout create mode 100644 tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/AceBox.xcscheme create mode 100644 tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 tools/AceBox/AceBox/AppDelegate.swift create mode 100644 tools/AceBox/AceBox/Base.lproj/LaunchScreen.xib create mode 100644 tools/AceBox/AceBox/Base.lproj/Main.storyboard create mode 100644 tools/AceBox/AceBox/FirstViewController.swift create mode 100644 tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon-76@1x.png create mode 100644 tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon-76@2x.png create mode 100644 tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon@2x.png create mode 100644 tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon@3x.png create mode 100644 tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 tools/AceBox/AceBox/Images.xcassets/first.imageset/Contents.json create mode 100644 tools/AceBox/AceBox/Images.xcassets/first.imageset/first.pdf create mode 100644 tools/AceBox/AceBox/Images.xcassets/second.imageset/Contents.json create mode 100644 tools/AceBox/AceBox/Images.xcassets/second.imageset/second.pdf create mode 100644 tools/AceBox/AceBox/Info.plist create mode 100644 tools/AceBox/AceBox/SecondViewController.swift create mode 100644 tools/AceBox/AceBoxTests/AceBoxTests.swift create mode 100644 tools/AceBox/AceBoxTests/Info.plist create mode 100755 tools/comm/dec2hex.py diff --git a/learn/swift/.DS_Store b/learn/swift/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6ff8adaf05313f183dc84d1017721242953fce99 GIT binary patch literal 6148 zcmeHKJxc>Y5PhR50ygQiu-Mi{$Uiv3Sqeh_fRck)B;FxjVRwc2|NKY3`A`ya2x&xQ z26o=w?9ANkgWJ6UAd9}412X_q4n@()h^TpV=_H&_iDEe(@QO8_(V`zo^cPK9`#Ek| z_Z>Fat^WxPuF)M@H|zOw)owfA&ei4d8MbX*H~q^B_*lQcS)L2eggQQ=g5UE`g+kh{i?vh UQM0Js!io7KV1%Sf27ZBoPwVqFXaE2J literal 0 HcmV?d00001 diff --git a/learn/swift/MyPlayground.playground/playground.xcworkspace/contents.xcworkspacedata b/learn/swift/MyPlayground.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/learn/swift/MyPlayground.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/learn/swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout b/learn/swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout new file mode 100644 index 0000000..51108a5 --- /dev/null +++ b/learn/swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 1330DDA2-1B99-4E60-9F3A-B7DE1D7ECB22 + IDESourceControlProjectName + MyPlayground + IDESourceControlProjectOriginsDictionary + + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + https://github.com/acevest/acecode.git + + IDESourceControlProjectPath + learn/swift/MyPlayground.playground + IDESourceControlProjectRelativeInstallPathDictionary + + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + ../../.. + + IDESourceControlProjectURL + https://github.com/acevest/acecode.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + IDESourceControlWCCName + acecode + + + + diff --git a/learn/swift/MyPlayground.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate b/learn/swift/MyPlayground.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..3b9dccf4c8e5def86e48e57b79dbf41e2e653a4f GIT binary patch literal 7305 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 b^GW*fs~wA>tRi*|2gXA{2?-Sp`~m~d#}hd? literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox.xcodeproj/project.pbxproj b/tools/AceBox/AceBox.xcodeproj/project.pbxproj new file mode 100644 index 0000000..4d1edc2 --- /dev/null +++ b/tools/AceBox/AceBox.xcodeproj/project.pbxproj @@ -0,0 +1,432 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 50A4F27B1AF2154100DB7E36 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A4F27A1AF2154100DB7E36 /* AppDelegate.swift */; }; + 50A4F27D1AF2154100DB7E36 /* FirstViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A4F27C1AF2154100DB7E36 /* FirstViewController.swift */; }; + 50A4F27F1AF2154100DB7E36 /* SecondViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A4F27E1AF2154100DB7E36 /* SecondViewController.swift */; }; + 50A4F2821AF2154100DB7E36 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 50A4F2801AF2154100DB7E36 /* Main.storyboard */; }; + 50A4F2841AF2154100DB7E36 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 50A4F2831AF2154100DB7E36 /* Images.xcassets */; }; + 50A4F2871AF2154100DB7E36 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 50A4F2851AF2154100DB7E36 /* LaunchScreen.xib */; }; + 50A4F2931AF2154100DB7E36 /* AceBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A4F2921AF2154100DB7E36 /* AceBoxTests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 50A4F28D1AF2154100DB7E36 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 50A4F26D1AF2154100DB7E36 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 50A4F2741AF2154100DB7E36; + remoteInfo = AceBox; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 50A4F2751AF2154100DB7E36 /* AceBox.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AceBox.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 50A4F2791AF2154100DB7E36 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 50A4F27A1AF2154100DB7E36 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 50A4F27C1AF2154100DB7E36 /* FirstViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirstViewController.swift; sourceTree = ""; }; + 50A4F27E1AF2154100DB7E36 /* SecondViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondViewController.swift; sourceTree = ""; }; + 50A4F2811AF2154100DB7E36 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 50A4F2831AF2154100DB7E36 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 50A4F2861AF2154100DB7E36 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 50A4F28C1AF2154100DB7E36 /* AceBoxTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AceBoxTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 50A4F2911AF2154100DB7E36 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 50A4F2921AF2154100DB7E36 /* AceBoxTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AceBoxTests.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 50A4F2721AF2154100DB7E36 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 50A4F2891AF2154100DB7E36 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 50A4F26C1AF2154100DB7E36 = { + isa = PBXGroup; + children = ( + 50A4F2771AF2154100DB7E36 /* AceBox */, + 50A4F28F1AF2154100DB7E36 /* AceBoxTests */, + 50A4F2761AF2154100DB7E36 /* Products */, + ); + sourceTree = ""; + }; + 50A4F2761AF2154100DB7E36 /* Products */ = { + isa = PBXGroup; + children = ( + 50A4F2751AF2154100DB7E36 /* AceBox.app */, + 50A4F28C1AF2154100DB7E36 /* AceBoxTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 50A4F2771AF2154100DB7E36 /* AceBox */ = { + isa = PBXGroup; + children = ( + 50A4F27A1AF2154100DB7E36 /* AppDelegate.swift */, + 50A4F27C1AF2154100DB7E36 /* FirstViewController.swift */, + 50A4F27E1AF2154100DB7E36 /* SecondViewController.swift */, + 50A4F2801AF2154100DB7E36 /* Main.storyboard */, + 50A4F2831AF2154100DB7E36 /* Images.xcassets */, + 50A4F2851AF2154100DB7E36 /* LaunchScreen.xib */, + 50A4F2781AF2154100DB7E36 /* Supporting Files */, + ); + path = AceBox; + sourceTree = ""; + }; + 50A4F2781AF2154100DB7E36 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 50A4F2791AF2154100DB7E36 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 50A4F28F1AF2154100DB7E36 /* AceBoxTests */ = { + isa = PBXGroup; + children = ( + 50A4F2921AF2154100DB7E36 /* AceBoxTests.swift */, + 50A4F2901AF2154100DB7E36 /* Supporting Files */, + ); + path = AceBoxTests; + sourceTree = ""; + }; + 50A4F2901AF2154100DB7E36 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 50A4F2911AF2154100DB7E36 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 50A4F2741AF2154100DB7E36 /* AceBox */ = { + isa = PBXNativeTarget; + buildConfigurationList = 50A4F2961AF2154100DB7E36 /* Build configuration list for PBXNativeTarget "AceBox" */; + buildPhases = ( + 50A4F2711AF2154100DB7E36 /* Sources */, + 50A4F2721AF2154100DB7E36 /* Frameworks */, + 50A4F2731AF2154100DB7E36 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AceBox; + productName = AceBox; + productReference = 50A4F2751AF2154100DB7E36 /* AceBox.app */; + productType = "com.apple.product-type.application"; + }; + 50A4F28B1AF2154100DB7E36 /* AceBoxTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 50A4F2991AF2154100DB7E36 /* Build configuration list for PBXNativeTarget "AceBoxTests" */; + buildPhases = ( + 50A4F2881AF2154100DB7E36 /* Sources */, + 50A4F2891AF2154100DB7E36 /* Frameworks */, + 50A4F28A1AF2154100DB7E36 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 50A4F28E1AF2154100DB7E36 /* PBXTargetDependency */, + ); + name = AceBoxTests; + productName = AceBoxTests; + productReference = 50A4F28C1AF2154100DB7E36 /* AceBoxTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 50A4F26D1AF2154100DB7E36 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0630; + ORGANIZATIONNAME = Ace; + TargetAttributes = { + 50A4F2741AF2154100DB7E36 = { + CreatedOnToolsVersion = 6.3.1; + }; + 50A4F28B1AF2154100DB7E36 = { + CreatedOnToolsVersion = 6.3.1; + TestTargetID = 50A4F2741AF2154100DB7E36; + }; + }; + }; + buildConfigurationList = 50A4F2701AF2154100DB7E36 /* Build configuration list for PBXProject "AceBox" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 50A4F26C1AF2154100DB7E36; + productRefGroup = 50A4F2761AF2154100DB7E36 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 50A4F2741AF2154100DB7E36 /* AceBox */, + 50A4F28B1AF2154100DB7E36 /* AceBoxTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 50A4F2731AF2154100DB7E36 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 50A4F2821AF2154100DB7E36 /* Main.storyboard in Resources */, + 50A4F2871AF2154100DB7E36 /* LaunchScreen.xib in Resources */, + 50A4F2841AF2154100DB7E36 /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 50A4F28A1AF2154100DB7E36 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 50A4F2711AF2154100DB7E36 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 50A4F27F1AF2154100DB7E36 /* SecondViewController.swift in Sources */, + 50A4F27B1AF2154100DB7E36 /* AppDelegate.swift in Sources */, + 50A4F27D1AF2154100DB7E36 /* FirstViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 50A4F2881AF2154100DB7E36 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 50A4F2931AF2154100DB7E36 /* AceBoxTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 50A4F28E1AF2154100DB7E36 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 50A4F2741AF2154100DB7E36 /* AceBox */; + targetProxy = 50A4F28D1AF2154100DB7E36 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 50A4F2801AF2154100DB7E36 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 50A4F2811AF2154100DB7E36 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 50A4F2851AF2154100DB7E36 /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 50A4F2861AF2154100DB7E36 /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 50A4F2941AF2154100DB7E36 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 50A4F2951AF2154100DB7E36 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 50A4F2971AF2154100DB7E36 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = AceBox/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 50A4F2981AF2154100DB7E36 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = AceBox/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 50A4F29A1AF2154100DB7E36 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AceBoxTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AceBox.app/AceBox"; + }; + name = Debug; + }; + 50A4F29B1AF2154100DB7E36 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = AceBoxTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AceBox.app/AceBox"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 50A4F2701AF2154100DB7E36 /* Build configuration list for PBXProject "AceBox" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 50A4F2941AF2154100DB7E36 /* Debug */, + 50A4F2951AF2154100DB7E36 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 50A4F2961AF2154100DB7E36 /* Build configuration list for PBXNativeTarget "AceBox" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 50A4F2971AF2154100DB7E36 /* Debug */, + 50A4F2981AF2154100DB7E36 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; + 50A4F2991AF2154100DB7E36 /* Build configuration list for PBXNativeTarget "AceBoxTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 50A4F29A1AF2154100DB7E36 /* Debug */, + 50A4F29B1AF2154100DB7E36 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 50A4F26D1AF2154100DB7E36 /* Project object */; +} diff --git a/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..5765ce0 --- /dev/null +++ b/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcshareddata/AceBox.xccheckout b/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcshareddata/AceBox.xccheckout new file mode 100644 index 0000000..97be529 --- /dev/null +++ b/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcshareddata/AceBox.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + A1372EDB-125D-4A73-9AE8-955FA3D42EAE + IDESourceControlProjectName + project + IDESourceControlProjectOriginsDictionary + + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + https://github.com/acevest/acecode.git + + IDESourceControlProjectPath + tools/AceBox/AceBox.xcodeproj/project.xcworkspace + IDESourceControlProjectRelativeInstallPathDictionary + + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + ../../../.. + + IDESourceControlProjectURL + https://github.com/acevest/acecode.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + IDESourceControlWCCName + acecode + + + + diff --git a/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate b/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..fe879128f2a9d8600de614d95e47d100b789efda GIT binary patch literal 18767 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist b/tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..23f7a2e --- /dev/null +++ b/tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + AceBox.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 50A4F2741AF2154100DB7E36 + + primary + + + 50A4F28B1AF2154100DB7E36 + + primary + + + + + diff --git a/tools/AceBox/AceBox/AppDelegate.swift b/tools/AceBox/AceBox/AppDelegate.swift new file mode 100644 index 0000000..5cf83f7 --- /dev/null +++ b/tools/AceBox/AceBox/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// AceBox +// +// Created by Ace on 4/30/15. +// Copyright (c) 2015 Ace. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(application: UIApplication) { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/tools/AceBox/AceBox/Base.lproj/LaunchScreen.xib b/tools/AceBox/AceBox/Base.lproj/LaunchScreen.xib new file mode 100644 index 0000000..8d8db7c --- /dev/null +++ b/tools/AceBox/AceBox/Base.lproj/LaunchScreen.xib @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/AceBox/AceBox/Base.lproj/Main.storyboard b/tools/AceBox/AceBox/Base.lproj/Main.storyboard new file mode 100644 index 0000000..64f32e1 --- /dev/null +++ b/tools/AceBox/AceBox/Base.lproj/Main.storyboard @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/AceBox/AceBox/FirstViewController.swift b/tools/AceBox/AceBox/FirstViewController.swift new file mode 100644 index 0000000..0b17823 --- /dev/null +++ b/tools/AceBox/AceBox/FirstViewController.swift @@ -0,0 +1,25 @@ +// +// FirstViewController.swift +// AceBox +// +// Created by Ace on 4/30/15. +// Copyright (c) 2015 Ace. All rights reserved. +// + +import UIKit + +class FirstViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + +} + diff --git a/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon-76@1x.png b/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon-76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4b769711daa9c62bbd373e462e8d2fbd982ee2cd GIT binary patch literal 4116 zcmY*c2RNKtxBf=&MuzB&PLxrj*N6~hl!y|<45Rlt6J&-c!63-5lcFSo=s}`P^cF-( zf*@KVdWjn3ALpEV?!Djh>~HVA_Pf_w?=EXUE8f)P20aZ24FCZ22Ku_@#M08WS^+zJ2$O9Q~FBLJvm0RXFC z-di&@;sCXuzD*zi&_XT>2*}A}0|1bX`z`ArYhxo7Ctq(VgtIRaC586(BccI74Xr|K zdZU66P_(y~PoN4~o&PU{3bB15hVeuHf&_W0^IIF6La+G-pr8s;@>0_L8Z=NSR4u^S zMa5iK@1N`Pr3>F$1DitaxpzB3i!CuOXxM7xMqf{;{J5yDfpIb%YYUIo*egP*zS zLYZ>NinFq=Wn0A9&Sxb}so9j;Oy#*3C;e{F9B9ql8+v!x8W_HHGSFl1x2f#974d0% z#=@KXU(a)}oLw?Jhi8IZ`ljxwIxP6TN5NPQ3A* z^TD3&XLfZMQ?ffY9ZY$`JSSfLhue<;xU-6FP4$0yU9ybfw?Gu^y@8Nc(K~Br@_go6_4IWGpXS{#KorVL?ClLq!RXK{jn+3OqzyyLg_T;C??~}F4jWM`p zedsKvN8`_F;Mzo4=KjX?XO-a9rEqzF+ykHO|M)boJ#Wb~YGp-{7~%JsLdo>0XE7N! z=C8wAkDj-j?hb_X^2Igs_3&bwH5achi@Fyb^|SS*e_ZHLL~n8WHX~ro+fiXt-`+pi zC`vaO1-I>~7xbfpP*KnY$J-;TWOUy}MT_lqR&T_5P1W@kV7{}5{VdL0KiwNXoYXk@ z;$%@6Dr%kVYkT>$NuCdTx)TR;#f!u;jg23!Rkls_|3`cy^#)J%`PuL339Gvs(3X?c zvV%U6Cuk+8TAlk?ce2Kb+uCI93z=*%p;$zqBHV@`5Bd7}wf!22qR-bA(DBGM#(D;B z6*gR*+sF3HQg&_-VWTST2NaW-ANfCKqoqkyXln2|3Z5RsCpGH&=_xsWMK31tJXsNGEq7>{ zQjbLGYerLQ^>78^VeB|@g<8>JeBr=ou_3*^iSjaY%7g9k1|zEYXzNd}?Ntvs`oaz- zT{lW{eRj8@()N*9>{Z`cufsWPTRwUrK4ikus!8JQO%voT;i5_g}k@@8HQycssFvK94hp(~MF zu)sa8#3=jHbCH3*=Jqy2 zeUJHjP{Jm!)Z3NkU{6uj_Tg8SW$j;^0?)X$0ldG#GuaFcx3iOd#AuNLpOh!|#od}u z6?cBj+OPk1&MioPux(xCxwJUE! zcDh*ar0}S#8GeKxsLV%0>_jJ&f|>OC8<7;Fl&LdRE6%q-I?@!THJq_2>~h_kEr$+a z=f^*22`r28Qgx7113l(pK|pKmOLZY!iJh5KpQP@Zpuihv=UHTUgz0H%y~3#DDkoWj zG?_1MNNvw3QG4_Wxo|@8&(SXAX%#WL5m;7c-Zj`0m*G=u#P291p7rN6@vcoD#^MGq zQ%3Rbv(!VDaa6NoFW?Pqoh{T6V`}bBbA9BzHyI`;UchzN0lgU&Jxe*x||*OGB2AU6HV$t>9VL5(tM|#4Lb6S86odL^FFcKXf}q`VMRQu zMU?0IOUy#NNO*R}Lh%8Ip?T8Rc+fy5tl=VBf_tnN$L$Bff+(3B@e-7;t9y-W^J20p zO|Ivb=w6|BLaa2CgnO6vRU-S)!w4~dV=cGvlVpvR%q8)N(oL~C_Pw1RUe0Ro&WB8` zr-{ZMX`zyYEEcxfRwv==EE~Keqd(L|{*cXEXi2hBCV|O_FG_3&xia$1VSiwy=-V&3 zIX8AF_RrbjArOA@^To7{Yd)$vq}H0lx_oAR+yWkKLjwIktAQ3^b)b4ycC=Ul$a##5 zGV*rb$kTG{do6!=)>EQy33!Zv=|P)!`^7g3!Z!U0(l|UxV5A{kJLk(;-up)gPL1$J zSbnZ=>!e;Xmrclb)8y>r`Yhkt5zu6>BY$IwNxlbM^Q^AtdNaO^c}EhWdkJy9ioVbo zx;^L&7N6t>OV!n}7y1_;b(HJn7adYP{LKF`YkSi5Nem@#_{dr&`qs7d&o}W&h8=UI zt75jLmB_EuGPyBqq_oXl@Y5y{&uXfNdj{uKv{`Jl(@N~K<*IY-u)ajspm~O_PVmb` zXuT($w@hm+)#a4gyZE~~np;AkLWnSlV9AVDwTO@)PL;Lu@)ZhG?5C8YqL@V3;>&hR z45>LCs5Rm_>{EzOb2ll+a9Y{BljB%#R#siC`I~OD@$MEUgl7g%=Ben{7X8WA@{$Na9F*?!Fp0As_ zGgSuC1O#f_#gLFzuSwZVgAjQCxT0-9C-DWDzUQ@+UA;Q?1$kJ56ViP8NQfR%Ihp_! z9eTw3)oi3&y~JvTxrjuV$hC$iE@C{ydBU@@<xeS6X}+Dg#Wp+0L;N(KpM{Un1~g@UVEE)-3kDS8KsU`A*k!M}F1 zn`G!{XOY`&hg1Dtoqfn8s=!~&eZgg}411CaSxkjT_mfZUDB-SieD-!M+uyl))Pvens*;=>Yq1{eY}X=82lD5#CuDKbx9*U2nlnLWiKToJI| z)j$enKCJ$w&As5SB$H~veDKotHby%t^A{<49T^2k&`!Mil^7w|Wn+SQIQd=Y{SrAN z4tlPIrh)3@S%X)yF|Ec2Oo3k-Jor(K*hYwEr-nYH%s{l~%2=8+h5n@ME3S^WC(eS| zVmv}&Z=Bo#vRp?K{YHytwSkUYXMoWl;tmC)uvznJn$0WTuy2MEgExaoC!B;=w_iZdNnv$J+VRX~E~BuJP&4c|YLo%#OCZwrMtA1I!&YIUH2C`f+EI65{EU`=0 z&2kQNFWWRi(TF<_!q{p7#{|^ASL(F?&{*4rXwqs{e7w62qBB>s zVd5_V(#|Dyh2Hn8?w~-|Fl;)a@O^vgOGf}H)5HD2cPE&0tVM}Ld>WdK(}{|dtVmIQ zgfW~vxnO@*i{GQ#z{IFxh@U0kDC;4vJKozK$VEj3>(UAaqu;e0H2#UJm~m}4x4PCWXkOVbd3uG;uE z==ENu9uf*_wtBUjQErd1;u`RxHJL-JX*|a#g zf|yv%Uvc~=W18rAg8H z?|<*R@4fwGv%9l%X3p%{ne#n!&W0%~%HX^vdyRsEf+HvUS@rpt^56av^ZB2ogXaD7 z0o_vanj;zb*YA z>a(e0uSGcj?_(2ttb-8ya6-8pxxYSEI0P2h7FllH9ksmn zGbo*g7LCkVW~)vAw}~$6mnP<0>o9{7c#`dMgWmDH-sxvz&C`3wA&e){DWm-akM>-v z_`-{>S?ss`2nDWLpE<_R-{b~=vMW; zcWg4>;Vwo8(>;s5@ldr5XO!v3zKm)i!g^gQP+er*tS<&x`;B-%c54^rOu+nz4*_3( zSRJ#wv`im`GTlxTEae}k8g(8GQQJTMaihCWAJE>>HKmr!*#{w9F*kE7;Ui*)#Z$=w zMTpApq~-;7{vIkTgO>q@3(|MN5fO+_+bt~{yqKN0&Ap$+uYao^pMFW~R`DvJC1lgXzxwiv!~|{9E=L4=upjlkE}e>UC+$r@8N;0du8sA6n|sSEl-)Q zBn4DtYUC7aU(pC`bqaL8T0~r#9l8|4Y6`=YCx^C7r>k&RPeo?(Wz)h)Of^7Bzxts zKq;|iqS{p@+^~+B!t2f`v8J1xj((8EtbGye&`rTw>?5Ta;mW)7MY+IAELun>9OLF! znG>P9Nr_`)nKw74bLa(~c*}uS*G&pxaomMKZJ6|;ZA%9SX9 zzly7<%T>c^KXF|~8-iI<&fm+v(AZtJoxt|RAvTs&*PI0l-uO|E>H7kPEb_&6=P5kN zp@RK#PND|kaop?O(hSjv^hi^fUZniJChffgQY!OA6tW3-V@5u7p#*&{Yz4|wp{b3% zrfV=~uUMj2LbosYi->y7VjgQG+j5q`<0{xE?Fxs|UwTWZYR;eIJTYC~(<#(qj0Ti! z6!m=J$pqI?2g}!Na`5(QA#mkXe9R8iyNFhR9Wg0&R+*&dDM#MA?6sC`!wz! zN-f7NV<=B~Q+@F7uEGUSj@I-)rA^+NB1D&5Q=wNE^{rV*9r%J(>A)a6E7!>VN!O${ z7ShQTMXfR~qqzl7XhXTGbzY?oQKxR7dLD;+H!wa6(uF|ZzbLE2h|icHH=OqI2yyhg zM3h};bTAsS%h#*@n^?$GVNF@SGirGZpR&#%7of?&K=9^MzbD*>bWcG>K2lnS7ql_U^>Emsn+~iez;-${Nx?iK-)Kx*9tsJ(P zKslVEB+^X^b&Y{)|3#7uw54zt?TWu6pH{_nN-C$TaIpPGXlJ5MX7szg;Ui=P-gw+T z3U#{+e{KObdZP;q!;xRj>-wP0Zalw&v^z+T5dv8Ijh7oUD$<7geVB3;2a#;wGx!6G zOOhf)*F>Wgv-A6sonHky5E~NCLXaYVO6%q#-hLrgGCF92=vq`IjS8@~t|#39go>Rr zw1-KDdVI3_Bw<>`w~d=4c)P{X(lbI=Q^g9KjTU4EwQK!~J9cz`_X^gX`ckhcv%^)} zWki)5jvxVQk$nEUlYw^dkrCIBLXp}?92d$6WY+c6W07w&W(1MWDuGmHl`1;SC%Gy* zmepU|fnn!m7GI6&42e_6r0Pk%Vi}!qc2z*qEXiRf3B<`RVz<|E7Wo1!#`3lL5gzUe zq=1Jcr?bC{6wKgnN>H5M+iN1iC*ZTtlt8Dt_2v# zoT2<)y6-Tif{F_iQQ)q!XPYpJ+vX`t4oiOQ+r%VX&Ztlx3Xd8^9TC!RkB#xx5Kj<( z`qq-I?w9CB-M}W;jSIkfaG?1TlU{C;?sKu;x5U>{HlR)=WREZ|+I-<5($_Z!MwhiJ zOOj#x!nc7taYVf^CYF3o6eb~qJ~pRPiaI<{hpk*~U-dTtsy;CjW!IRXSu$v3JJ#=yLX4*IQ|WMSJ#R$Z|LqI|5@ogH3EQCH5Bob0TwIM@H^)w0xfS1=Sq>+|MkzZL_sB;Kce!W@^~?zwOoESHYv{Drmp zN(|vKqQoU93$OPXQClGN^f5eM@i6hc@!0G2Rv)Q08a0B7a&MYY-jMd65$(qBAx7>R zHw!idHUxNAi}t^cp|0vwt9Et zvfGwAadJc50`b%I?m#E7V+_kIv2WwqE9|@grX1^pc2{reY7GWg=7IvOwInoZsG zhU#s8As3j1`EOG*ENlwed|C*SFA;2K$`fH}Iv07&;Z-m|fBX|Pt>Q>)#bN$yQ$_GJ zd!X8ELec7$`{1dkaw<9%^{x80GWdYNWn7ieF*|SfZaQ#wOk689o0^lx5*?cxM zGjZJ}@u4`Ux#%`zT4=KsO^>lXJa1`9pO)CJX$4Eoqy6%g-6o`=+EgdH`hD|vkGsq{ z4X}Ii#LrG&V!Mf_K(TIQt^GFB;iPXy!K$zE=yv-DuD*0mvQn0{8@9zgprT!k)^aC4 z>!;IyBo8UBSJT@8ZE1H#koMG==&m{DLS7p3pl`DR`=7dLwsyNoemJ;0Ku07FaAR=M z2|mGe#Rkp9A4Z?yq znIq!0*75DGlSx5AN_pI`X zG^iVGhx&1qI{&#gZBelE`)zT*+ora=rd`g*HO@6;%ko{zuHdK#uCv$f@bdkz>F;J_ zL>saTCPDk*o`>tCTjKuO@9BD%-*=rq-|u18FVnFZM&1m&khZ^&p0sVdvQ;WSd0o!c zGQrw1aj{qaxW|oR@3pYdgL0vORla~7wqTKZ*X|uD zGdSlpbn;Bp^hn&rb*t~ZIOBXe1(;%pRix$EATE?%#o7~(8 zSTDlbI3)2nDgH1Srj>O&RUl2_);O7&@AceLll!el`_dF$pD2dhAB>!Yiw$LOTYrNi z2dkx%!ySnzJIUQ_sL+N2gvV?USjsL5#Y>w5mZVx(_ATbmk<{ga_dTPrJ+2}Pl*i() z_)WZc>f=t#qt)%<^5fwy>8N|p#gL^K@WlS?gFO%Tox>T)$03m+61V1cN+&LEfA0ko z2S*6$=M7|z_snNIfF~{{C6JjI1ufeB>3;M{1b6Me_4uy!_ftFGef!VExe*{`PzE|) zKPYCPL%gScl;t3{Y)uby`8hnv#&j}!z3?l%CBrDZJT>+yGptmL$w1)e~ygPELc6{ zuAMbbAAZ2vzGWUJ5;MhEzB8_HFYRT&8+|+&H3@mRG<>?;ZED?b>gfKjv6PNaaF4lK zcGFv}Yl4t+@@P2OU+)R(O`n{(&70wxl+DBC;dfBobr|!o&_(zX?ct7AX9@LcaU@Te zv?CX`1CJJ6Wsh-^C%lu2CdMmx}v@d z_(J$9ZluarV$bpxx!mVfV%j)yLr7`_?o)LDD=d$xoxmN6S6w?wV|b@bsqf(RgiG6E*I^@V`})UZ z5$2o;`(fwP(dBspN>R4VOAHMji@s+%b(xL^PH%xhhtKbQdH(WE=5ng(R2cy!po82rxGwWC0b0?O>9`$lhO9MWju)yQC2cZm74HG zbpPUSmUFokjXy5a7k?Q=t#6+L-mSm)@T~VYXBMcWP&jK!mju0_uZg4JyD!^~=Wk~k z(_)0m_iX1L!iEn23?;pc@K)r5df_uJ-kFMc$5veXOU2mF*bc3=ow2s@_$$PG()ztdKu+N_7dht_v&LKg`%u67P3M5IaeuFJBvu zIzrkC-#73s#%HLyS>neAt^ELYPg-4N^*MG~~x6{7YHXN;ar>Fm60*+&94vVaG#~ z{=4Ab?%an{BLk>Y-2Wke3;i+8`b5ZeBF`y2-! zGV)W)QukhEDQ<*CE4pXSdSt@wK1(y6>^uU+&w=Uo$Pjxi(T8277}P6+<4c1|nIG)0 z{QkPWSnrn!@}OI0#pGo~0Z^hdV*6kM7YG!01g*vT`}Fy@L_7|$hrg2_HkHByjgBKo z;97ZyT^%SL;%Ko@48(vIE*A=knOoDs;@Te!VfV!k*SzrTyN2xa)-~2v6VI9IEW%Y^ zM6Zt?LM$~39tguDuEi1tZJbQ9di@x3#`7Et%1;M3THlTw-;eArUAMZyc`D?e?6T{e zK~#Iht6#+Z!VwGop$RmKaw}F`s7~tRM)~GtfQhE&!6t=|NwxTzG*B$E%WumU-~O%Z zQ$}d;k-^5{N;e5g+AW*9t(#qw1cE_$B|-vJZHut^I~~Wh$LFrY-SfyP+bhZh?yz7? z+#-TLd=}laWb@3f|M)9W60EG`H1SezSntMcv)~h_o~!+Z5O(e?6tW6JgmN*FMpWd zW%N5^%*}od^vk|^n^K|yHwH;sr}BOd4*bg5B^T`#tMAuL#kNe>W*$(fPf%g z`%hyQ9@+N7Rgr&kfm)*ynIrVdxcOVz4|Ca>t%nP(pxeUi+rr(}>lS+e3D{DvQm+v3 zxxWz_t`7(-E)4poRxXDwu9K!nFUKzz!qR3U@@ra zGp!k=JHYzvS-oqC1V1?s>KChWM}K1uDhwQkc5~al5t_?<$}BhkSo_Zr^W8iP z+`?1IDO05SJ(nOSZ@Ss8g2a(Q+ysz-3BKMf-{A5jyi+MI1)IJcicBHv(#tNLJ7vIm zts-0pIIE*}r~_2rfw57NS=r*$ToPoR{HVQh3zX7a)6w*q{}(hv;Sl?gW){z*PiiLn z$~wDlhOqVVKb%sFIi>^ct|7gd1TmRlJnhJcdzNZLN(tUpl8M_K%g(rk-+cnwIQVri zdUxnl&+1gG^q_~h#?GRZ>A1~t?{rx+M{RLteo{As+65ZyGBnfU@MKTke~-`5mRljW!>vIP`1Gr+uGS)A3^nG3vUm z=hiqkf?i-3d(mX3vD6-nD_Zwe7oqV-fn-lC*T9+tYio(_U?Ih z{q`%$K#CZcoTlLLHU zQW+%^a`wnsC7(StI>im61cdQhr}b*K3naaxsRVO8gp4XxMgw-S)-@c32TJDFDvJ z^Mbq1Eif&H+Uxjr0M!DGya|ji z{QLd<*PkdaKgZ0jmblu~mU?qI@$N0o>qIPTnbtcUbVhCd^?`@_XgU7^k-p>QHSC=E zI%`;J{JPEO7x1U}ZoHUv>EhXeK(DfoiZpof8Oj-!w{6I`nhh%`=yj>y{ekKib;>}< zqns8id89=5RAOFddm6oJ232xLyOdBRtx;Hu5<*3ic*J~nLVc}DvBFYY7SKbfRA0y+ zU6yXl^+rc{ClrZLantuPG9~xh=8VLn-SIWojje+YUR39TGqd?NJ}MMe^TG%yl%n8O zMYcPdN>^J1cV zCZuu%w$kY>;&OV4q2zbKnVRdkzy>jcPe^AixvzO`yZLUzLkdAC+osaWELZEzy-i12 z9!2?_&Q+#C?^x_$aZN)S0P+eEkE*xW-tRhUJd593uN#Vl2pyMRtM`p9KbF}JRvIh++# zb6M?K&F@t$fMtK*V^5Kuv!y~^L~>}@^0?pj*tIRT*SjOk_qze^fmO(!6}5KV;N(3Q zYFAuQIlQE|J_ySrnJDX#NflF1+ie-QS!D~&2oVhZF$*}*-<1zZN)0I60aWL&W_f^Sc$N>Nz{W>lo z5EeI@Rg2a-(bW1==AN7#O=F&95#c=fjkV5>q{gOGTKKfGNfB^Hh{R{)mJ#pJk3UiA z#%xG>h@nP$41btCA>^Wd7h;BEBLYir-C=i>0QW__H^){{PB7h zUS;_BD*+1|^I1LHavV;_OEdgjgQiJV1Dsu)N9myWk!bC}_Jc^>7|i$3l|%z`0V=X) z<8ST#=1_y|3_JHY`R$*KYrTHxbBd7zV6NaXocT1NnRtZG#ha>CRKw*@rAl6bEW2=1Sy=`L-F6GsZ2T{SUH+L`KKU<+`|()zmMYBo<&w>n-s<(vaVq0vd4dWu#m_ ztr4|{t!EZl?2;JqiVe^kD4ug9NaEt*iT($J*V1{xqC*@}ex7Ltl#XM#Aj^%kS5)`$ zFkA43;uh0oJJ5mTzNF9{HX5mMfM!Z=VX}Cu3E*lCXTUUAhYiyt=wDD?QPd1`j_zWE zPmK~Sny1nW^>NNAj9Q2+qXdFvdS1Ng_4e!_c!%~%Ff8MDs=9ms9fsiv2DuosaXZ&o z*(4+VJu;^S4MEmF;@e01bBLZzT07+|ww)NQ+0U-ul^lepfakq}#<)a3whDI=pgKty zwtq30XzvA%2;*UlxGuPlj7lELP?-Nta2O}zeP)oDeCPe9U*2cNFoPaknn5u?XtcS& zzT|gymWEw%sWv2=xKKI6r)6ld{PV3L1#iFNyYYk*7#hBz#SY=jUtK@Nmmr63%D-%A zYjt-C1tR7qheN@iD0WtBvx#(P*r_)i?HOpWHmmmeAejWC{AK&(N{HzF+i z*4ze&z{xd8qr>WpZiTJjT%0bPI)Gjo{hU3C9->i;|3o#NcxH;XkKcQ)kkqo%$js=v z|6YB`tP|JdH;)(3y1UUO#Z<$$)fje?)_WSqs)iOPZfn;$E+kSS7Fz{qUxQ_UPeE}c zJS#PK!7)og(U14$B#HhqgP4+!az43tEoqQKHNvWwlEg|GJfOVt{F;EcJ6zrq%WUr9$k( zO@`y2v10(okwErMYBuS<{5mKRj*2wp>by$_V{i1>lWP)E5r&d|V+l9SADQ$qNkbhZT8e zyfHaZSaD%;$0Wg{?i%_~DV7!az}up8-e2@R!o1#_i`uLnG z-_W?SMbglTdz|R@=s86pW3n6>w(@x0=I3pUjdwes)(}T6&)se#l@u9E@DBIp3-&%O z--pY2CgDa`6!$W4>*ZQfZ^?G*AG`sv{#~wnuJjulXx3%6Qkhso7^OAHqiZ&$=L)f1 zxE|BVSg=il>x{tH=Bc2RFxlFi*+mV_a3S7Tc{D?Tx`9E8;N<;WZ)QwP633NM>o7dr zEHcsfvwb!T-3>dah@Lq8%^2Rp7_u9`n)uF+ek3TqA$g5E8lg2HAK@Khp@2sF&e!WH zDi9rgaB}4t04sIj@zk57{t*!ndBclc>i*C{tJn01jF7HHSqbGaLyvCZN71&bhBI1g z{A837Qp+H(O%(|53yrA&|cudp471W8u)TaKcWY$*t*`Y%$(B zI6b_8N|dgbIg~)}vJoDDE`9HN34^LsmW{J}bxtlb8Ly{c-D)q4Rkuz`%yE&AkN+*p zU4M17)*V4!$0$2r9~s~IYTb2sKA{UgklM`ql-SR)#M)g-f`yUuUbsgL&*3ICUY^bF zn>%r~KxV}?N`->Q70{{bI8vK zPw0C=00~4LVz}MpQHKpzJb972yy$qgYoz!B%KbPJnAyqw6`;t+?eXoiX(~>Q7w4Sp9hPlcwN(Me!Q?jZUB99Mg;_d$aE*DQL7 zH20TtvyKjx<0kho%H{RRLXowq?2hT-<)1XE}m)IxK!3?Q)v?5SK?I#(OS2X6v*qZ~g*-TovwUk{wVNFh69z%ikobzq@_*HN3)U z)PF4s4T_8)=Ir4MuovD64Ek<5|8?uBag+iJv_be5=%er2&ZzOZDS52Er-qqRP)s3&-3&~zzxW6_I zQds~L|Cdd*2xzcnHh{jGGmseawR1QV`=!Y(La{?sJuVb|?Oh^T?{gY$&p=HsB+EE@ zj2xmAtgJ&?LNpO|8Zo?t>2X4+&4B0>YeqRnz8Ue-Mef|af#nlAYzyo8K|uG5)Vauj z_TOjzIf@+yzPSqOSc%4lC{=!TUEQuj($o|^F<;%?KY;=6c~%#7Bu`sIpQ9o|GrfIs z#C#sN{lsYf6vobf7x!=0E{m4X-w&1JvGFlR?M|05U1Ci3-Rc>8+jf6ks^iyiIF~mQ742@4bp+qnd=OSzt;S8( zs{!(_R@Fs8$kE9S;(gX$R1*Pb{+p8NE&W9rIT~J(rzGoQqyn`c z_$nrOCkehh<)k>-T{Z4h6Yk#^L^krJ0Ud5FdxoVjft+E6_`4?2zRnqcb{?&{vFyXz zt|zrY#SMMs^Plid_F9JA$z&WTG8{1HYiA9}HB+!CGpo()v(ij^!*YRhS`4Qs?Vw~C zpR!Nhu(0KMnEd8|;b1hjc!_PjL<*^F*DwsF1d9is7%eCZ4wo@;;Hh^HH!IzQ+b9^j zhxn~jh;sF2+CUvRo%&V-jFj;15rLJ!=EhXq+=T4Y1aR|I~a?|4Im z5?|NvKo?;8J`M=6dqIUkYQN3Or6RI?gELN%Bfn@#1pUkeV^V?U#rg zzPQ*TN4*UoL044ZdscT?CLSJ#g=XviS}_1Klt5$}uWXFhH+i==!7{tI=g zz{H-zAyGH>&u%1(eH?HXyeFN3Ciz2K+87J`d%rot^lH4RH|pA_T`Q(kRa$d1fz)h> z)_bt4JjumtV=zp>5fILo{uAOwYX*$4m8T|_ID8XvzF|#+frUqRE7=|LOU|&9C=Wd4|2ZnBt^kXsquqn5KqG3>&&&#gm zm~7o{**{wN&a|zLoI3gA6o?Cwl8lm!?3LnM_dtZg-H{8Ux`k$Cq(3j|CfMNZ-XD<(5b`O z%o(@e&vy7XB3l=OiwWB1Y>jwdhi67_@*|!i70EZx7EPUW0uKS)r3gVx?N;Bs8d$3##giXKjF zY3dxt0vJ@N{OD{S52=y3A>5=L1?Og%);$3CP;I(saVEwzPr>D=0p(of=xYt2U`)lJ7a z!D9h!gpCSSHs*eMtvjd##Uv=vP$&)#UeOpm{N+}}YXH_g2zN?1iwL}Y3w0p6%MdW2 zw3e_#!n)}$u&K=K^xpu>=jyvxV_a=!en#Mndz<#|Gk^!}W-FAsb^4*Yw`l2k^qC!q z($r*!J`WZ~izOi|X;Xi5YTN@6tK`hVf46RaII~6{JNyHxgJ>0Ll+5&ou@?xi4pkcC ze@bPN0ZD-YSu~pWOhL&92XVVvwR7*eRs=Jw(6AUoBs-|ztrDvMUM^Wy*>5vSbG&X% zF+aIEr&-G586!nMX+IPS8hQn`KxMRe+0v?0ncchHd#{3Drw4C4Q|O}!Qi67Hbz-4i zJfn)!iPT3^u13+FQ_-){-)_oI>5SqkUwN-~1iQ12&3Ehoe)y0Xc#NxO3>vYH)ODh2 zL;*yS7D9>x2>LsqOH?s)oV(U<(0+`V6YI2{MHes`xK%Wb3M(qUMhmviS|F_cz!=Ra zWPyn(qRFxx>o{@Ax}BopP9XVWP>mKUf}j1u(b3@riGbcmFf|$)CBm0j&WjYOhYkRo z<720%4e2#|u2qxZg1b*9_%P|v!WP6L>>+DzIfsAqV8Lb7Z~CMQ*M8y{+LfOiB|jG5 z#)g_IwNFVUi{xYXON8zaPTjfTns;79psxzP{iF!dwaHPV^TEsF!9{K@bG>WXJcxr&=L51pg^~giqbyK6 z7Z-`qkib%U74@cfIHfH;*FCA+jNA~1o%l{6FSvkzZ}G3+&p>v)6*$LAIcgQ_$Zf3V z7l5(_k3o!e(sTc}XVjZj@2$)@E-p3}mr}_@C(iqd6IphQJNFj2&xKEn6LOXc?H}Qz z%JBqGTUNw9kr-Km`XX!9S7;o6-2^!!IQG6T8_594Bv-cf$rw)SCUw_MqW;dAcLO>* zkjiT;-O=%7F5}@CqCoQODTj30@lyZ=CN_|syhm?!$N=t0zMeD$JDfY^V&(DDuXlK# zMSFQYNUMP)Wn*9J(?2pjv=5T6Um9^)-B$ZUsE^ADTJ4}c4Gx|s-iPCoO*0rk7y0NA z69DP$jrh)gcB8x1M2eI1rX??Gn^S72Yi8Tq#C5EgrYTl@m z59q?nCW9lQ&6|SS)(RwRCJfCs+=9DsExQV_>3rP>L0Q*1h%INXlyypT5b>j23WQ6- zV_rkxQVP`gBdT&F!42^FY+B7Ct}s9zsF_%n(7OWs;W1c z4~Zu*^f>5sEpwXwrDcE0l>_o8(bIeL^%SZEvl;7Z&x^!?>fn6xC8cyZ%~1jfP&+tQ zp8m>mA;F`|5HSmS=SWZxt=zf(W9aNddhKLAN4D{b^zu2aDc=mB$vEUgj|z+H$p`3$ zHr1RqpIvQY!3KkW3he$Y!G~5+VOA20d36u1Aetg84)>F3dlW8LbWnkK9c|6Z_WGCa zj%T7MeS#~-u4_5QV-7F+1VwBE3d4lzc6f!m$~!%No=63l{^P5S^s%)JkGu3$j;{YP z7%_rQr@K#LBre9gP9t8C)e@qE$hGn11tbR%(eR__S7M8ogvu zxKwXp`K_vC7GnE(Csxz&5sQoO17d z>w-xGr1G+)hgNro^tqBUc8KAey!r$B5~G&`5>C@2b$hzMqa(#~EEHuO-g9hHngG3b zUm24W{2RL(^p#aD()FX>+hkHZ+hm*`E9N{jvKNK^tNtTqjpm2roFuQtG)20G!CSfA zT)(~qS%kC8aLyO=i*swO6y$o$Ph#H?9^WC++%K((0sFu*o2&Dz+y`DvIy}sw&j<}G z>g83#W_RwZI_YW(drWuJcD6s4|CFBnq&Abib+x;8HYMOUM0>G6=a|h2SHtIRP`1-n z7-|D|Ml~c_g;HVVE&h?D!AoNuv^Ykt2f!a0863bjDMFn5gxL0+Sy6I-lUTJS3_z0`%Z67;0 zuc(ZgD=a}eYOBiJP0gPaS+-HohD$#&lk1VZ(>+r9gI8b_N8WoILC~eXzYyrcj;A{( zp$xK}`w;eprdjyIM&HV=TB3_sU=T^eu=Vc~-2vn%HS#fA#47#n=a@s(* zrsphXBR=9V)U1Ghj~jqv^Xm?PJ1@}^6#?jOe0Mk08Z1g;s=~|EQDNGVZy9coin3gK?XsLZp@$PD!rzbC zaTKJu8BBK)(lQWE%Mh!5e9jIKzQ-s~t!U!8OV};%$~Ea~#x|R+cq?X(&Zk`{_xdx3QvoQJhW++#rP1fj{b?5|S2=dCVDVfo#=~P;F1BNixHc-1IB*B!A z4SSX5L`FF4q7oGpSLPhs;8A8ra%^IECuM4eey^cA$2}R<+FVdtl+Our3qOGvsma4H!p{lvbt*5 zC{j{T)O@k-H0(02JEO5_{$tkeZwmwxtIXdLkYifDseKF^SfRdiLzI#0?AO}ezs*o^ zU4*sMfEfp7fbCN=D8P1HhPyg;m*ir7&WM{}l6I*kcjyXTDT2yKee{))D@WyDcFsn@l43?@SZ#N|F)YseXK%UB zpl`@&JIN`20Y^%EvQr%v2mv&}Jfd=-sXx&Cl30yFf!#y&E(nH}^NBh8oe|0cA)NR7 z^z+L6;|=A^5q>NT%r|J=)!*$0K@}zH6O4x+Qj4L&%6Pa7oU5+FE1-MtySx9 zaf@8$rwj_w-wW+m<{g%4#ze;7>CT57$30?cWOVML=b- zW(ck?_kOZwi*iwI?~gdxJN@GjD~oIv(h*h68mx0$yipyZYXBvrbJS^Qg^thBbL~`a z4=VYxZxr;~$fRPlKE#@0%Oo~L-fI=z_g2g-6zuc%LLY?7J#lId&RMXq%Nr;)H-Sqe zv;E~e?7uFFZAlD7k)OX?79W|QkW;Umjmm=4dk8e?$cw#U1HL43 zhhbPazW#$2Y}vBs>o^9aFgY)6IGw4{gloZo{hT&rE*o%-!F{HUrMQeYB^qSBuuq91 zNk8LsWavP-x_i0Kly4&Tm&?jrX+HQ;Yd5eK! zU0WLuwBoN<%X!YOso@_t_38a6l40H1sT-VM&lmcyguBPib$%ND@iI+>e?17*8@;E- zphBs~@oAIg7{9s~D*xCQoyQ>T9sSExGI`-0-HNuk9?rot_P!#sV}4m*T*g5;wbIf1F&p+cvJ8k%g7XFlwxgdILTi(LAB$;Cw)gSZuVwtFSdi3|&sA|>Rz(T}) zLyJffLcOOP#QiFUzbPki^W#H1-n0C9)Oo?$Yt;&9R$FGqrZ|p(WPsnBx|42 ziU+>Y%$D&t|MN5Jrz1J13iH@Y$m;!aS1Ho>>ps^;g9Q3(MP`pQP~R#qv2Q!CL&7+J zgP^x6T4*e~3`{3kP>A6%?1lT?mp==_F79h#RXAlUpF<3IsEs~Zwx$sqk`mw27Et); zn7kAv!QI#h=HK{&_4^967nhz4DV3+Hl+xoa!^Vy|%x#Nhp03*WqF@pUlKj*%T8y^e zDb)#XVScF?SjW8fbS&8$|Cf&;s0JhWVT{P*oca-^E`IBGg_GUxB;QVjqfO=~-h(s* z$$9-qu(3F59{32~%jjR{vH%^c%OKER#Ospf`uX#?t7AATRq7?2slm{vHBEa3y`Me) zpb5REmDMLUWsC0MuzYizYVaji>k=N%s8IqZ>l`VzF;RC3ta;z(b!DJDiC%41xN1ck zt&nErwW+~I%Ls0X?nIFAUtr9+DcscaJXY9uu%fobXxe_< z1H`%YMQ)^CVRC5XmsT-t?MlwS1#-6*9py4Ru(WJjexDzCpJl`_ChwLfIY z70&@vIVYrk=_l`LF3XKTThifh8SKOq#PVCi!%&oIFo(@Mc$vS=6OHhETAW+#{4y?ETPBXJt{dj;WS>N@0x%ifoT-zIY zCGiqYN3zJ)-pF}n?up(T$(iu{!RFP_ZEi`H?*@aWI3I%d{nsjf&kDX=FQOs`$K4mD zi|6zV8Z$_`-hY$eQ&_{}@?~mT68QDgb5)&NU7bp-2v@S$G}cu#e}!p2KgkVOsNQ z2s5@xuRodM+Io)s{LPz`nN( z2>P=`^9a~6#cK+iF<@}IaN#6ZYG!aJ4O?(w+j8{Qde)S%elWxd=Oot z`=H@jdp&16?}9~D@_4rBF_mnf=+HRo)^BM$b?J&8o}g2#c_haWS_vPf@N~5%tI}k* zM1}W{OZJJBG~sBL;>|dNs+JK!Gbex{NdM>|EvWVVHT&L+qgHLoQHJ(R&EGY8Bc3$3Y{=vr@^OcCAWoA zemgEXjuhdTg7=3uZ()1`es!!k-j9Dbk_{eAhWG52drX@%+wBG!pZ~F ztx4RD`Uwj;P6_gb##{ncnnHe`&6k1tr_{HqN*U%OYJXnvP=DbVPb%w^?zSQb51}?D zp(jmul(A?PH8`--%|N#=+*bQraV0ni%PD3Q8SJZcY9Aprx?jZf`3bc_V-sMB8H6jl zQu;+4X zyXIB8CyJHa8dq)0=Ejc216JMY__a^L(Xj9*IM%=6GzS$;Rqi|THph=kI=F04Okcbm zJ|a$&7kP?Mzf?%7Z@j_u8oa4WJpNZ}oOe#t_*zJsV$lh8L5oaq}I&YyYnR3JUf0U#|7!wh!lkl!h@#9&Kva0CxW*ZzrdU z&VAx~53_yX%K756?}({O!)9!wbLVVT`1^ETdiT72 zy*es`E5z=MhH*n|;<|IoPs!aGi&(|!&R)bUDZ03qU_-h4$2p){9vVrw;B&DJ!smyS zx<$&xe9Opw;N>_L!^r>M8qB253F0h?AlRzl(`gdFE?Nq_@;Z3sG1FN`-DTyqjF)U0 zD*ylqJxN4CRM>Ur0d>sg4B`GiVPmZGeb`oVOb-f-58`&2-1;bV|2WPbSL-f!rn73- zSD}O3w)SHqHaWVKwddmQ-`SwOR^r4P!uB{}-)oWGgx&!=rW%59^Z zmL!CFR(7`-i>z}Va>rJA(m)+f>Ud{uHn!&Gw5+cqN9F^5m&vV&EIPX0VxHjNK!sx5zxJ4x|$HWn&an+8M(P#v1G%_qa#g zD)|D`x|&y8H?GMt(5{}dTayQ`%Gr*NKdKEIW#Xn@WhnZ3fJ2<2G*M;;+hjiHwyJfP zm0LZ_9jk@LyH0Ky9F$!zm_2fzJ97OmC@cQ#x;_CPw#Pnn3!U}xz)!}~Y$60c`{jGz zjE6v5!?u9!2}!*R6=PY=dC|@Pkio5z|H_4_819;SjzjgTqfBzFwQQMv+0Hpw+gCf6 zt+zdO(jogTVwu-^bDGO>SZ^SHYSl8?}Y+ZlAU>u-08B zCyjV}JKI=JKC(B?dBxYV_0AigLfPI*sgL3^zUIbS*0{)K98I77OugDPJm(-frq>e> zvWAPi|HpiN4lZQOV7<|msvir^ejJ?ZFKYSKZ2vKC^c*Z}u130|tOQyUSHS41tQg82 zW=_(su4c2O>*X^SeOx211G4NcsKXTbbY( zVg~ClL!RDWZ*xcww&GQu#o<^F<+eAM>%C2td!SZXE%&yy4z9&l1q71NbsTk9; zPqMj_qw!&89py~K1cwB+p^k6Y!S-cjBfcu5>}31J+&-Pl&|K!hb}?(B09-#9`J4ttX+cRLZyID`{CUyNg)--A&m*=-CsW3i>YRBsIm7nQf-?f+Qb`H9%XX|s%ViF-+If<8Cix%BA+Y;8|xJHvIlYS*i> zFN@DTjN1%`qr|a?wZMGNEhitzklT+2aCUO;LoEODDIB&a8wX0L#6(2{O zutO*9knW7Z9Gn4`xT=53z57IdfkA7sZ!$YjOhRyE>6Hwql|Uq3b$JsyvT*kcJzGc`(!T3gQMy9 zfyJ=$$X~Rps7J*;K6BW=o!7QPRP@1XJ5(V!{7=xDLs0iuT3Oe4XPl0u>B5F`>thuY zo`obH6uihEsBRYB+yj^21B+MwnvpC!7GK4Q?_BN4MSgWAV)5+=akLb07euAWzu#akV;dI%b7K#i%5Q&` z2@u#uZab;BF$$mMh8bo9Ut!newH)>m?C}`e6fv-S-aR7;z`*AmjLPAYqKR@K>gh<@&5>8Fpu7j4H$81!*%Q}{tKO17V^!7BNvyhLQ|NPiv~d=BtD_Q!1C z?qeRwDo@orwh;$5mM`Hd@6|4!wJ%S_*Zy!DMzXl_A$6w!u4Nl9aePS%@ zIgiPY>CNXHd@b94DF-{k_wv5J#CN6THMZK9Rem0y)xMU^HIn76#UOG4b1GgcS9~qk z21%}JoAWDZTRzh*vY6YhQfIsccXSr41hPwx+Gg`rSu67hl{UtmF+Z#QDfq5gN7tt_ z&gIj!cP?jkOYP2Eq&jN}^S>@9mIDpFD)Hd&P#+xA6O>~%PhY<(fgd5gT77v+e-K*E zVD1crOJ#I5fvec6bJ?Bk`YHJ_&Yt6}K1Tee3w5}x@MIf%oYZqqEz@{}Ag$liFzG|GESa5EsBI+`ADSmw@y)>lDaHxKs4aCH>i zZq5$r@;|a4ZnVPNxHHDeV!JA%Y&*BD=dirmRaq+!ecGmRIzEdt?|jbs!to_|S2*ai z!DOEOf@sEVs^*{SkhAF1#Mq`wyV^GfJ3l&uK_&v@XZa!B40y&0{ss*^Bg<*MV z?liCed#JPabc#+&vv&2n7WN7+ex2DJf3G5cdjj^Tzm# zyLnyzH*<8|c5-)v{zDgI>+a*N#Lxc^qyK*Ymebn__y0J#dHqK%qJpr0 zMqmgDIPAZ)iBpmPKoyNVo$QI6|DmspK>iE!f58632MPO!`Tr-(zcu|Al&GpQ6%zJe zvnf-dx^9>Q0G!IYnre6bf#0)1PX%R|`@I^QcX@vNXliVR_%^aeIb+NkHC9;gjm^Zb zd*#QE!{dtNzrnK~w?~e?j-b^^@D(38+oNv7fdwxfK-qWVBp2u7PzNIR% zEPFrFq@$29pH1qj-10d>AK0KkF&FG#2ude$^P;Q$v#&=j0b1DPc0623WqUx?IHEAV z*)1yG$b!%E${UHfZ-FP$*iy}+uc%!%>2MtlmxWk6b^dPzwH(tA1a&vg&jbF{B{V;5 z4|S?LRT^;#PfufktG^eJkIZ|U+0xK{1x7~veNDgO<~z3w5>vYw1?;Ak%T@^(KHaTo ze*k^ces%US}1DFIvAGjb%@exPp>B?o?c?26} zO9OTDL-&h$0m>IF29BO|I!-Y3F;n}8sjd?4cviu(?~^LU7pA2-pG+gNq^GB9DUL@n%AEh zr+oV4N398c+tE#6HwWSd+s>=7t7~l+zx3H>p7Lpsj4>M_8Lfl9*X<9AR?u{}vEF}x zK&f0FVInAn_8s=B`hD{gZvAM?DK!bfB%-D7B~|AMzj+n>OV@uTioGkxZ!zTKtI zjD5P5?6A`B1&PyxeuzpPejn`M&gfmiP)Qbl$DR^ZhQ6-e^7rbzn z%4{WqT4Mi#R(1v|)_U|AGi~m0EW)hCkE%P=V-4-;ak0pM^b+&}yE`PwlOOi`tKZ7^ zh9$aWu1Z0i;Kgtk~tApUc5cz(=&q_ zZ{zY77c2bSuctGUIm(l9ooPwy`7ykDCo@?3w?QYf4o2mzCv)q>AUk=qOis~Q?TSUt z`c1LBCKg4B&BS_6ncN&%vkbTkeOS!6W6B=T{`V@#|MK`t_ic77mL!!c|1p(=9_DVz zAu;BnEH}m9xYqp3@p2}^6|>gYPN<;!Qjt4OoP9?A-wM;ah)!fnB6_=Wr{sOK2AzVy zu*{bSIXKRu;Avl8ZZ#Y!9womLiCK-iL1$_plM0htN8l2ZuX_5M`q0TZoq1h*#I%Q5 z9(|qhhTNk6_1U1Gt)^w|n=hT86J7YA*Ujwns`P}l?St2Ea}nNVa`TWSp~&?Sxh2#v z*Y6lVuMWi#RgYVxU%5N%>Za};R^^1AeT$<+Aj0^sA^q{TrXRMlo+5KR2Su1IJry^2 z0@k0!iG(V;B$_(i#}1@Txpq#!w|rj9l{h&adCW|o60&ah!eG;xah@g{I@OP<5)q@} zlpbJx_FFLhfn)+vz$@CT(xTO`&yyzvkk+%IF5@}Vk{e%M;QD*ya|1T7H4OZ0|EruJ zzZ#1vt?K&~dMYb)rW{Z|i=!qk&{vk+mzds3P$kNAuJU-=k|G#f@73_t*K)>dOerM# zrSF{6R}m~~87nIV^81U;a;^8^zW*@92kkW?6Ed7&S`)=SeQKIcz>ukG*Y`zIK!V44 z^10j^`M$diBl^87q(&;!zxvLLmo_X0N@%u>9*(J~WaGOiG0Pp{%Hqc9Kpp>wA;)HL zYQNraV|c13wo{i1L^^caCQs*W3ef7By*A~sda%^UM8Qzy=p=()Xr=rX0=k`hvrG3(sp&5Vn zx~(s8FYx8`}=P;3n?aA2BgJX&IjWK4mch zSmRKn5Z0#p@?`$p;=Qs6Mf!emsO-aI*Y;eOs$RB_#657$+(Stc-EANoN2!P?+*eHC zA`~@3HY~-URkN^b4%r?|Qfw9aN{RVtEM@QJ0B-HDT^kIni4icC2EUnTV80A>ne#qd zUoKYJF?$5rGS)usjMAvzEpKjm(c9oy$h$v-O;&)oWO^0~(JRNXebR!g($8!AkESuk z?)KEKw{B5!XiA%GF}!ZgEd}vU=9}!q%g;fPU^_fuqbm+iFTYIandXAU4@Fflt=uG~ z-vA8O%;K^H(M)-gJ2;PbVJ9<|ZXfJR(40o~p>^(O;~58OU#$GBmfGX#J`Kr5L_qdZ zAz>FDOXu^oIe{Z3`c!b!S0^` z|7afbh?hvrO3Lu1S3b4bqK=rxUTHOHjvIQ9lPhNyq`O^T^RWLm5K13}!YYx7tw-Oo z8h;gf<}~)oZ!tir>@Gz=MSuL{NqqQzj)6Ilo*4iExY1GLOX}wyiH_9(W!6D!PYGk> z-*aUwpLaf{IB(!qKGwa-nM+KJKi!F$(J+VoMo(yhu9MP+nSMUdf*_cN?sDRHqaAIw19pnvwuB`< zreFL9vAENdde7qH?!E?B-=GH1=SEix#8y<3iS*oRoR^Mz8~)j6xhfzvPF~2cY?-11 zs9&h8AP*G4|9y9G<93@?b39qyElCkT2j_+eAF)+ zrwYCSXBhE~>Fh=$8WuZMVV3|GpW!T?z9&*Y;pVR=lT>e&cxg-!Xm$aGp*y->7VAin5xqw9& zxB;|i5jA=*j;{3=MnBXjZA-JU_|RQ&+ksb4 z&@^j6o6_%e$ORp{giH{qio+95zr+eqd}JnzFM%b|R@nkLQ-5ANsp%l0COd2l=`$yu z({72|Pe!?;RvdBzinwTouKzjkj}n!W>GHC2V@_J(+VQZM5i@tl@mZi2NS5S9DlRVu z{WMTguNNho0R{w@Xfs?A&3B?q>BfP%$~eAZibCABy|=N%&Au~`7@BA5#5;me^6&5C zc&p|rLQ&qhO11R2?e}8PVmd+s(RtP!rNM0axkvr=m8g1#o3 z-&0=|MnS2Ou?>EctnFe{+Z&svZ@ll6UzHS^iO(>ca>o5mz(%H$tQY8h9!^S1!vEPw z51KvOt@s)4eO;i=7gh-=(v;3(SYp)XUYSLUJG0IurAhMS_)MF3o{U<%UFXs|kAfLu zM}%+&&3e!#dn;7PQSt_}L*ML5G&t}0*>7ZUiW$j>_pIbW!iBtNDkz_pFLJ#A7C9m>w8E9;p>aS? z?4oB}GKV~cq*(ZV>Oplce|c*cl_(i?LDMq~JOKOTJa)+oB!;8n+hso2KdGb14F*3; zt*&QsX)tJ6LQXsAlADR7ho+5jW|EstYjkp99kFU}q0YxXnsL(nh^x@^a| zv4CKZyWjw8<;{48HjilhcRuiL0SbjFpcAVe;LlYL7PO(#s!{m0#?8^YJPGC_MSYRi zA>EUvEF}4b55OET)8}Rq#CfFkDoX~HQ_M+sKTCE}rm+kL)4J;ifqXkig;~q>MAS*y zty_u$>r6Qtuoo`h4HY(6ey^?|{95rx_%pi?wZ)UleW@W8H*GivOc?2CW{LNm%k6j{ zlU)r!Fz2?Wk7aKIQYhwO%$`6exJk>8(O2(k6)nWJN2+mbdfCx>jdD<-lz; z8?x-x8!fU=%;UZ=)}Oqpy08!HOs_aUv_Q!xWPj+_KD+s_xE?*sMA-h792TZYA6&-; zZ7Z;`=zD&!hafq&Dh^2y{r$DHphO#& z^ij){+F3=li%F2Wk)*dKer#2p^`7Z9swn+ zeZVFw$$p)~H$qo$((1S>G{Scc9v^bk;awcqhc6fIIt))%MBXTh@ta}{-5zI)ll*nu z6GP>zAc4suA>1IZ8#r4)GzgE7fqnjQC$!* zG3PMHfB>_=xN-T7Ct^Wc$br>&vK)vn$Ui-9nF7AO#e z-XH5L_)N9aeG{MlE>AoL@Xj3ovfVt=Tt3zIaF^A(7Wy8qPt}q;Z23*w6?9-5Q>uJd zXa@2JroWu2J?i=MQhEFb)++d*w@v)D@`^53sY;0k1UW@G^ZY!s$}rJuOxmH}_!JLu zmI%`CeQgf;J?9Kd&aT1@ijY1O2e?iO+7I1+$ks#opl?kxF1WAsU~9#0;Z(o{=KAp$ z-rf3Z(_v!A!ncC=)#$^Fq*&`&+5SH1QV=!0tN-|;j_fSEtsFnYO2s@;SN0@%P`X&m z$*=(Nn%=(Ukx8i8{pz=*gn0YWfdiZLwq8bWkJtCn2hBKgTF#W2xNDBw+Z2IEvA&;R z7G_H%{GkDzt8*d-lX2h5jwFJYSDM77WjX6gBHQytEFQ-QXEWd8MKun+r-NGj^e727 zAs$y|p1oe;I-xl)?zvmXmpJ64k!xPQRwbTc|{uWSdC4h2q7>{Fv z?XAY(Z;rCC)1t>@Bq-B=W>BOq7E{lJE;w!0Q>e~c%-!!QZh7f$#)(x7=i7IB*4%;` z;jZ)W8VB!qT1YmvJ`kDsa_Q?f2=Vra$q;{XGVQIS#0wnKpxN`wOru2MJJe#IF9X;q z<)z`9f7-IXnfhlu$;|zr8!)P{^(LJTELmy4D*xgIA_BT+>|>b{dJO`+b|yI2lNOCN zx_bTWvTn!j+fhU|cYsZ4-rURUuY32C zlIR{v{b6Riy8Gf1wpF~WIfGE1!z&M3zr3!M(K2n}955c~lOZ`Dp&$a!1kn81VSd0Z zSmJJ2#=z-whe_h4*S(>@5lCl#FgQhVxj+fw961W<_HYK-1Kuo5nub~5+0b6Qepk;X zO2wt7us?+4lR4Mar;mBp?3rjlGDKA!P|5{^n5kP%VWiI#}>dZ+e)i?17% z&GA~pQQ;G8XDy{CY$T?pzt^W(FRQPH@~~G=J&fC%5Fa$S00^(*_Oq>8P7HrcaV7v_ zkO5s^xP{XZlby17}umd-vcP3vxdWq8o^n9_H--dye-IqLz@&Up;?3cz*(TVI(Q| z;$(M#DkK?49)kU|PN{PIk@WPIDAJAuvaH_mm9pA~Czz!$pAYCf{-*R0dpwS507MwViy!i#ti<82ChkTRB+UuTUQE(mYcwL&}-^`Wtuj zvQ^*tG>*ZHnlAG3vi$2w@96y$7>FU~luF)E9##5%((IZmV1x?YwAh-*6^8c3LuUtN zNU10}v-1kUr?@EDpsVKTMJ^;7{+`{pNu^rK5LyM^yQoNG)3HyTz*P{c(L|mT5 zUUN{glOS0R@EWSR0XWONji&;(#qZZWCB)GoQa>WL4Wo4i_E&9dUaM~y2ZX$qoclhR?7O<3k{mZ)JC*j{RHr%v}_Kig+rWe{}cnI5su zyaxVh4(%&}Z1`#Gy%H8Qt=)dAF84X?tF<@MDwdGzsl!njNvL+x;%hW^y4P7!_b}a) z|3UA>N7J@_*{(@`*JZ(c^AzI?@yH6DwOm{EG~D*G8bKIpNmI{-=n#ucH`D5RW&39T zXtL3+SQvwx?^%2IyVZ?4i2{bx-QE4(GJBj)i#f0XncKV^{d}`9&kb4cGXLW&nmjGV z8q*1<=*aqE0F93n5*I1$Z7R`d+tJbexGN4Y5R-e|3byjG#4lt{*Whx3dm6a{V)%r4 z45{X6RHdsWybOmwLGm7xx0s1IN^$HAP+!<|g3(lHK&qVh`t5EV67q{e5`c$NufSQf z2snd_@xeARGs&d2TP(K^d*lztS%5VCIT^8vesNoW;m zemeE(bT;~{IzC^f2rED-|CNYnw^)xR533_c-sx*Ev@sHkJ|PFnP3REA%%I!SelA|= zF5}GC;pYV15BX}u2NaMfu0-n{4-Zc$HCbV#ubA}&W})qEYMuF|oPZ4_9nfo0FCpD0 z1DqhHrtZd;U$+`AOPSz=CXkqD4Swz-6>jH=8an0lt!99J%DZAitTxf4k?2&Kkc{nZ zLXH#n{Tbv3b(BSxW`lL^HoFNmnELJ0&n>%3O&wvC3376YE_S633Ak!pgUFkI&jQF0Yhp*Hx$ zq$zUOaq=m8<1Y`m5QFRD`vNGv2!!z)-{rjfXTL|F5xSn$Bj zI`s*YjxuN=iF6u?L`Ta#M+>S();D(veI^~Cj4xCM#5bCV6smDFRU_cgB40#K@hU98 xgjHC=sWhIn5cH+DeEL1{q2}1`9((U!(qI!3>048g6#qQR>E1TfELXRQ_&;S4Mri;5 literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon@3x.png b/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1c3055906dcc5b99232af973ca41a0f51606499f GIT binary patch literal 17095 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 Sg=_*H7vbsZ=d#Wzp$PzT4JaZ2 literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/Contents.json b/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9d284b1 --- /dev/null +++ b/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,72 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "AceBoxIcon@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "AceBoxIcon@3x.png", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "AceBoxIcon-76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "AceBoxIcon-76@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tools/AceBox/AceBox/Images.xcassets/first.imageset/Contents.json b/tools/AceBox/AceBox/Images.xcassets/first.imageset/Contents.json new file mode 100644 index 0000000..33a7451 --- /dev/null +++ b/tools/AceBox/AceBox/Images.xcassets/first.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "first.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tools/AceBox/AceBox/Images.xcassets/first.imageset/first.pdf b/tools/AceBox/AceBox/Images.xcassets/first.imageset/first.pdf new file mode 100644 index 0000000000000000000000000000000000000000..47d911dea647d55983671ead4d08b6f6b3600715 GIT binary patch literal 2465 zcmai03se(l7FLvisY+L#f-EBsK`11Xkc1=%MIujmB|xQ!>5vQ%APFP`Mlf5nSPOKE z2-^C>7DZkM!J;Da5{kfrC?Kvp3J41-3shFXvhuJqKo*oer*r0H{{P-P_x0cTzLzjD!bE z0qT;#Q7l4Gy%fMoXJaKT`@{5#R(MOqJPwQifv8iK6A%Ot9L14h2`38T!2s4PM=1!< zmL06}VYAA|ay#jZRs>HpA%X+eQW4rufWU%d1w5GTy!X#LeZsF_+~ccZmn3Fi)v^Z; zIG;?uU*yLLEYs61tjD>gXOFvSWsh{48xJvPNqKrIJtMdCz2cA2aC7TF?b@K`V!Lw- zE;zpH&ApqhoRjAHt}gK}>(qAc8dvrkD31*`<5<%C(&4_LqhQ3-GOf8~n^leG?+-@@^pjPa$J2gW@O)!b9hdTJ zTauyIJ&~rqeEZC1p9dWgx7{_WRc2=drMO=wcT7B{Zd58z`d)r_36r4V<6PGkCjpGfbnVMtm@;b}F!T?)Qav$_y7H5T;Mf!T}M zWxP9TNqrV?e5;b|pWd3^u2KAatk&3aDB@0 zZBaQNdCZ2#fblzYZnRCCjQ-GQWb-s8bX&<)?SxnUGdDYVFVk`xIf7@g3~$DX`H71_;r5OSZz1p`$_8y_9 z{;MJJ+n=>7Ewg;GnGHoz)&ID0z@F2!e$F7cWQ?d6s(!VY)_Gw})xCyMvsD={5i&H* zAIr_ACo8;Se6<*!-mm9Am79Iz^RVlc?%S5sg|E*SyIV{dd9{Mpf#d3cih5WKt=%ps zBEo)bt8EjmeCFYJRYU|b7d`p+-V|X2wOCYtyLP6t=!WH-kgdf0A};ytPfZiCwVPx{ z`g;zpe{8a4RQxQUwVU02<4X3w|9h;}XjhGWquqn{vVqq8g{*}BQF9=ybe_TM*!M=rFs1pN)yzctIXAoicsCe6>fit>wgZ#vp^hZOY0`J`rx zwdSK?GwR_xm9;5XjH|vf{O+Yg-)z;s*xt>;-vU`D-_SK<=~4eEVQkV~57{vyH6ebu>DqwE~Mx_A31Lg~$ zy`i52ew?GEluE%AN>ju*5z~dx2QQLP-G+E>o|En2+s&<^4*d zWD+<8PXs_Jp7_5Dpi(Gg3J?M;%Rn0{dcxQRh!ip+iHJ_e`!bM1MGxwI8Iedr+x>wI zq@&04fsADHfBccq^gpm8Q_u-~Uj|Z$YwSR(^_mzUb!}Xb2Cj`uqphg}v_Y%?Fs=;= zWq3s{hy)Tu!ji@RJsd$C+G{F6V2j1*Xk+7xo|LO7M2yb)(wc=%x-AclP9pLsbTF7m tf?*P!2EjJu5MD57P32Q4pdJ3tO_shCDT2=K;$ebx8ymcd$v!V9{2$sQiO>K5 literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox/Images.xcassets/second.imageset/Contents.json b/tools/AceBox/AceBox/Images.xcassets/second.imageset/Contents.json new file mode 100644 index 0000000..03bd9c9 --- /dev/null +++ b/tools/AceBox/AceBox/Images.xcassets/second.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "second.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tools/AceBox/AceBox/Images.xcassets/second.imageset/second.pdf b/tools/AceBox/AceBox/Images.xcassets/second.imageset/second.pdf new file mode 100644 index 0000000000000000000000000000000000000000..401614e288b4b160471c2776bed6f09762af3e1c GIT binary patch literal 2423 zcmai02~-nz8dqq7rWU#)x2z)&iMWtV?gK$2a)?|BP!TbkV}J-Gl1wmy+3G9S0=uOY zwCjai6uBOPMMdNiN`VDYKwLQr2#W^`R93*Ua=0^)EGYY4=grIf|KIohziYnv{elnR zdN_hk6db<(+3RPcxs!iut8c(j0TLh=9mY931H^rhEE0|aXo!dh5Iv+ZFr+}9F+v#P zLSnfD0$f~hN>~92V{z)WJA&2)5rW!|I?;o?oI*%zejJiuY>hFLQwKlAa9O+PnPh#% zJp~JAfs-De6u@;{cREMs}D-sGib_4>50m8_|Uj-zC0m@Qx zJV+^5Da4Qxpf3sBtKZs<_aI$Cb1T+h<->yL^rfiGNelYkqgC3#SqVP_iy*_RPcbjH)xYf zvYdC-)D_t8c{=5%;$VJQxs_#61J*kuXMC?|&PbPo-7uSxoNr~&J94|gKk+03JGXXM zx4w~=^VUzWqQveu_ilRgPdgNNdnLZCH`=;w91}cP5ihdm*B_jI+rk=Pz2Lk!)XUu| zkls3P5&YHJ!t0kF+MUVBHOAx)a zy|JxHNd37z*~b5#%*0w_F|#4?erNP;pG`Fevoq2%?9Y>%Cmzv1(ks;aPIGaiy1mhU zr{7lB^Mem&`QK{b{uiDC zLD8muY(FNk{YdV|zO#o_VB%);8|~Bh(Z4p?GM}g-HN2;q7~YNl-lD~HZ$taYw$Fzbn6c?c5eo=@`i>()el#qwB)hI-gp0 ztsw@dh-I5NJkk)RCoBC`L8ffKfY)=oG=#4LA9TO6eA}9~@a6dupB+=S{%s&NY}^0GY`hAqod)uxXHitrN%bWOJohV>t?!&Z#d4y^7J@=Oh`HV zee**4j>xRUd)|D0^I-B#<`m1-5PO{)!v(q?ecFYqr_8Q{+z7#n0uFbq%_?hZ-Ck(6NRn=vDS7Nb1Xxx_)9`!i- zGR>av*PJ+P_AGO*a_$FbtCCISg5PK44p&W#t$)+HVcxpR9LAL%_Pv$p`0tO*sYZD0 zCG3-ipr4WoVbjpw%Nf^r^rnWcDcjumgBPEjO;NM6QtZ8wU#0rjHx5zs%CahF4$W*U zxu!q8kYP+>v!BNPVIRJUGIWU@7qVvx2VZDw4gV8%z%bjpF#aF(W|PmliwlakuRq>= zhaCRc^R!7T)#Twb0{!Tns=CxGcGX|leErg`f3|v0eBXxHU&6Sj-_>zOL!!d+j5Xt* zPS;rWd^zEF{5d5%)nNK=)zFJ8Uc=aQKD%UK)_TNes1Gh{SD*Mb_@O` z7*zs9Uq~Vq?v|^8FcM-yLGMKzR3YFB0z@CFM2X-dio%Gu6&MJj=I?uS7sA3AdE^p8 zE49$PjJzPIJwfn;jso7X2#jynr3dO@p5QAK1O9wqKLC=PkQjj~p#n|-5O`ihbTzzu zL{}2QEe28pJYfVZRW56FL`LvO&|C^1Th{0}hQMW$Ng$QPpnzlwnMnf=kVy8(y==L% zLMa>r0gELdT + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + com.tencent.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UIStatusBarTintParameters + + UINavigationBar + + Style + UIBarStyleDefault + Translucent + + + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/tools/AceBox/AceBox/SecondViewController.swift b/tools/AceBox/AceBox/SecondViewController.swift new file mode 100644 index 0000000..8b7dd8f --- /dev/null +++ b/tools/AceBox/AceBox/SecondViewController.swift @@ -0,0 +1,25 @@ +// +// SecondViewController.swift +// AceBox +// +// Created by Ace on 4/30/15. +// Copyright (c) 2015 Ace. All rights reserved. +// + +import UIKit + +class SecondViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + +} + diff --git a/tools/AceBox/AceBoxTests/AceBoxTests.swift b/tools/AceBox/AceBoxTests/AceBoxTests.swift new file mode 100644 index 0000000..058e114 --- /dev/null +++ b/tools/AceBox/AceBoxTests/AceBoxTests.swift @@ -0,0 +1,36 @@ +// +// AceBoxTests.swift +// AceBoxTests +// +// Created by Ace on 4/30/15. +// Copyright (c) 2015 Ace. All rights reserved. +// + +import UIKit +import XCTest + +class AceBoxTests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + XCTAssert(true, "Pass") + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measureBlock() { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/tools/AceBox/AceBoxTests/Info.plist b/tools/AceBox/AceBoxTests/Info.plist new file mode 100644 index 0000000..82c8783 --- /dev/null +++ b/tools/AceBox/AceBoxTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + com.tencent.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/tools/comm/dec2hex.py b/tools/comm/dec2hex.py new file mode 100755 index 0000000..0ce56fc --- /dev/null +++ b/tools/comm/dec2hex.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------ +# File Name: dec2hex.py +# Author: Zhao Yanbai +# Tue Apr 28 15:00:56 2015 +# Description: none +# ------------------------------------------------------------------------ + +while True : + n = raw_input("Input Decimal: ") + hexs = "{0:X}".format(int(n)) + print hexs -- 2.44.0