[
  {
    "path": ".gitignore",
    "content": ".DS_Store\n\n*.pbxuser\n*.perspective\n*.perspectivev3\n\n*.mode1v3\n*.mode2v3\n\n*.xcodeproj/xcuserdata/*.xcuserdatad\n\n*.xccheckout\n*.xcuserdatad\n\nbuild/\n\nPods\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Code of Conduct\nFacebook has adopted a Code of Conduct that we expect project participants to adhere to. Please [read the full text](https://code.fb.com/codeofconduct) so that you can understand what actions will and will not be tolerated."
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\nWe want to make contributing to Shimmer as easy and transparent as\npossible. If you run into problems, please open an issue. We also actively welcome pull requests.\n\n## Pull Requests\n1. Fork the repo and create your branch from `master`.\n2. If you've added code that should be tested, add tests\n3. If you've changed APIs, update the documentation. \n4. Ensure the test suite passes. \n5. Make sure your code lints. \n6. If you haven't already, complete the Contributor License Agreement (\"CLA\").\n\n## Contributor License Agreement (\"CLA\")\nIn order to accept your pull request, we need you to submit a CLA. You only need\nto do this once to work on any of Facebook's open source projects.\n\nComplete your CLA here: <https://code.facebook.com/cla>\n\n## Issues  \nWe use GitHub issues to track public bugs. Please ensure your description is\nclear and has sufficient instructions to be able to reproduce the issue.\n\n## Coding Style  \n* 2 spaces for indentation rather than tabs\n\n## License\nBy contributing to Shimmer you agree that your contributions will be licensed\nunder its BSD license.\n"
  },
  {
    "path": "Examples/Examples.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t077ACA6E1CBD6B7200B3A708 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 077ACA6D1CBD6B7200B3A708 /* UIKit.framework */; };\n\t\tEC45CACE18ADC7CE0063DD11 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC45CACD18ADC7CE0063DD11 /* Foundation.framework */; };\n\t\tEC45CAD018ADC7CE0063DD11 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC45CACF18ADC7CE0063DD11 /* CoreGraphics.framework */; };\n\t\tEC45CAD818ADC7CE0063DD11 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EC45CAD618ADC7CE0063DD11 /* InfoPlist.strings */; };\n\t\tEC45CADA18ADC7CE0063DD11 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EC45CAD918ADC7CE0063DD11 /* main.m */; };\n\t\tEC45CADE18ADC7CE0063DD11 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EC45CADD18ADC7CE0063DD11 /* AppDelegate.m */; };\n\t\tEC45CAE118ADC7CE0063DD11 /* Main_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC45CADF18ADC7CE0063DD11 /* Main_iPhone.storyboard */; };\n\t\tEC45CAE418ADC7CE0063DD11 /* Main_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC45CAE218ADC7CE0063DD11 /* Main_iPad.storyboard */; };\n\t\tEC45CAE718ADC7CE0063DD11 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC45CAE618ADC7CE0063DD11 /* ViewController.m */; };\n\t\tEC45CAE918ADC7CE0063DD11 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC45CAE818ADC7CE0063DD11 /* Images.xcassets */; };\n\t\tEC45CB0418ADC7E80063DD11 /* libFBShimmering.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EC45CB0318ADC7E80063DD11 /* libFBShimmering.a */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t077ACA6D1CBD6B7200B3A708 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };\n\t\tEC45CACA18ADC7CE0063DD11 /* Logo-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"Logo-iOS.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tEC45CACD18ADC7CE0063DD11 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };\n\t\tEC45CACF18ADC7CE0063DD11 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };\n\t\tEC45CAD518ADC7CE0063DD11 /* Logo-iOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"Logo-iOS-Info.plist\"; sourceTree = \"<group>\"; };\n\t\tEC45CAD718ADC7CE0063DD11 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\tEC45CAD918ADC7CE0063DD11 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\tEC45CADB18ADC7CE0063DD11 /* Logo-iOS-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"Logo-iOS-Prefix.pch\"; sourceTree = \"<group>\"; };\n\t\tEC45CADC18ADC7CE0063DD11 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = \"<group>\"; };\n\t\tEC45CADD18ADC7CE0063DD11 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = \"<group>\"; };\n\t\tEC45CAE018ADC7CE0063DD11 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPhone.storyboard; sourceTree = \"<group>\"; };\n\t\tEC45CAE318ADC7CE0063DD11 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPad.storyboard; sourceTree = \"<group>\"; };\n\t\tEC45CAE518ADC7CE0063DD11 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = \"<group>\"; };\n\t\tEC45CAE618ADC7CE0063DD11 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = \"<group>\"; };\n\t\tEC45CAE818ADC7CE0063DD11 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = \"<group>\"; };\n\t\tEC45CB0318ADC7E80063DD11 /* libFBShimmering.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libFBShimmering.a; path = \"../../../Library/Developer/Xcode/DerivedData/FBShimmering-amnevtoymcgzwwazjmzbwvbeduoi/Build/Products/Debug-iphoneos/libFBShimmering.a\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tEC45CAC718ADC7CE0063DD11 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t077ACA6E1CBD6B7200B3A708 /* UIKit.framework in Frameworks */,\n\t\t\t\tEC45CB0418ADC7E80063DD11 /* libFBShimmering.a in Frameworks */,\n\t\t\t\tEC45CAD018ADC7CE0063DD11 /* CoreGraphics.framework in Frameworks */,\n\t\t\t\tEC45CACE18ADC7CE0063DD11 /* Foundation.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tEC45CABF18ADC7920063DD11 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tECC5761518ADEDFC00C2BFB8 /* Logo */,\n\t\t\t\tEC45CACC18ADC7CE0063DD11 /* Frameworks */,\n\t\t\t\tEC45CACB18ADC7CE0063DD11 /* Products */,\n\t\t\t);\n\t\t\tindentWidth = 2;\n\t\t\tsourceTree = \"<group>\";\n\t\t\ttabWidth = 2;\n\t\t};\n\t\tEC45CACB18ADC7CE0063DD11 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEC45CACA18ADC7CE0063DD11 /* Logo-iOS.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEC45CACC18ADC7CE0063DD11 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEC45CB0318ADC7E80063DD11 /* libFBShimmering.a */,\n\t\t\t\tEC45CACD18ADC7CE0063DD11 /* Foundation.framework */,\n\t\t\t\tEC45CACF18ADC7CE0063DD11 /* CoreGraphics.framework */,\n\t\t\t\t077ACA6D1CBD6B7200B3A708 /* UIKit.framework */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEC45CAD318ADC7CE0063DD11 /* Logo-iOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEC45CADC18ADC7CE0063DD11 /* AppDelegate.h */,\n\t\t\t\tEC45CADD18ADC7CE0063DD11 /* AppDelegate.m */,\n\t\t\t\tEC45CADF18ADC7CE0063DD11 /* Main_iPhone.storyboard */,\n\t\t\t\tEC45CAE218ADC7CE0063DD11 /* Main_iPad.storyboard */,\n\t\t\t\tEC45CAE518ADC7CE0063DD11 /* ViewController.h */,\n\t\t\t\tEC45CAE618ADC7CE0063DD11 /* ViewController.m */,\n\t\t\t\tEC45CAE818ADC7CE0063DD11 /* Images.xcassets */,\n\t\t\t\tEC45CAD418ADC7CE0063DD11 /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = \"Logo-iOS\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEC45CAD418ADC7CE0063DD11 /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEC45CAD518ADC7CE0063DD11 /* Logo-iOS-Info.plist */,\n\t\t\t\tEC45CAD618ADC7CE0063DD11 /* InfoPlist.strings */,\n\t\t\t\tEC45CAD918ADC7CE0063DD11 /* main.m */,\n\t\t\t\tEC45CADB18ADC7CE0063DD11 /* Logo-iOS-Prefix.pch */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tECC5761518ADEDFC00C2BFB8 /* Logo */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEC45CAD318ADC7CE0063DD11 /* Logo-iOS */,\n\t\t\t);\n\t\t\tname = Logo;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tEC45CAC918ADC7CE0063DD11 /* Logo-iOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = EC45CAFD18ADC7CE0063DD11 /* Build configuration list for PBXNativeTarget \"Logo-iOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tEC45CAC618ADC7CE0063DD11 /* Sources */,\n\t\t\t\tEC45CAC718ADC7CE0063DD11 /* Frameworks */,\n\t\t\t\tEC45CAC818ADC7CE0063DD11 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"Logo-iOS\";\n\t\t\tproductName = \"Logo-iOS\";\n\t\t\tproductReference = EC45CACA18ADC7CE0063DD11 /* Logo-iOS.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tEC45CAC018ADC7920063DD11 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 0510;\n\t\t\t};\n\t\t\tbuildConfigurationList = EC45CAC318ADC7920063DD11 /* Build configuration list for PBXProject \"Examples\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = EC45CABF18ADC7920063DD11;\n\t\t\tproductRefGroup = EC45CACB18ADC7CE0063DD11 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tEC45CAC918ADC7CE0063DD11 /* Logo-iOS */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tEC45CAC818ADC7CE0063DD11 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tEC45CAE418ADC7CE0063DD11 /* Main_iPad.storyboard in Resources */,\n\t\t\t\tEC45CAE918ADC7CE0063DD11 /* Images.xcassets in Resources */,\n\t\t\t\tEC45CAE118ADC7CE0063DD11 /* Main_iPhone.storyboard in Resources */,\n\t\t\t\tEC45CAD818ADC7CE0063DD11 /* InfoPlist.strings in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tEC45CAC618ADC7CE0063DD11 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tEC45CAE718ADC7CE0063DD11 /* ViewController.m in Sources */,\n\t\t\t\tEC45CADE18ADC7CE0063DD11 /* AppDelegate.m in Sources */,\n\t\t\t\tEC45CADA18ADC7CE0063DD11 /* main.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\tEC45CAD618ADC7CE0063DD11 /* InfoPlist.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tEC45CAD718ADC7CE0063DD11 /* en */,\n\t\t\t);\n\t\t\tname = InfoPlist.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEC45CADF18ADC7CE0063DD11 /* Main_iPhone.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tEC45CAE018ADC7CE0063DD11 /* Base */,\n\t\t\t);\n\t\t\tname = Main_iPhone.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEC45CAE218ADC7CE0063DD11 /* Main_iPad.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tEC45CAE318ADC7CE0063DD11 /* Base */,\n\t\t\t);\n\t\t\tname = Main_iPad.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tEC45CAC418ADC7920063DD11 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 6.0;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tEC45CAC518ADC7920063DD11 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 6.0;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tEC45CAFE18ADC7CE0063DD11 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR)\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"Logo-iOS/Logo-iOS-Prefix.pch\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = \"Logo-iOS/Logo-iOS-Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 6.0;\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(USER_LIBRARY_DIR)/Developer/Xcode/DerivedData/FBShimmering-amnevtoymcgzwwazjmzbwvbeduoi/Build/Products/Debug-iphoneos\",\n\t\t\t\t);\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tEC45CAFF18ADC7CE0063DD11 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR)\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"Logo-iOS/Logo-iOS-Prefix.pch\";\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = \"Logo-iOS/Logo-iOS-Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 6.0;\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(USER_LIBRARY_DIR)/Developer/Xcode/DerivedData/FBShimmering-amnevtoymcgzwwazjmzbwvbeduoi/Build/Products/Debug-iphoneos\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tEC45CAC318ADC7920063DD11 /* Build configuration list for PBXProject \"Examples\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tEC45CAC418ADC7920063DD11 /* Debug */,\n\t\t\t\tEC45CAC518ADC7920063DD11 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tEC45CAFD18ADC7CE0063DD11 /* Build configuration list for PBXNativeTarget \"Logo-iOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tEC45CAFE18ADC7CE0063DD11 /* Debug */,\n\t\t\t\tEC45CAFF18ADC7CE0063DD11 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = EC45CAC018ADC7920063DD11 /* Project object */;\n}\n"
  },
  {
    "path": "Examples/Examples.xcodeproj/xcshareddata/xcschemes/Logo-iOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1110\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"EC45CAC918ADC7CE0063DD11\"\n               BuildableName = \"Logo-iOS.app\"\n               BlueprintName = \"Logo-iOS\"\n               ReferencedContainer = \"container:Examples.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"EC45CAC918ADC7CE0063DD11\"\n            BuildableName = \"Logo-iOS.app\"\n            BlueprintName = \"Logo-iOS\"\n            ReferencedContainer = \"container:Examples.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"EC45CAC918ADC7CE0063DD11\"\n            BuildableName = \"Logo-iOS.app\"\n            BlueprintName = \"Logo-iOS\"\n            ReferencedContainer = \"container:Examples.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Examples/LICENSE",
    "content": "This file provided by Facebook is for non-commercial testing and evaluation\npurposes only.  Facebook reserves all rights not expressly granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nFACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "Examples/Logo-iOS/AppDelegate.h",
    "content": "/**\n  Copyright (c) 2014-present, Facebook, Inc.\n  All rights reserved.\n\n  This source code is licensed under the BSD-style license found in the\n  LICENSE file in the root directory of this source tree. An additional grant\n  of patent rights can be found in the PATENTS file in the same directory.\n */\n\n#import <UIKit/UIKit.h>\n\n@interface AppDelegate : UIResponder <UIApplicationDelegate>\n\n@property (strong, nonatomic) UIWindow *window;\n\n@end\n"
  },
  {
    "path": "Examples/Logo-iOS/AppDelegate.m",
    "content": "/**\n  Copyright (c) 2014-present, Facebook, Inc.\n  All rights reserved.\n\n  This source code is licensed under the BSD-style license found in the\n  LICENSE file in the root directory of this source tree. An additional grant\n  of patent rights can be found in the PATENTS file in the same directory.\n */\n\n#import \"AppDelegate.h\"\n\n@implementation AppDelegate\n\n- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n{\n  return YES;\n}\n\n@end\n"
  },
  {
    "path": "Examples/Logo-iOS/Base.lproj/Main_iPad.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"4514\" systemVersion=\"13B3116\" targetRuntime=\"iOS.CocoaTouch.iPad\" propertyAccessControl=\"none\" useAutolayout=\"YES\" initialViewController=\"BYZ-38-t0r\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"3747\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"tne-QT-ifu\">\n            <objects>\n                <viewController id=\"BYZ-38-t0r\" customClass=\"ViewController\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Udy-qk-fWK\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"IVD-gd-LhQ\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"8bC-Xf-vdC\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"768\" height=\"1024\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n                    </view>\n                    <nil key=\"simulatedStatusBarMetrics\"/>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"dkx-z0-nzr\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\" statusBarStyle=\"blackOpaque\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "Examples/Logo-iOS/Base.lproj/Main_iPhone.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"4514\" systemVersion=\"13B3116\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" initialViewController=\"vXZ-lx-hvc\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"3747\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"ufC-wZ-h7g\">\n            <objects>\n                <viewController id=\"vXZ-lx-hvc\" customClass=\"ViewController\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Zp7-iv-QNL\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"Rd3-tm-V1t\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"kh9-bI-dsS\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"568\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n                    </view>\n                    <nil key=\"simulatedStatusBarMetrics\"/>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"x5A-6p-PRh\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "Examples/Logo-iOS/Images.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "Examples/Logo-iOS/Images.xcassets/LaunchImage.launchimage/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"orientation\" : \"portrait\",\n      \"idiom\" : \"iphone\",\n      \"extent\" : \"full-screen\",\n      \"minimum-system-version\" : \"7.0\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"orientation\" : \"portrait\",\n      \"idiom\" : \"iphone\",\n      \"subtype\" : \"retina4\",\n      \"extent\" : \"full-screen\",\n      \"minimum-system-version\" : \"7.0\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"orientation\" : \"portrait\",\n      \"idiom\" : \"ipad\",\n      \"extent\" : \"full-screen\",\n      \"minimum-system-version\" : \"7.0\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"orientation\" : \"landscape\",\n      \"idiom\" : \"ipad\",\n      \"extent\" : \"full-screen\",\n      \"minimum-system-version\" : \"7.0\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"orientation\" : \"portrait\",\n      \"idiom\" : \"ipad\",\n      \"extent\" : \"full-screen\",\n      \"minimum-system-version\" : \"7.0\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"orientation\" : \"landscape\",\n      \"idiom\" : \"ipad\",\n      \"extent\" : \"full-screen\",\n      \"minimum-system-version\" : \"7.0\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "Examples/Logo-iOS/Images.xcassets/Wallpaper.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\",\n      \"filename\" : \"1800126_10152272440319357_261758585_o.png\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Examples/Logo-iOS/Logo-iOS-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleDisplayName</key>\n\t<string>${PRODUCT_NAME}</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.facebook.${PRODUCT_NAME:rfc1034identifier}</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>${PRODUCT_NAME}</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main_iPhone</string>\n\t<key>UIMainStoryboardFile~ipad</key>\n\t<string>Main_iPad</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UIStatusBarHidden</key>\n\t<true/>\n\t<key>UIStatusBarStyle</key>\n\t<string></string>\n\t<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationPortraitUpsideDown</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "Examples/Logo-iOS/Logo-iOS-Prefix.pch",
    "content": "//\n//  Prefix header\n//\n//  The contents of this file are implicitly included at the beginning of every source file.\n//\n\n#import <Availability.h>\n\n#ifndef __IPHONE_5_0\n#warning \"This project uses features only available in iOS SDK 5.0 and later.\"\n#endif\n\n#ifdef __OBJC__\n  #import <UIKit/UIKit.h>\n  #import <Foundation/Foundation.h>\n#endif\n"
  },
  {
    "path": "Examples/Logo-iOS/ViewController.h",
    "content": "/**\n  Copyright (c) 2014-present, Facebook, Inc.\n  All rights reserved.\n\n  This source code is licensed under the BSD-style license found in the\n  LICENSE file in the root directory of this source tree. An additional grant\n  of patent rights can be found in the PATENTS file in the same directory.\n */\n\n#import <UIKit/UIKit.h>\n\n@interface ViewController : UIViewController\n\n@end\n"
  },
  {
    "path": "Examples/Logo-iOS/ViewController.m",
    "content": "/**\n  Copyright (c) 2014-present, Facebook, Inc.\n  All rights reserved.\n\n  This source code is licensed under the BSD-style license found in the\n  LICENSE file in the root directory of this source tree. An additional grant\n  of patent rights can be found in the PATENTS file in the same directory.\n */\n\n#import \"ViewController.h\"\n\n#import <FBShimmering/FBShimmeringView.h>\n\n@interface ViewController ()\n\n@end\n\n@implementation ViewController\n{\n  UIImageView *_wallpaperView;\n  FBShimmeringView *_shimmeringView;\n  UILabel *_logoLabel;\n  \n  UILabel *_valueLabel;\n  \n  CGFloat _panStartValue;\n  BOOL _panVertical;\n}\n\n- (BOOL)prefersStatusBarHidden\n{\n  return YES;\n}\n\n- (void)viewDidLoad\n{\n  [super viewDidLoad];\n  self.view.backgroundColor = [UIColor blackColor];\n  \n  _wallpaperView = [[UIImageView alloc] initWithFrame:self.view.bounds];\n  _wallpaperView.image = [UIImage imageNamed:@\"Wallpaper\"];\n  _wallpaperView.contentMode = UIViewContentModeScaleAspectFill;\n  [self.view addSubview:_wallpaperView];\n  \n  CGRect valueFrame = self.view.bounds;\n  valueFrame.size.height = valueFrame.size.height * 0.25;\n  \n  _valueLabel = [[UILabel alloc] initWithFrame:valueFrame];\n  _valueLabel.font = [UIFont fontWithName:@\"HelveticaNeue-UltraLight\" size:32.0];\n  _valueLabel.textColor = [UIColor whiteColor];\n  _valueLabel.textAlignment = NSTextAlignmentCenter;\n  _valueLabel.numberOfLines = 0;\n  _valueLabel.alpha = 0.0;\n  _valueLabel.backgroundColor = [UIColor clearColor];\n  [self.view addSubview:_valueLabel];\n  \n  _shimmeringView = [[FBShimmeringView alloc] init];\n  _shimmeringView.shimmering = YES;\n  _shimmeringView.shimmeringBeginFadeDuration = 0.3;\n  _shimmeringView.shimmeringOpacity = 0.3;\n  [self.view addSubview:_shimmeringView];\n  \n  _logoLabel = [[UILabel alloc] initWithFrame:_shimmeringView.bounds];\n  _logoLabel.text = @\"Shimmer\";\n  _logoLabel.font = [UIFont fontWithName:@\"HelveticaNeue-UltraLight\" size:60.0];\n  _logoLabel.textColor = [UIColor whiteColor];\n  _logoLabel.textAlignment = NSTextAlignmentCenter;\n  _logoLabel.backgroundColor = [UIColor clearColor];\n  _shimmeringView.contentView = _logoLabel;\n  \n  UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(_tapped:)];\n  [self.view addGestureRecognizer:tapRecognizer];\n  \n  UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(_panned:)];\n  [self.view addGestureRecognizer:panRecognizer];\n}\n\n- (void)viewWillLayoutSubviews\n{\n  [super viewWillLayoutSubviews];\n\n  CGRect shimmeringFrame = self.view.bounds;\n  shimmeringFrame.origin.y = shimmeringFrame.size.height * 0.68;\n  shimmeringFrame.size.height = shimmeringFrame.size.height * 0.32;\n  _shimmeringView.frame = shimmeringFrame;\n}\n\n- (void)_tapped:(UITapGestureRecognizer *)tapRecognizer\n{\n  _shimmeringView.shimmering = !_shimmeringView.shimmering;\n}\n\n- (void)_panned:(UIPanGestureRecognizer *)panRecognizer\n{\n  CGPoint translation = [panRecognizer translationInView:self.view];\n  CGPoint velocity = [panRecognizer velocityInView:self.view];\n  \n  if (panRecognizer.state == UIGestureRecognizerStateBegan) {\n#if CGFLOAT_IS_DOUBLE\n    _panVertical = (fabs(velocity.y) > fabs(velocity.x));\n#else\n    _panVertical = (fabsf(velocity.y) > fabsf(velocity.x));\n#endif\n    \n    if (_panVertical) {\n      _panStartValue = _shimmeringView.shimmeringSpeed;\n    } else {\n      _panStartValue = _shimmeringView.shimmeringOpacity;\n    }\n    \n    [self _animateValueLabelVisible:YES];\n  } else if (panRecognizer.state == UIGestureRecognizerStateChanged) {\n    CGFloat directional = (_panVertical ? translation.y : translation.x);\n    CGFloat possible = (_panVertical ? self.view.bounds.size.height : self.view.bounds.size.width);\n    \n    CGFloat progress = (directional / possible);\n    \n    if (_panVertical) {\n      _shimmeringView.shimmeringSpeed = fmaxf(0.0, fminf(1000.0, _panStartValue + progress * 200.0));\n      _valueLabel.text = [NSString stringWithFormat:@\"Speed\\n%.1f\", _shimmeringView.shimmeringSpeed];\n    } else {\n      _shimmeringView.shimmeringOpacity = fmaxf(0.0, fminf(1.0, _panStartValue + progress * 0.5));\n      _valueLabel.text = [NSString stringWithFormat:@\"Opacity\\n%.2f\", _shimmeringView.shimmeringOpacity];\n    }\n  } else if (panRecognizer.state == UIGestureRecognizerStateEnded ||\n             panRecognizer.state == UIGestureRecognizerStateCancelled) {\n    [self _animateValueLabelVisible:NO];\n  }\n}\n\n- (void)_animateValueLabelVisible:(BOOL)visible\n{\n  UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState;\n  void (^animations)() = ^{\n    _valueLabel.alpha = (visible ? 1.0 : 0.0);\n  };\n  [UIView animateWithDuration:0.5 delay:0.0 options:options animations:animations completion:NULL];\n}\n\n@end\n"
  },
  {
    "path": "Examples/Logo-iOS/en.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "Examples/Logo-iOS/main.m",
    "content": "/**\n  Copyright (c) 2014-present, Facebook, Inc.\n  All rights reserved.\n\n  This source code is licensed under the BSD-style license found in the\n  LICENSE file in the root directory of this source tree. An additional grant\n  of patent rights can be found in the PATENTS file in the same directory.\n */\n\n#import <UIKit/UIKit.h>\n\n#import \"AppDelegate.h\"\n\nint main(int argc, char * argv[])\n{\n  @autoreleasepool {\n      return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));\n  }\n}\n"
  },
  {
    "path": "FBShimmering/FBShimmering-Prefix.pch",
    "content": "//\n//  Prefix header\n//\n//  The contents of this file are implicitly included at the beginning of every source file.\n//\n\n#ifdef __OBJC__\n  #import <Foundation/Foundation.h>\n#endif\n"
  },
  {
    "path": "FBShimmering/FBShimmering.h",
    "content": "/**\n Copyright (c) 2014-present, Facebook, Inc.\n All rights reserved.\n \n This source code is licensed under the BSD-style license found in the\n LICENSE file in the root directory of this source tree. An additional grant\n of patent rights can be found in the PATENTS file in the same directory.\n */\n\n#import <CoreGraphics/CoreGraphics.h>\n#import <Foundation/Foundation.h>\n\ntypedef NS_ENUM(NSInteger, FBShimmerDirection) {\n  //! Shimmer animation goes from left to right\n  FBShimmerDirectionRight,\n  //! Shimmer animation goes from right to left\n  FBShimmerDirectionLeft,\n  //! Shimmer animation goes from below to above\n  FBShimmerDirectionUp,\n  //! Shimmer animation goes from above to below\n  FBShimmerDirectionDown,\n};\n\nstatic const float FBShimmerDefaultBeginTime = CGFLOAT_MAX;\n\n@protocol FBShimmering <NSObject>\n\n//! @abstract Set this to YES to start shimming and NO to stop. Defaults to NO.\n@property (assign, nonatomic, readwrite, getter = isShimmering) BOOL shimmering;\n\n//! @abstract The time interval between shimmerings in seconds. Defaults to 0.4.\n@property (assign, nonatomic, readwrite) CFTimeInterval shimmeringPauseDuration;\n\n//! @abstract The opacity of the content while it is shimmering. Defaults to 0.5.\n@property (assign, nonatomic, readwrite) CGFloat shimmeringAnimationOpacity;\n\n//! @abstract The opacity of the content before it is shimmering. Defaults to 1.0.\n@property (assign, nonatomic, readwrite) CGFloat shimmeringOpacity;\n\n//! @abstract The speed of shimmering, in points per second. Defaults to 230.\n@property (assign, nonatomic, readwrite) CGFloat shimmeringSpeed;\n\n//! @abstract The highlight length of shimmering. Range of [0,1], defaults to 1.0.\n@property (assign, nonatomic, readwrite) CGFloat shimmeringHighlightLength;\n\n//! @abstract Same as \"shimmeringHighlightLength\", just for downward compatibility. @deprecated\n@property (assign, nonatomic, readwrite, getter = shimmeringHighlightLength, setter = setShimmeringHighlightLength:) CGFloat shimmeringHighlightWidth DEPRECATED_MSG_ATTRIBUTE(\"Use shimmeringHighlightLength\");\n\n//! @abstract The direction of shimmering animation. Defaults to FBShimmerDirectionRight.\n@property (assign, nonatomic, readwrite) FBShimmerDirection shimmeringDirection;\n\n//! @abstract The duration of the fade used when shimmer begins. Defaults to 0.1.\n@property (assign, nonatomic, readwrite) CFTimeInterval shimmeringBeginFadeDuration;\n\n//! @abstract The duration of the fade used when shimmer ends. Defaults to 0.3.\n@property (assign, nonatomic, readwrite) CFTimeInterval shimmeringEndFadeDuration;\n\n/**\n @abstract The absolute CoreAnimation media time when the shimmer will fade in.\n @discussion Only valid after setting {@ref shimmering} to NO.\n */\n@property (assign, nonatomic, readonly) CFTimeInterval shimmeringFadeTime;\n\n/**\n @abstract The absolute CoreAnimation media time when the shimmer will begin.\n @discussion Only valid after setting {@ref shimmering} to YES.\n */\n@property (assign, nonatomic) CFTimeInterval shimmeringBeginTime;\n\n@end\n\n"
  },
  {
    "path": "FBShimmering/FBShimmeringLayer.h",
    "content": "/**\n Copyright (c) 2014-present, Facebook, Inc.\n All rights reserved.\n \n This source code is licensed under the BSD-style license found in the\n LICENSE file in the root directory of this source tree. An additional grant\n of patent rights can be found in the PATENTS file in the same directory.\n */\n\n#import <QuartzCore/CALayer.h>\n\n#import \"FBShimmering.h\"\n\n/**\n  @abstract Lightweight, generic shimmering layer.\n */\n@interface FBShimmeringLayer : CALayer <FBShimmering>\n\n//! @abstract The content layer to be shimmered.\n@property (strong, nonatomic) CALayer *contentLayer;\n\n@end\n"
  },
  {
    "path": "FBShimmering/FBShimmeringLayer.m",
    "content": "/**\n Copyright (c) 2014-present, Facebook, Inc.\n All rights reserved.\n \n This source code is licensed under the BSD-style license found in the\n LICENSE file in the root directory of this source tree. An additional grant\n of patent rights can be found in the PATENTS file in the same directory.\n */\n\n#import \"FBShimmeringLayer.h\"\n\n#import <QuartzCore/CAAnimation.h>\n#import <QuartzCore/CAGradientLayer.h>\n#import <QuartzCore/CATransaction.h>\n\n#import <UIKit/UIGeometry.h>\n#import <UIKit/UIColor.h>\n\n#if !__has_feature(objc_arc)\n#error This file must be compiled with ARC. Convert your project to ARC or specify the -fobjc-arc flag.\n#endif\n\n#if TARGET_IPHONE_SIMULATOR\nUIKIT_EXTERN float UIAnimationDragCoefficient(void); // UIKit private drag coeffient, use judiciously\n#endif\n\nstatic CGFloat FBShimmeringLayerDragCoefficient(void)\n{\n#if TARGET_IPHONE_SIMULATOR\n  return UIAnimationDragCoefficient();\n#else\n  return 1.0;\n#endif\n}\n\nstatic void FBShimmeringLayerAnimationApplyDragCoefficient(CAAnimation *animation)\n{\n  CGFloat k = FBShimmeringLayerDragCoefficient();\n  \n  if (k != 0 && k != 1) {\n    animation.speed = 1 / k;\n  }\n}\n\n// animations keys\nstatic NSString *const kFBShimmerSlideAnimationKey = @\"slide\";\nstatic NSString *const kFBFadeAnimationKey = @\"fade\";\nstatic NSString *const kFBEndFadeAnimationKey = @\"fade-end\";\n\nstatic CABasicAnimation *fade_animation(CALayer *layer, CGFloat opacity, CFTimeInterval duration)\n{\n  CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@\"opacity\"];\n  animation.fromValue = @([(layer.presentationLayer ?: layer) opacity]);\n  animation.toValue = @(opacity);\n  animation.fillMode = kCAFillModeBoth;\n  animation.removedOnCompletion = NO;\n  animation.duration = duration;\n  FBShimmeringLayerAnimationApplyDragCoefficient(animation);\n  return animation;\n}\n\nstatic CABasicAnimation *shimmer_slide_animation(CFTimeInterval duration, FBShimmerDirection direction)\n{\n  CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@\"position\"];\n  animation.toValue = [NSValue valueWithCGPoint:CGPointZero];\n  animation.duration = duration;\n  animation.repeatCount = HUGE_VALF;\n  FBShimmeringLayerAnimationApplyDragCoefficient(animation);\n  if (direction == FBShimmerDirectionLeft ||\n      direction == FBShimmerDirectionUp) {\n    animation.speed = -fabsf(animation.speed);\n  }\n  return animation;\n}\n\n// take a shimmer slide animation and turns into repeating\nstatic CAAnimation *shimmer_slide_repeat(CAAnimation *a, CFTimeInterval duration, FBShimmerDirection direction)\n{\n  CAAnimation *anim = [a copy];\n  anim.repeatCount = HUGE_VALF;\n  anim.duration = duration;\n  anim.speed = (direction == FBShimmerDirectionRight || direction == FBShimmerDirectionDown) ? fabsf(anim.speed) : -fabsf(anim.speed);\n  return anim;\n}\n\n// take a shimmer slide animation and turns into finish\nstatic CAAnimation *shimmer_slide_finish(CAAnimation *a)\n{\n  CAAnimation *anim = [a copy];\n  anim.repeatCount = 0;\n  return anim;\n}\n\n@interface FBShimmeringMaskLayer : CAGradientLayer\n@property (readonly, nonatomic) CALayer *fadeLayer;\n@end\n\n@implementation FBShimmeringMaskLayer\n\n- (instancetype)init\n{\n  self = [super init];\n  if (nil != self) {\n    _fadeLayer = [[CALayer alloc] init];\n    _fadeLayer.backgroundColor = [UIColor whiteColor].CGColor;\n    [self addSublayer:_fadeLayer];\n  }\n  return self;\n}\n\n- (void)layoutSublayers\n{\n  [super layoutSublayers];\n  CGRect r = self.bounds;\n  _fadeLayer.bounds = r;\n  _fadeLayer.position = CGPointMake(CGRectGetMidX(r), CGRectGetMidY(r));\n}\n\n@end\n\n@interface FBShimmeringLayer ()\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000\n// iOS 10 SDK has CALayerDelegate and CAAnimationDelegate as proper protocols.\n<CALayerDelegate, CAAnimationDelegate>\n#endif\n\n@property (strong, nonatomic) FBShimmeringMaskLayer *maskLayer;\n@end\n\n@implementation FBShimmeringLayer\n{\n  CALayer *_contentLayer;\n  FBShimmeringMaskLayer *_maskLayer;\n}\n\n#pragma mark - Lifecycle\n\n@synthesize shimmering = _shimmering;\n@synthesize shimmeringPauseDuration = _shimmeringPauseDuration;\n@synthesize shimmeringAnimationOpacity = _shimmeringAnimationOpacity;\n@synthesize shimmeringOpacity = _shimmeringOpacity;\n@synthesize shimmeringSpeed = _shimmeringSpeed;\n@synthesize shimmeringHighlightLength = _shimmeringHighlightLength;\n@synthesize shimmeringDirection = _shimmeringDirection;\n@synthesize shimmeringFadeTime = _shimmeringFadeTime;\n@synthesize shimmeringBeginFadeDuration = _shimmeringBeginFadeDuration;\n@synthesize shimmeringEndFadeDuration = _shimmeringEndFadeDuration;\n@synthesize shimmeringBeginTime = _shimmeringBeginTime;\n@dynamic shimmeringHighlightWidth;\n\n- (instancetype)init\n{\n  self = [super init];\n  if (nil != self) {\n    // default configuration\n    _shimmeringPauseDuration = 0.4;\n    _shimmeringSpeed = 230.0;\n    _shimmeringHighlightLength = 1.0;\n    _shimmeringAnimationOpacity = 0.5;\n    _shimmeringOpacity = 1.0;\n    _shimmeringDirection = FBShimmerDirectionRight;\n    _shimmeringBeginFadeDuration = 0.1;\n    _shimmeringEndFadeDuration = 0.3;\n    _shimmeringBeginTime = FBShimmerDefaultBeginTime;\n  }\n  return self;\n}\n\n#pragma mark - Properties\n\n- (void)setContentLayer:(CALayer *)contentLayer\n{\n  // reset mask\n  self.maskLayer = nil;\n\n  // note content layer and add for display\n  _contentLayer = contentLayer;\n  self.sublayers = contentLayer ? @[contentLayer] : nil;\n\n  // update shimmering animation\n  [self _updateShimmering];\n}\n\n- (void)setShimmering:(BOOL)shimmering\n{\n  if (shimmering != _shimmering) {\n    _shimmering = shimmering;\n    [self _updateShimmering];\n  }\n}\n\n- (void)setShimmeringSpeed:(CGFloat)speed\n{\n  if (speed != _shimmeringSpeed) {\n    _shimmeringSpeed = speed;\n    [self _updateShimmering];\n  }\n}\n\n- (void)setShimmeringHighlightLength:(CGFloat)length\n{\n  if (length != _shimmeringHighlightLength) {\n    _shimmeringHighlightLength = length;\n    [self _updateShimmering];\n  }\n}\n\n- (void)setShimmeringDirection:(FBShimmerDirection)direction\n{\n  if (direction != _shimmeringDirection) {\n    _shimmeringDirection = direction;\n    [self _updateShimmering];\n  }\n}\n\n- (void)setShimmeringPauseDuration:(CFTimeInterval)duration\n{\n  if (duration != _shimmeringPauseDuration) {\n    _shimmeringPauseDuration = duration;\n    [self _updateShimmering];\n  }\n}\n\n- (void)setShimmeringAnimationOpacity:(CGFloat)shimmeringAnimationOpacity\n{\n  if (shimmeringAnimationOpacity != _shimmeringAnimationOpacity) {\n    _shimmeringAnimationOpacity = shimmeringAnimationOpacity;\n    [self _updateMaskColors];\n  }\n}\n\n- (void)setShimmeringOpacity:(CGFloat)shimmeringOpacity\n{\n  if (shimmeringOpacity != _shimmeringOpacity) {\n    _shimmeringOpacity = shimmeringOpacity;\n    [self _updateMaskColors];\n  }\n}\n\n- (void)setShimmeringBeginTime:(CFTimeInterval)beginTime\n{\n  if (beginTime != _shimmeringBeginTime) {\n    _shimmeringBeginTime = beginTime;\n    [self _updateShimmering];\n  }\n}\n\n- (void)layoutSublayers\n{\n  [super layoutSublayers];\n  CGRect r = self.bounds;\n  _contentLayer.anchorPoint = CGPointMake(0.5, 0.5);\n  _contentLayer.bounds = r;\n  _contentLayer.position = CGPointMake(CGRectGetMidX(r), CGRectGetMidY(r));\n  \n  if (nil != _maskLayer) {\n    [self _updateMaskLayout];\n  }\n}\n\n- (void)setBounds:(CGRect)bounds\n{\n  CGRect oldBounds = self.bounds;\n  [super setBounds:bounds];\n \n  if (!CGRectEqualToRect(oldBounds, bounds)) {\n    [self _updateShimmering];\n  }\n}\n\n#pragma mark - Internal\n\n- (void)_clearMask\n{\n  if (nil == _maskLayer) {\n    return;\n  }\n\n  BOOL disableActions = [CATransaction disableActions];\n  [CATransaction setDisableActions:YES];\n\n  self.maskLayer = nil;\n  _contentLayer.mask = nil;\n  \n  [CATransaction setDisableActions:disableActions];\n}\n\n- (void)_createMaskIfNeeded\n{\n  if (_shimmering && !_maskLayer) {\n    _maskLayer = [FBShimmeringMaskLayer layer];\n    _maskLayer.delegate = self;\n    _contentLayer.mask = _maskLayer;\n    [self _updateMaskColors];\n    [self _updateMaskLayout];\n  }\n}\n\n- (void)_updateMaskColors\n{\n  if (nil == _maskLayer) {\n    return;\n  }\n\n  // We create a gradient to be used as a mask.\n  // In a mask, the colors do not matter, it's the alpha that decides the degree of masking.\n  UIColor *maskedColor = [UIColor colorWithWhite:1.0 alpha:_shimmeringOpacity];\n  UIColor *unmaskedColor = [UIColor colorWithWhite:1.0 alpha:_shimmeringAnimationOpacity];\n\n  // Create a gradient from masked to unmasked to masked.\n  _maskLayer.colors = @[(__bridge id)maskedColor.CGColor, (__bridge id)unmaskedColor.CGColor, (__bridge id)maskedColor.CGColor];\n}\n\n- (void)_updateMaskLayout\n{\n  // Everything outside the mask layer is hidden, so we need to create a mask long enough for the shimmered layer to be always covered by the mask.\n  CGFloat length = 0.0f;\n  if (_shimmeringDirection == FBShimmerDirectionDown ||\n      _shimmeringDirection == FBShimmerDirectionUp) {\n    length = CGRectGetHeight(_contentLayer.bounds);\n  } else {\n    length = CGRectGetWidth(_contentLayer.bounds);\n  }\n  if (0 == length) {\n    return;\n  }\n\n  // extra distance for the gradient to travel during the pause.\n  CGFloat extraDistance = length + _shimmeringSpeed * _shimmeringPauseDuration;\n\n  // compute how far the shimmering goes\n  CGFloat fullShimmerLength = length * 3.0f + extraDistance;\n  CGFloat travelDistance = length * 2.0f + extraDistance;\n  \n  // position the gradient for the desired width\n  CGFloat highlightOutsideLength = (1.0 - _shimmeringHighlightLength) / 2.0;\n  _maskLayer.locations = @[@(highlightOutsideLength),\n                           @(0.5),\n                           @(1.0 - highlightOutsideLength)];\n\n  CGFloat startPoint = (length + extraDistance) / fullShimmerLength;\n  CGFloat endPoint = travelDistance / fullShimmerLength;\n  \n  // position for the start of the animation\n  _maskLayer.anchorPoint = CGPointZero;\n  if (_shimmeringDirection == FBShimmerDirectionDown ||\n      _shimmeringDirection == FBShimmerDirectionUp) {\n    _maskLayer.startPoint = CGPointMake(0.0, startPoint);\n    _maskLayer.endPoint = CGPointMake(0.0, endPoint);\n    _maskLayer.position = CGPointMake(0.0, -travelDistance);\n    _maskLayer.bounds = CGRectMake(0.0, 0.0, CGRectGetWidth(_contentLayer.bounds), fullShimmerLength);\n  } else {\n    _maskLayer.startPoint = CGPointMake(startPoint, 0.0);\n    _maskLayer.endPoint = CGPointMake(endPoint, 0.0);\n    _maskLayer.position = CGPointMake(-travelDistance, 0.0);\n    _maskLayer.bounds = CGRectMake(0.0, 0.0, fullShimmerLength, CGRectGetHeight(_contentLayer.bounds));\n  }\n}\n\n- (void)_updateShimmering\n{\n  // create mask if needed\n  [self _createMaskIfNeeded];\n\n  // if not shimmering and no mask, noop\n  if (!_shimmering && !_maskLayer) {\n    return;\n  }\n\n  // ensure layout\n  [self layoutIfNeeded];\n\n  BOOL disableActions = [CATransaction disableActions];\n  if (!_shimmering) {\n    if (disableActions) {\n      // simply remove mask\n      [self _clearMask];\n    } else {\n      // end slide\n      CFTimeInterval slideEndTime = 0;\n\n      CAAnimation *slideAnimation = [_maskLayer animationForKey:kFBShimmerSlideAnimationKey];\n      if (slideAnimation != nil) {\n\n        // determine total time sliding\n        CFTimeInterval now = CACurrentMediaTime();\n        CFTimeInterval slideTotalDuration = now - slideAnimation.beginTime;\n\n        // determine time offset into current slide\n        CFTimeInterval slideTimeOffset = fmod(slideTotalDuration, slideAnimation.duration);\n\n        // transition to non-repeating slide\n        CAAnimation *finishAnimation = shimmer_slide_finish(slideAnimation);\n\n        // adjust begin time to now - offset\n        finishAnimation.beginTime = now - slideTimeOffset;\n\n        // note slide end time and begin\n        slideEndTime = finishAnimation.beginTime + slideAnimation.duration;\n        [_maskLayer addAnimation:finishAnimation forKey:kFBShimmerSlideAnimationKey];\n      }\n\n      // fade in text at slideEndTime\n      CABasicAnimation *fadeInAnimation = fade_animation(_maskLayer.fadeLayer, 1.0, _shimmeringEndFadeDuration);\n      fadeInAnimation.delegate = self;\n      [fadeInAnimation setValue:@YES forKey:kFBEndFadeAnimationKey];\n      fadeInAnimation.beginTime = slideEndTime;\n      [_maskLayer.fadeLayer addAnimation:fadeInAnimation forKey:kFBFadeAnimationKey];\n\n      // expose end time for synchronization\n      _shimmeringFadeTime = slideEndTime;\n    }\n  } else {\n    // fade out text, optionally animated\n    CABasicAnimation *fadeOutAnimation = nil;\n    if (_shimmeringBeginFadeDuration > 0.0 && !disableActions) {\n      fadeOutAnimation = fade_animation(_maskLayer.fadeLayer, 0.0, _shimmeringBeginFadeDuration);\n      [_maskLayer.fadeLayer addAnimation:fadeOutAnimation forKey:kFBFadeAnimationKey];\n    } else {\n      BOOL innerDisableActions = [CATransaction disableActions];\n      [CATransaction setDisableActions:YES];\n\n      _maskLayer.fadeLayer.opacity = 0.0;\n      [_maskLayer.fadeLayer removeAllAnimations];\n      \n      [CATransaction setDisableActions:innerDisableActions];\n    }\n\n    // begin slide animation\n    CAAnimation *slideAnimation = [_maskLayer animationForKey:kFBShimmerSlideAnimationKey];\n    \n    // compute shimmer duration\n    CGFloat length = 0.0f;\n    if (_shimmeringDirection == FBShimmerDirectionDown ||\n        _shimmeringDirection == FBShimmerDirectionUp) {\n      length = CGRectGetHeight(_contentLayer.bounds);\n    } else {\n      length = CGRectGetWidth(_contentLayer.bounds);\n    }\n    CFTimeInterval animationDuration = (length / _shimmeringSpeed) + _shimmeringPauseDuration;\n    \n    if (slideAnimation != nil) {\n      // ensure existing slide animation repeats\n      [_maskLayer addAnimation:shimmer_slide_repeat(slideAnimation, animationDuration, _shimmeringDirection) forKey:kFBShimmerSlideAnimationKey];\n    } else {\n      // add slide animation\n      slideAnimation = shimmer_slide_animation(animationDuration, _shimmeringDirection);\n      slideAnimation.fillMode = kCAFillModeForwards;\n      slideAnimation.removedOnCompletion = NO;\n      if (_shimmeringBeginTime == FBShimmerDefaultBeginTime) {\n        _shimmeringBeginTime = CACurrentMediaTime() + fadeOutAnimation.duration;\n      }\n      slideAnimation.beginTime = _shimmeringBeginTime;\n      \n      [_maskLayer addAnimation:slideAnimation forKey:kFBShimmerSlideAnimationKey];\n    }\n  }\n}\n\n#pragma mark - CALayerDelegate\n\n- (id<CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event\n{\n  // no associated actions\n  return (id)kCFNull;\n}\n\n#pragma mark - CAAnimationDelegate\n\n- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag\n{\n  if (flag && [[anim valueForKey:kFBEndFadeAnimationKey] boolValue]) {\n    [_maskLayer.fadeLayer removeAnimationForKey:kFBFadeAnimationKey];\n\n    [self _clearMask];\n  }\n}\n\n@end\n"
  },
  {
    "path": "FBShimmering/FBShimmeringView.h",
    "content": "/**\n Copyright (c) 2014-present, Facebook, Inc.\n All rights reserved.\n \n This source code is licensed under the BSD-style license found in the\n LICENSE file in the root directory of this source tree. An additional grant\n of patent rights can be found in the PATENTS file in the same directory.\n */\n\n#import <UIKit/UIView.h>\n\n#import \"FBShimmering.h\"\n\n/**\n  @abstract Lightweight, generic shimmering view.\n */\n@interface FBShimmeringView : UIView <FBShimmering>\n\n//! @abstract The content view to be shimmered.\n@property (strong, nonatomic) UIView *contentView;\n\n@end\n"
  },
  {
    "path": "FBShimmering/FBShimmeringView.m",
    "content": "/**\n Copyright (c) 2014-present, Facebook, Inc.\n All rights reserved.\n \n This source code is licensed under the BSD-style license found in the\n LICENSE file in the root directory of this source tree. An additional grant\n of patent rights can be found in the PATENTS file in the same directory.\n */\n\n#import \"FBShimmeringView.h\"\n\n#import \"FBShimmeringLayer.h\"\n\n#if !__has_feature(objc_arc)\n#error This file must be compiled with ARC. Convert your project to ARC or specify the -fobjc-arc flag.\n#endif\n\n@implementation FBShimmeringView\n\n+ (Class)layerClass\n{\n  return [FBShimmeringLayer class];\n}\n\n#define __layer ((FBShimmeringLayer *)self.layer)\n\n#define LAYER_ACCESSOR(accessor, ctype) \\\n- (ctype)accessor { \\\n  return [__layer accessor]; \\\n}\n\n#define LAYER_MUTATOR(mutator, ctype) \\\n- (void)mutator (ctype)value { \\\n  [__layer mutator value]; \\\n}\n\n#define LAYER_RW_PROPERTY(accessor, mutator, ctype) \\\n  LAYER_ACCESSOR (accessor, ctype) \\\n  LAYER_MUTATOR (mutator, ctype)\n\nLAYER_RW_PROPERTY(isShimmering, setShimmering:, BOOL)\nLAYER_RW_PROPERTY(shimmeringPauseDuration, setShimmeringPauseDuration:, CFTimeInterval)\nLAYER_RW_PROPERTY(shimmeringAnimationOpacity, setShimmeringAnimationOpacity:, CGFloat)\nLAYER_RW_PROPERTY(shimmeringOpacity, setShimmeringOpacity:, CGFloat)\nLAYER_RW_PROPERTY(shimmeringSpeed, setShimmeringSpeed:, CGFloat)\nLAYER_RW_PROPERTY(shimmeringHighlightLength, setShimmeringHighlightLength:, CGFloat)\nLAYER_RW_PROPERTY(shimmeringDirection, setShimmeringDirection:, FBShimmerDirection)\nLAYER_ACCESSOR(shimmeringFadeTime, CFTimeInterval)\nLAYER_RW_PROPERTY(shimmeringBeginFadeDuration, setShimmeringBeginFadeDuration:, CFTimeInterval)\nLAYER_RW_PROPERTY(shimmeringEndFadeDuration, setShimmeringEndFadeDuration:, CFTimeInterval)\nLAYER_RW_PROPERTY(shimmeringBeginTime, setShimmeringBeginTime:, CFTimeInterval)\n\n- (void)setContentView:(UIView *)contentView\n{\n  if (contentView != _contentView) {\n    _contentView = contentView;\n    [self addSubview:contentView];\n    __layer.contentLayer = contentView.layer;\n  }\n}\n\n- (void)layoutSubviews\n{\n  // Autolayout requires these to be set on the UIView, not the CALayer.\n  // Do this *before* the layer has a chance to set the properties, as the\n  // setters would be ignored (even for autolayout) if set to the same value.\n  _contentView.bounds = self.bounds;\n  _contentView.center = self.center;\n\n  [super layoutSubviews];\n}\n\n@end\n"
  },
  {
    "path": "FBShimmering.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t077ACA6A1CBD6B4300B3A708 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 077ACA691CBD6B4300B3A708 /* UIKit.framework */; };\n\t\t077ACA6C1CBD6B5800B3A708 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 077ACA6B1CBD6B5800B3A708 /* CoreGraphics.framework */; };\n\t\t1899D26B18BD1CFB0035A1B0 /* FBShimmeringView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1899D26718BD1CFB0035A1B0 /* FBShimmeringView.m */; };\n\t\t1899D26C18BD1CFB0035A1B0 /* FBShimmeringLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1899D26918BD1CFB0035A1B0 /* FBShimmeringLayer.m */; };\n\t\t1899D27418BD201B0035A1B0 /* FBShimmering.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1899D26D18BD1D070035A1B0 /* FBShimmering.h */; };\n\t\t1899D27518BD201B0035A1B0 /* FBShimmeringView.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1899D26818BD1CFB0035A1B0 /* FBShimmeringView.h */; };\n\t\t1899D27618BD201B0035A1B0 /* FBShimmeringLayer.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1899D26A18BD1CFB0035A1B0 /* FBShimmeringLayer.h */; };\n\t\tA1C8E0BF1E13C0C9002D6069 /* Shimmer.h in Headers */ = {isa = PBXBuildFile; fileRef = A1C8E0BD1E13C0C9002D6069 /* Shimmer.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tA1C8E0C31E13C0D3002D6069 /* FBShimmering.h in Headers */ = {isa = PBXBuildFile; fileRef = 1899D26D18BD1D070035A1B0 /* FBShimmering.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tA1C8E0C41E13C0D3002D6069 /* FBShimmeringView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1899D26818BD1CFB0035A1B0 /* FBShimmeringView.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tA1C8E0C51E13C0D3002D6069 /* FBShimmeringLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1899D26A18BD1CFB0035A1B0 /* FBShimmeringLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tA1C8E0C61E13C0D8002D6069 /* FBShimmeringView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1899D26718BD1CFB0035A1B0 /* FBShimmeringView.m */; };\n\t\tA1C8E0C71E13C0D8002D6069 /* FBShimmeringLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1899D26918BD1CFB0035A1B0 /* FBShimmeringLayer.m */; };\n\t\tECEA610218A49C620064AFF4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECEA610118A49C620064AFF4 /* Foundation.framework */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\tECEA60FC18A49C620064AFF4 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"$(PRODUCT_NAME)Headers\";\n\t\t\tdstSubfolderSpec = 16;\n\t\t\tfiles = (\n\t\t\t\t1899D27418BD201B0035A1B0 /* FBShimmering.h in CopyFiles */,\n\t\t\t\t1899D27518BD201B0035A1B0 /* FBShimmeringView.h in CopyFiles */,\n\t\t\t\t1899D27618BD201B0035A1B0 /* FBShimmeringLayer.h in CopyFiles */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t077ACA691CBD6B4300B3A708 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };\n\t\t077ACA6B1CBD6B5800B3A708 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };\n\t\t1899D26718BD1CFB0035A1B0 /* FBShimmeringView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBShimmeringView.m; sourceTree = \"<group>\"; };\n\t\t1899D26818BD1CFB0035A1B0 /* FBShimmeringView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBShimmeringView.h; sourceTree = \"<group>\"; };\n\t\t1899D26918BD1CFB0035A1B0 /* FBShimmeringLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBShimmeringLayer.m; sourceTree = \"<group>\"; };\n\t\t1899D26A18BD1CFB0035A1B0 /* FBShimmeringLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBShimmeringLayer.h; sourceTree = \"<group>\"; };\n\t\t1899D26D18BD1D070035A1B0 /* FBShimmering.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBShimmering.h; sourceTree = \"<group>\"; };\n\t\tA1C8E0BB1E13C0C9002D6069 /* Shimmer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Shimmer.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tA1C8E0BD1E13C0C9002D6069 /* Shimmer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Shimmer.h; sourceTree = \"<group>\"; };\n\t\tA1C8E0BE1E13C0C9002D6069 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tEC8BB5B318A5A1EE00EB2793 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = \"<group>\"; };\n\t\tEC8BB5B418A5A1F500EB2793 /* PATENTS */ = {isa = PBXFileReference; lastKnownFileType = text; path = PATENTS; sourceTree = \"<group>\"; };\n\t\tEC8BB5B518A5A30700EB2793 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = CONTRIBUTING.md; sourceTree = \"<group>\"; };\n\t\tEC8BB5B618A5A30F00EB2793 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.md; sourceTree = \"<group>\"; };\n\t\tECEA60FE18A49C620064AFF4 /* libFBShimmering.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBShimmering.a; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tECEA610118A49C620064AFF4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };\n\t\tECEA610518A49C620064AFF4 /* FBShimmering-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"FBShimmering-Prefix.pch\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tA1C8E0B71E13C0C9002D6069 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tECEA60FB18A49C620064AFF4 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t077ACA6C1CBD6B5800B3A708 /* CoreGraphics.framework in Frameworks */,\n\t\t\t\t077ACA6A1CBD6B4300B3A708 /* UIKit.framework in Frameworks */,\n\t\t\t\tECEA610218A49C620064AFF4 /* Foundation.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tA1C8E0BC1E13C0C9002D6069 /* Framework */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA1C8E0BD1E13C0C9002D6069 /* Shimmer.h */,\n\t\t\t\tA1C8E0BE1E13C0C9002D6069 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = Framework;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tECEA60F518A49C620064AFF4 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEC8BB5B618A5A30F00EB2793 /* README.md */,\n\t\t\t\tEC8BB5B518A5A30700EB2793 /* CONTRIBUTING.md */,\n\t\t\t\tEC8BB5B318A5A1EE00EB2793 /* LICENSE */,\n\t\t\t\tEC8BB5B418A5A1F500EB2793 /* PATENTS */,\n\t\t\t\tECEA610318A49C620064AFF4 /* FBShimmering */,\n\t\t\t\tA1C8E0BC1E13C0C9002D6069 /* Framework */,\n\t\t\t\tECEA610018A49C620064AFF4 /* Frameworks */,\n\t\t\t\tECEA60FF18A49C620064AFF4 /* Products */,\n\t\t\t);\n\t\t\tindentWidth = 2;\n\t\t\tsourceTree = \"<group>\";\n\t\t\ttabWidth = 2;\n\t\t};\n\t\tECEA60FF18A49C620064AFF4 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tECEA60FE18A49C620064AFF4 /* libFBShimmering.a */,\n\t\t\t\tA1C8E0BB1E13C0C9002D6069 /* Shimmer.framework */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tECEA610018A49C620064AFF4 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t077ACA6B1CBD6B5800B3A708 /* CoreGraphics.framework */,\n\t\t\t\t077ACA691CBD6B4300B3A708 /* UIKit.framework */,\n\t\t\t\tECEA610118A49C620064AFF4 /* Foundation.framework */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tECEA610318A49C620064AFF4 /* FBShimmering */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1899D26D18BD1D070035A1B0 /* FBShimmering.h */,\n\t\t\t\t1899D26818BD1CFB0035A1B0 /* FBShimmeringView.h */,\n\t\t\t\t1899D26718BD1CFB0035A1B0 /* FBShimmeringView.m */,\n\t\t\t\t1899D26A18BD1CFB0035A1B0 /* FBShimmeringLayer.h */,\n\t\t\t\t1899D26918BD1CFB0035A1B0 /* FBShimmeringLayer.m */,\n\t\t\t\tECEA610418A49C620064AFF4 /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = FBShimmering;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tECEA610418A49C620064AFF4 /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tECEA610518A49C620064AFF4 /* FBShimmering-Prefix.pch */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\tA1C8E0B81E13C0C9002D6069 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tA1C8E0BF1E13C0C9002D6069 /* Shimmer.h in Headers */,\n\t\t\t\tA1C8E0C31E13C0D3002D6069 /* FBShimmering.h in Headers */,\n\t\t\t\tA1C8E0C41E13C0D3002D6069 /* FBShimmeringView.h in Headers */,\n\t\t\t\tA1C8E0C51E13C0D3002D6069 /* FBShimmeringLayer.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\tA1C8E0BA1E13C0C9002D6069 /* Shimmer */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = A1C8E0C01E13C0C9002D6069 /* Build configuration list for PBXNativeTarget \"Shimmer\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tA1C8E0B61E13C0C9002D6069 /* Sources */,\n\t\t\t\tA1C8E0B71E13C0C9002D6069 /* Frameworks */,\n\t\t\t\tA1C8E0B81E13C0C9002D6069 /* Headers */,\n\t\t\t\tA1C8E0B91E13C0C9002D6069 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Shimmer;\n\t\t\tproductName = Shimmer;\n\t\t\tproductReference = A1C8E0BB1E13C0C9002D6069 /* Shimmer.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tECEA60FD18A49C620064AFF4 /* FBShimmering */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = ECEA612118A49C620064AFF4 /* Build configuration list for PBXNativeTarget \"FBShimmering\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tECEA60FA18A49C620064AFF4 /* Sources */,\n\t\t\t\tECEA60FB18A49C620064AFF4 /* Frameworks */,\n\t\t\t\tECEA60FC18A49C620064AFF4 /* CopyFiles */,\n\t\t\t\tECEA612718A49DDD0064AFF4 /* ShellScript */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = FBShimmering;\n\t\t\tproductName = FBShimmering;\n\t\t\tproductReference = ECEA60FE18A49C620064AFF4 /* libFBShimmering.a */;\n\t\t\tproductType = \"com.apple.product-type.library.static\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tECEA60F618A49C620064AFF4 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tCLASSPREFIX = FB;\n\t\t\t\tLastUpgradeCheck = 0510;\n\t\t\t\tORGANIZATIONNAME = Facebook;\n\t\t\t};\n\t\t\tbuildConfigurationList = ECEA60F918A49C620064AFF4 /* Build configuration list for PBXProject \"FBShimmering\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t);\n\t\t\tmainGroup = ECEA60F518A49C620064AFF4;\n\t\t\tproductRefGroup = ECEA60FF18A49C620064AFF4 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tECEA60FD18A49C620064AFF4 /* FBShimmering */,\n\t\t\t\tA1C8E0BA1E13C0C9002D6069 /* Shimmer */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tA1C8E0B91E13C0C9002D6069 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\tECEA612718A49DDD0064AFF4 /* ShellScript */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"set -e\\n\\nmkdir -p \\\"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework/Versions/A/Headers\\\"\\n\\n# Link the \\\"Current\\\" version to \\\"A\\\"\\n/bin/ln -sfh A \\\"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework/Versions/Current\\\"\\n/bin/ln -sfh Versions/Current/Headers \\\"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework/Headers\\\"\\n/bin/ln -sfh \\\"Versions/Current/${PRODUCT_NAME}\\\" \\\"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework/${PRODUCT_NAME}\\\"\\n\\n# The -a ensures that the headers maintain the source modification date so that we don't constantly\\n# cause propagating rebuilds of files that import these headers.\\n/bin/cp -a \\\"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/\\\" \\\"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework/Versions/A/Headers\\\"\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tA1C8E0B61E13C0C9002D6069 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tA1C8E0C71E13C0D8002D6069 /* FBShimmeringLayer.m in Sources */,\n\t\t\t\tA1C8E0C61E13C0D8002D6069 /* FBShimmeringView.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tECEA60FA18A49C620064AFF4 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t1899D26C18BD1CFB0035A1B0 /* FBShimmeringLayer.m in Sources */,\n\t\t\t\t1899D26B18BD1CFB0035A1B0 /* FBShimmeringView.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\tA1C8E0C11E13C0C9002D6069 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = Framework/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.facebook.Shimmer;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tA1C8E0C21E13C0C9002D6069 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = Framework/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.facebook.Shimmer;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tECEA611F18A49C620064AFF4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 6.0;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tECEA612018A49C620064AFF4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 6.0;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tECEA612218A49C620064AFF4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEAD_CODE_STRIPPING = NO;\n\t\t\t\tDSTROOT = /tmp/FBShimmering.dst;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"FBShimmering/FBShimmering-Prefix.pch\";\n\t\t\t\tOTHER_LDFLAGS = \"-ObjC\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPUBLIC_HEADERS_FOLDER_PATH = \"$(PROJECT_NAME)Headers\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSTRIP_STYLE = \"non-global\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tECEA612318A49C620064AFF4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEAD_CODE_STRIPPING = NO;\n\t\t\t\tDSTROOT = /tmp/FBShimmering.dst;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"FBShimmering/FBShimmering-Prefix.pch\";\n\t\t\t\tOTHER_LDFLAGS = \"-ObjC\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPUBLIC_HEADERS_FOLDER_PATH = \"$(PROJECT_NAME)Headers\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSTRIP_STYLE = \"non-global\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tA1C8E0C01E13C0C9002D6069 /* Build configuration list for PBXNativeTarget \"Shimmer\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tA1C8E0C11E13C0C9002D6069 /* Debug */,\n\t\t\t\tA1C8E0C21E13C0C9002D6069 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tECEA60F918A49C620064AFF4 /* Build configuration list for PBXProject \"FBShimmering\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tECEA611F18A49C620064AFF4 /* Debug */,\n\t\t\t\tECEA612018A49C620064AFF4 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tECEA612118A49C620064AFF4 /* Build configuration list for PBXNativeTarget \"FBShimmering\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tECEA612218A49C620064AFF4 /* Debug */,\n\t\t\t\tECEA612318A49C620064AFF4 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = ECEA60F618A49C620064AFF4 /* Project object */;\n}\n"
  },
  {
    "path": "FBShimmering.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:FBShimmering.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "FBShimmering.xcodeproj/xcshareddata/xcschemes/FBShimmering.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1110\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"ECEA60FD18A49C620064AFF4\"\n               BuildableName = \"libFBShimmering.a\"\n               BlueprintName = \"FBShimmering\"\n               ReferencedContainer = \"container:FBShimmering.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"ECEA60FD18A49C620064AFF4\"\n            BuildableName = \"libFBShimmering.a\"\n            BlueprintName = \"FBShimmering\"\n            ReferencedContainer = \"container:FBShimmering.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "FBShimmering.xcodeproj/xcshareddata/xcschemes/Framework.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0820\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"A1C8E0BA1E13C0C9002D6069\"\n               BuildableName = \"Shimmer.framework\"\n               BlueprintName = \"Shimmer\"\n               ReferencedContainer = \"container:FBShimmering.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"A1C8E0BA1E13C0C9002D6069\"\n            BuildableName = \"Shimmer.framework\"\n            BlueprintName = \"Shimmer\"\n            ReferencedContainer = \"container:FBShimmering.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"A1C8E0BA1E13C0C9002D6069\"\n            BuildableName = \"Shimmer.framework\"\n            BlueprintName = \"Shimmer\"\n            ReferencedContainer = \"container:FBShimmering.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "FBShimmering.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:FBShimmering.xcodeproj\">\n   </FileRef>\n   <FileRef\n      location = \"group:Examples/Examples.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "FBShimmering.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Framework/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Framework/Shimmer.h",
    "content": "/**\n Copyright (c) 2014-present, Facebook, Inc.\n All rights reserved.\n\n This source code is licensed under the BSD-style license found in the\n LICENSE file in the root directory of this source tree. An additional grant\n of patent rights can be found in the PATENTS file in the same directory.\n */\n\n#import <Shimmer/FBShimmering.h>\n#import <Shimmer/FBShimmeringView.h>\n#import <Shimmer/FBShimmeringLayer.h>\n"
  },
  {
    "path": "LICENSE",
    "content": "BSD License\n\nFor Shimmer software\n\nCopyright (c) 2014, Facebook, Inc. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n   list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n   this list of conditions and the following disclaimer in the documentation\n   and/or other materials provided with the distribution.\n\n * Neither the name Facebook nor the names of its contributors may be used to\n   endorse or promote products derived from this software without specific\n   prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "README.md",
    "content": "# Shimmer\nShimmer is an easy way to add a shimmering effect to any view in your app. It's useful as an unobtrusive loading indicator.\n\nShimmer was originally developed to show loading status in [Paper](http://facebook.com/paper).\n\n![Shimmer](https://github.com/facebook/Shimmer/blob/master/shimmer.gif?raw=true)\n\n## Usage\nTo use Shimmer, create a `FBShimmeringView` or `FBShimmeringLayer` and add your content. To start shimmering, set the `shimmering` property to `YES`.\n\nAn example of making a label shimmer:\n\n```objective-c\nFBShimmeringView *shimmeringView = [[FBShimmeringView alloc] initWithFrame:self.view.bounds];\n[self.view addSubview:shimmeringView];\n\nUILabel *loadingLabel = [[UILabel alloc] initWithFrame:shimmeringView.bounds];\nloadingLabel.textAlignment = NSTextAlignmentCenter;\nloadingLabel.text = NSLocalizedString(@\"Shimmer\", nil);\nshimmeringView.contentView = loadingLabel;\n\n// Start shimmering.\nshimmeringView.shimmering = YES;\n```\n\nThere's also an example project. In the example, you can swipe horizontally and vertically to try various shimmering parameters, or tap to start or stop shimmering. (To build the example locally, you'll need to open `FBShimmering.xcworkpace` rather than the `.xcodeproj`.)\n\n## Installation\nThere are two options:\n\n 1. Shimmer is available as `Shimmer` in [Cocoapods](http://cocoapods.org).\n 2. Manually add the files into your Xcode project. Slightly simpler, but updates are also manual.\n\nShimmer requires iOS 6 or later.\n\n## How it works\nShimmer uses the `-[CALayer mask]` property to enable shimmering, similar to what's described in John Harper's 2009 WWDC talk (unfortunately no longer online). Shimmer uses CoreAnimation's timing features to smoothly transition \"on-beat\" when starting and stopping the shimmer.\n\n## Other Platforms\n\nWe have a version of Shimmer for Android, too! It's [also available on GitHub](https://github.com/facebook/shimmer-android).\n\n## Contributing\nSee the CONTRIBUTING file for how to help out.\n\n## License\nShimmer is BSD-licensed. \n\n"
  },
  {
    "path": "Shimmer.podspec",
    "content": "Pod::Spec.new do |spec|\n  spec.name         = 'Shimmer'\n  spec.version      = '1.0.2'\n  spec.license      =  { :type => 'BSD' }\n  spec.homepage     = 'https://github.com/facebook/Shimmer'\n  spec.authors      = { 'Grant Paul' => 'shimmer@grantpaul.com', 'Kimon Tsinteris' => 'kimon@mac.com' }\n  spec.summary      = 'Simple shimmering effect.'\n  spec.source       = { :git => 'https://github.com/facebook/Shimmer.git', :tag => '1.0.2' }\n  spec.source_files = 'FBShimmering/FBShimmering{,View,Layer}.{h,m}'\n  spec.requires_arc = true\n  \n  spec.ios.deployment_target = '6.0'\nend\n"
  }
]