[
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: xmartlabs # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]\npatreon: # Replace with a single Patreon username\nopen_collective: # Replace with a single Open Collective username\nko_fi: # Replace with a single Ko-fi username\ntidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel\ncommunity_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry\nliberapay: # Replace with a single Liberapay username\nissuehunt: # Replace with a single IssueHunt username\notechie: # Replace with a single Otechie username\nlfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry\ncustom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "Before submitting issues ...\n\n- Make sure you are using XLPagerTabStrip [latest release](https://github.com/xmartlabs/XLPagerTabStrip/releases) or master branch version.\n- Make sure your Xcode version is the latest stable one.\n- Check if the issue was [already reported or fixed](https://github.com/xmartlabs/XLPagerTabStrip/issues?utf8=%E2%9C%93&q=is%3Aissue). We add labels to each issue in order to easily find related issues. If you found a match add a brief comment \"I have the same problem\" or \"+1\".\n- Please do not use the issue tracker for personal support requests. Stack Overflow is a better place for that where a wider community can help you!\n\nWhen submitting issues, please provide the following information to help maintainers to fix the problem faster:\n\n- Environment: XLPagerTabStrip, Xcode and iOS version you are using.\n- In case of reporting errors, provide Xcode console output of stack trace or code compilation error.\n- Any other additional detail such as example code that you think it would be useful to understand, reproduce and solve the problem.\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": ""
  },
  {
    "path": ".gitignore",
    "content": "## OS X Finder\n.DS_Store\n\n## Build generated\nbuild/\nDerivedData\n\n## Various settings\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n\n## Other\n*.xccheckout\n*.moved-aside\n*.xcuserstate\n*.xcscmblueprint\n\n## Obj-C/Swift specific\n*.hmap\n*.ipa\n\n## Playgrounds\ntimeline.xctimeline\nplayground.xcworkspace\n\n# Swift Package Manager\n#\n# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.\n# Packages/\n.build/\n\n# CocoaPods\n#\n# We recommend against adding the Pods directory to your .gitignore. However\n# you should judge for yourself, the pros and cons are mentioned at:\n# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control\n#\n# Pods/\n\n# Carthage\n#\n# Add this line if you want to avoid checking in source code from Carthage dependencies.\n# Carthage/Checkouts\n\nCarthage/Build\n\n.swift-version\n.swiftpm/xcode\n"
  },
  {
    "path": ".swiftlint.yml",
    "content": "disabled_rules: # rule identifiers to exclude from running\n#  - colon\n#  - comma\n#  - control_statement\n  - line_length\n  - function_body_length\n  - identifier_name\n  - type_name\n  - large_tuple\nopt_in_rules: # some rules are only opt-in\n  - empty_count\n  # Find all the available rules by running:\n  # swiftlint rules\nexcluded: # paths to ignore during linting. Takes precedence over `included`.\n  - Carthage\n  - Pods\n  - Source/ExcludedFolder\n  - Source/ExcludedFile.swift\n\n# configurable rules can be customized from this configuration file\n# binary rules can set their severity level\nforce_cast: warning # implicitly\nforce_try:\n  severity: warning # explicitly\n# rules that have both warning and error levels, can set just the warning level\n# implicitly\nline_length: 200\n# they can set both implicitly with an array\ntype_body_length:\n  - 300 # warning\n  - 400 # error\n# or they can set both explicitly\nfile_length:\n  warning: 500\n  error: 1200\n# naming rules can set warnings/errors for min_length and max_length\n# additionally they can set excluded names\ntype_name:\n  min_length: 4 # only warning\n  max_length: # warning and error\n    warning: 40\n    error: 50\n  excluded: iPhone # excluded via string\nidentifier_name:\n  min_length: # only min_length\n    error: 4 # only error\n  excluded: # excluded via string array\n    - id\n    - URL\n    - GlobalAPIKey\nreporter: \"xcode\" # reporter type (xcode, json, csv, checkstyle, junit, html, emoji)"
  },
  {
    "path": ".travis.yml",
    "content": "language: objective-c\nosx_image: xcode10.2\nbranches:\n  only:\n    - master\nenv:\n  - DESTINATION=\"OS=12.1,name=iPhone XS\" SCHEME=\"XLPagerTabStrip\" SDK=iphonesimulator\nbefore_install:\n- brew update\n- brew outdated carthage || brew upgrade carthage\nscript:\n  - set -o pipefail\n  - xcodebuild -version\n  - xcodebuild clean build -project XLPagerTabStrip.xcodeproj -scheme \"$SCHEME\" -sdk \"$SDK\"\n  #- xcodebuild test -project XLPagerTabStrip.xcodeproj -scheme \"$SCHEME\" -sdk \"$SDK\"\n  - xcodebuild -project XLPagerTabStrip.xcodeproj -scheme \"$SCHEME\" -sdk \"$SDK\" -destination \"$DESTINATION\" -configuration Debug ONLY_ACTIVE_ARCH=NO test | xcpretty\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Change Log\nAll notable changes to XLPagerTabStrip will be documented in this file.\n\n### [9.1.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/9.1.0)\n\n* SPM support.\n\n### [9.0.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/9.0.0)\n\n* Xcode 10.2 and Swift 5.0 support.\n* Minor updates and fixes.\n\n### [8.1.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/8.1.0)\n\n* Xcode 10 and Swift 4.2 support.\n* Minor updates and fixes.\n\n### [8.0.1](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/8.0.1)\n\n* Bug fixes and stability improvements.\n* Support for iPhone X.\n\n### [8.0.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/8.0.0)\n\n* Xcode 9 support. (Swift 4)\n* Bug fixes and stability improvements.\n\n### [7.0.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/7.0.0)\n\n* Bug fixes and stability improvements.\n\n### [6.0.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/6.0.0)\n\n* Swift 3 support\n* **Breaking change**: Swiftified names of functions (you can see more details about it [here](https://github.com/xmartlabs/XLPagerTabStrip/Migration.md))\n\n### [5.1.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/5.0.0)\n\n* Xcode 8 support. (Swift 2.3)\n\n### [5.0.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/5.0.0)\n\n* Xcode 7.3 support.\n* Bug fixes and stability improvements.\n\n### [4.0.2](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/4.0.2)\n\n* Bug fixes\n\n### [4.0.1](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/4.0.1)\n\n* Bug fixes and stability improvements\n\n### [4.0.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/4.0.0)\n<!-- Released on 2016-01-20. -->\n\n* Base code migration from obj-c to swift.\n* Removed XL prefix from all types.\n\n### [3.0.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/3.0.0)\n\n* `selectedBarAlignment` added to `XLButtonBarView`.\n* `shouldCellsFillAvailableWidth` added to `XLButtonBarView`.\n* Bug fixes and Stability improvements.\n\n### [2.0.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/v2.0.0)\n\n* Added ability to change look and feel of selected tab.\n* `changeCurrentIndexProgressiveBlock` added to `XLButtonBarPagerTabStripViewController`.\n* `changeCurrentIndexBlock` added to `XLButtonBarPagerTabStripViewController`.\n* indxWasChanged parameter was added to `-(void)pagerTabStripViewController:(XLPagerTabStripViewController *)pagerTabStripViewController updateIndicatorFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex withProgressPercentage:(CGFloat)progressPercentage indexWasChanged:(BOOL)indexWasChanged;`\n* Bug Fix Issue #45: When the current tab is tapped by the user, and later swiping to another tab, the indicator now changes as expected.\n* Bug Fix: When scrolling between tabs with progressive indicator, the indicator now scrolls swiftly. It used to jump for an instant.\n* Bug Fix Issue #54: Twitter PagerTabStrip wasn't loading the navigation title correctly.\n* Bug Fix Issue #32: Demo for Nav Button Bar Example fix.\n* Bug Fix Issue #32: Twitter Pager white dots that mark which tab is currently selected is non selectable now.\n* Bug Fix Issue #22: moveToViewControllerAtIndex: in viewDidLoad or viewWillAppear is not reflected in buttonBarView.\n\n### [1.1.1](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/v1.1.1)\n\n* Nav Button example added\n* Support for iOS 7.0 and above\n\n### [1.1.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/v1.1.0)\n\n* Twitter pager added\n* Bug fixes and stability improvements\n\n### [1.0.0](https://github.com/xmartlabs/XLPagerTabStrip/releases/tag/v1.0.0)\n\n* Initial release\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "Contributing Guidelines\n--------------------------------------------------\n\nThis document provides general guidelines about how to contribute to the project. Keep in mind these important things before you start contributing.\n\n### Asking Questions\n\nWe do not use github issues for general library support. We think this questions should be posted on stack overflow using [XlPagerTabStrip](http://http://stackoverflow.com/questions/tagged/xlpagertabstrip) tag.\n\n### Reporting issues\n\n* Use [github issues](https://github.com/xmartlabs/XLPagerTabStrip/issues) to report a bug.\n* Before creating a new issue:\n  * Make sure you are using the [latest release](https://github.com/xmartlabs/XLPagerTabStrip/releases).\n  * Check if the issue was [already reported or fixed](https://github.com/xmartlabs/XLPagerTabStrip/issues?utf8=%E2%9C%93&q=is%3Aissue). Notice that it may not be released yet.\n  * If you found a match add a brief comment \"I have the same problem\" or \"+1\". This helps prioritize the issues addressing the most common and critical first. If possible add additional information to help us reproduce and fix the issue. Please use your best judgement.    \n* Reporting issues:\n  * Please include the following information to help maintainers to fix the problem faster:\n    * Xcode version you are using.\n    * iOS version you are targeting.\n    * Full Xcode console output of stack trace or code compilation error.\n    * Any other additional detail you think it would be useful to understand and solve the problem.\n\n\n### Pull requests\n\nThe easiest way to start contributing is searching open issues by `help wanted` tag. We also add a `difficulty` tag (difficulty: easy, difficulty: moderate, difficulty: hard) in order to give an idea of how complex it can be to implement the feature according maintainers project experience.\n\n* Add test coverage to the feature or fix. We only accept new feature pull requests that have related test coverage. This allows us to keep the library stable as we move forward.\n* Remember to document the new feature. We do not accept new feature pull requests without its associated documentation.\n* In case of a new feature please update the example project showing the feature.\n* Please only one fix or feature per pull request. This will increase the chances your feature will be merged.\n\n\n###### Suggested git workflow to contribute\n\n1. Fork the XLPagerTabStrip repository.\n2. Clone your forked project into your developer machine: `git clone git@github.com:<your-github-username>/XLPagerTabStrip.git`\n3. Add the original project repo as upstream repository in your forked project: `git remote add upstream git@github.com:xmartlabs/XLPagerTabStrip.git`\n4. Before starting a new feature make sure your forked master branch is synchronized upstream master branch. Considering you do not mere your pull request into master you can run: `git checkout master` and then `git pull upstream master`. Optionally `git push origin master`.\n5. Create a new branch. Note that the starting point is the upstream master branch HEAD. `git checkout -b my-feature-name`\n6. Stage all your changes `git add .` and commit them `git commit -m \"Your commit message\"`\n7. Make sure your branch is up to date with upstream master, `git pull --rebase upstream master`, resolve conflicts if necessary. This will move your commit to the top of git stack.\n8. Squash your commits into one commit. `git rebase -i HEAD~6` considering you did 6 commits.\n9. Push your branch into your forked remote repository.\n10. Create a new pull request adding any useful comment.\n\n\n###### Code style and conventions\n\nWe try to follow our [swift style guide](https://github.com/xmartlabs/Swift-Style-Guide). Following it is not strictly necessary to contribute and to have a pull request accepted but project maintainers try to follow it. We would love to hear your ideas to improve our code style and conventions. Feel free to contribute.\n\n\n### Feature proposal\n\nWe would love to hear your ideas and make a discussions about it.\n\n* Use github issues to make feature proposals.\n* We use `type: feature request` label to mark all [feature request issues](https://github.com/xmartlabs/XLPagerTabStrip/labels/type%3A%20feature%20request).\n* Before submitting your proposal make sure there is no similar feature request. If you found a match feel free to join the discussion or just add a brief \"+1\" if you think the feature is worth implementing.\n* Be as specific as possible providing a precise explanation of feature request so anyone can understand the problem and the benefits of solving it.\n"
  },
  {
    "path": "Cartfile.private",
    "content": "github \"Quick/Quick\"\ngithub \"Quick/Nimble\"\n"
  },
  {
    "path": "Example/Example/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  Example\n//\n//  Copyright © 2016 Xmartlabs SRL. All rights reserved.\n//\n\nimport UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n    var window: UIWindow?\n\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n        // Override point for customization after application launch.\n\n        UITabBar.appearance().tintColor = UIColor.init(red: 0.027, green: 0.725, blue: 0.608, alpha: 1)\n\n        _ = YoutubeExampleViewController(nibName: nil, bundle: nil)\n\n        return true\n    }\n\n    func applicationWillResignActive(_ application: UIApplication) {\n        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.\n        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.\n    }\n\n    func applicationDidEnterBackground(_ application: UIApplication) {\n        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.\n        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.\n    }\n\n    func applicationWillEnterForeground(_ application: UIApplication) {\n        // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.\n    }\n\n    func applicationDidBecomeActive(_ application: UIApplication) {\n        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.\n    }\n\n    func applicationWillTerminate(_ application: UIApplication) {\n        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.\n    }\n\n}\n"
  },
  {
    "path": "Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Simpsons/Apu_Nahasapeemapetilon.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"Apu_Nahasapeemapetilon.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Simpsons/Bart_Simpsons.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"Bart_Simpsons.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Simpsons/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Simpsons/Homer_Simpsons.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"Homer_Simpsons.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Simpsons/Lisa_Simpsons.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"Lisa_Simpsons.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Simpsons/Maggie_Simpsons.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"Maggie_Simpsons.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Simpsons/Marge_Simpsons.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"Marge_Simpsons.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Simpsons/Montgomery_Burns.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"Montgomery_Burns.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Simpsons/Ned_Flanders.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"Ned_Flanders.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Simpsons/Otto_Mann.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"Otto_Mann.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Simpsons/default-avatar.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"default-avatar@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/TabBar/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/TabBar/icon_bar.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"a_bar.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"a_bar@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/TabBar/icon_button.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"a_button.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"a_button@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/TabBar/icon_segmented.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"a_segmented.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"a_segmented@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/TabBar/icon_twitter.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"a_twitter.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"a_twitter@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Youtube/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Youtube/home.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"home@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Youtube/more_options.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"more_options@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"more_options@3x.png\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Youtube/profile.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"profile@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Youtube/search.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"search@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"search@2x-1.png\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/Assets.xcassets/Youtube/trending.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"trending@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Example/BarExampleViewController.swift",
    "content": "//  BarExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport XLPagerTabStrip\n\nclass BarExampleViewController: BarPagerTabStripViewController {\n    var isReload = false\n\n    required init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n    }\n\n    override func viewDidLoad() {\n\n        // set up style before super view did load is executed\n        settings.style.selectedBarBackgroundColor = .orange\n        // - \n\n        super.viewDidLoad()\n    }\n\n    // MARK: - PagerTabStripDataSource\n\n    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {\n\n        let child_1 = TableChildExampleViewController(style: .plain, itemInfo: \"Table View\")\n        let child_2 = ChildExampleViewController(itemInfo: \"View\")\n        let child_3 = TableChildExampleViewController(style: .grouped, itemInfo: \"Table View 2\")\n        let child_4 = ChildExampleViewController(itemInfo: \"View 2\")\n\n        guard isReload else {\n            return [child_1, child_2, child_3, child_4]\n        }\n\n        var childViewControllers = [child_1, child_2, child_3, child_4]\n        for index in childViewControllers.indices {\n            let nElements = childViewControllers.count - index\n            let n = (Int(arc4random()) % nElements) + index\n            if n != index {\n                childViewControllers.swapAt(index, n)\n            }\n        }\n        let nItems = 1 + (arc4random() % 4)\n        return Array(childViewControllers.prefix(Int(nItems)))\n    }\n\n    override func reloadPagerTabStripView() {\n        isReload = true\n        if arc4random() % 2 == 0 {\n            pagerBehaviour = .progressive(skipIntermediateViewControllers: arc4random() % 2 == 0, elasticIndicatorLimit: arc4random() % 2 == 0 )\n        } else {\n            pagerBehaviour = .common(skipIntermediateViewControllers: arc4random() % 2 == 0)\n        }\n        super.reloadPagerTabStripView()\n    }\n}\n"
  },
  {
    "path": "Example/Example/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"9531\" systemVersion=\"15C50\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"9529\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Llm-lL-Icb\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"xb3-aO-Qok\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n                    </view>\n                    <simulatedStatusBarMetrics key=\"simulatedStatusBarMetrics\" statusBarStyle=\"lightContent\"/>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "Example/Example/Base.lproj/Storyboard.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"SCa-L8-uTr\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Segmented Example View Controller-->\n        <scene sceneID=\"xrm-yh-2gW\">\n            <objects>\n                <viewController id=\"h8P-u9-NhP\" customClass=\"SegmentedExampleViewController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"lwA-FU-jT1\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"HdL-Q7-Anl\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"BPt-hn-p4R\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"554\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <subviews>\n                            <scrollView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"D5t-1q-KDh\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"554\"/>\n                                <color key=\"backgroundColor\" red=\"0.93725490196078431\" green=\"0.93725490196078431\" blue=\"0.95686274509803926\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </scrollView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"D5t-1q-KDh\" firstAttribute=\"top\" secondItem=\"lwA-FU-jT1\" secondAttribute=\"bottom\" id=\"57b-HV-bZv\"/>\n                            <constraint firstItem=\"D5t-1q-KDh\" firstAttribute=\"leading\" secondItem=\"BPt-hn-p4R\" secondAttribute=\"leading\" id=\"ROY-9D-t0I\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"D5t-1q-KDh\" secondAttribute=\"trailing\" id=\"eaT-9S-B6g\"/>\n                            <constraint firstItem=\"HdL-Q7-Anl\" firstAttribute=\"top\" secondItem=\"D5t-1q-KDh\" secondAttribute=\"bottom\" id=\"mYL-zm-zb0\"/>\n                        </constraints>\n                    </view>\n                    <extendedEdge key=\"edgesForExtendedLayout\" top=\"YES\"/>\n                    <navigationItem key=\"navigationItem\" id=\"l1f-vB-6A8\">\n                        <nil key=\"title\"/>\n                        <segmentedControl key=\"titleView\" opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"top\" segmentControlStyle=\"bar\" selectedSegmentIndex=\"0\" id=\"31B-gy-WIH\">\n                            <rect key=\"frame\" x=\"20\" y=\"7\" width=\"304\" height=\"30\"/>\n                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                            <segments>\n                                <segment title=\"First\"/>\n                                <segment title=\"Second\"/>\n                            </segments>\n                            <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        </segmentedControl>\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"Ndu-OA-iL5\">\n                            <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            <connections>\n                                <action selector=\"reloadTapped:\" destination=\"h8P-u9-NhP\" id=\"6uG-1h-owY\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <connections>\n                        <outlet property=\"containerView\" destination=\"D5t-1q-KDh\" id=\"sbr-x5-J1L\"/>\n                        <outlet property=\"segmentedControl\" destination=\"31B-gy-WIH\" id=\"TxS-id-BP5\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"7KA-v4-CBs\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2214\" y=\"-167\"/>\n        </scene>\n        <!--Bar-->\n        <scene sceneID=\"sWd-rV-F4O\">\n            <objects>\n                <viewController id=\"uba-Iz-2L2\" customClass=\"ReloadExampleViewController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Emc-3r-MJi\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"NbE-e0-l2n\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Mqm-sG-Qyv\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"618\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <subviews>\n                            <containerView contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"qkQ-UG-MKG\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"121\" width=\"375\" height=\"497\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <connections>\n                                    <segue destination=\"MOL-Zx-vbf\" kind=\"embed\" id=\"i47-4L-xIB\"/>\n                                </connections>\n                            </containerView>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"jSE-G2-qe6\">\n                                <rect key=\"frame\" x=\"299\" y=\"83\" width=\"56\" height=\"34\"/>\n                                <state key=\"normal\" title=\"Reload\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                                <connections>\n                                    <action selector=\"reloadTapped:\" destination=\"uba-Iz-2L2\" eventType=\"touchUpInside\" id=\"KNI-Zr-Zz0\"/>\n                                </connections>\n                            </button>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kmN-fg-NDL\">\n                                <rect key=\"frame\" x=\"20\" y=\"82\" width=\"46\" height=\"34\"/>\n                                <state key=\"normal\" title=\"Close\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                                <connections>\n                                    <action selector=\"closeTapped:\" destination=\"uba-Iz-2L2\" eventType=\"touchUpInside\" id=\"B1v-kE-kC0\"/>\n                                </connections>\n                            </button>\n                            <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Storyboard Demo\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumScaleFactor=\"0.5\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"cZN-qT-VUq\">\n                                <rect key=\"frame\" x=\"20\" y=\"50\" width=\"335\" height=\"21\"/>\n                                <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"17\"/>\n                                <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"0.027450980390000001\" green=\"0.72549019609999998\" blue=\"0.60784313729999995\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" relation=\"greaterThanOrEqual\" secondItem=\"kmN-fg-NDL\" secondAttribute=\"trailing\" constant=\"50\" id=\"1ha-hv-22z\"/>\n                            <constraint firstItem=\"kmN-fg-NDL\" firstAttribute=\"top\" secondItem=\"Emc-3r-MJi\" secondAttribute=\"bottom\" constant=\"62\" id=\"7Rq-MO-b4m\"/>\n                            <constraint firstItem=\"kmN-fg-NDL\" firstAttribute=\"leading\" secondItem=\"Mqm-sG-Qyv\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"Cpu-aA-0rq\"/>\n                            <constraint firstItem=\"NbE-e0-l2n\" firstAttribute=\"top\" secondItem=\"qkQ-UG-MKG\" secondAttribute=\"bottom\" id=\"K6Q-s5-nzV\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"jSE-G2-qe6\" secondAttribute=\"trailing\" constant=\"20\" symbolic=\"YES\" id=\"MMy-Mk-MhJ\"/>\n                            <constraint firstItem=\"jSE-G2-qe6\" firstAttribute=\"top\" secondItem=\"Emc-3r-MJi\" secondAttribute=\"bottom\" constant=\"63\" id=\"NWc-fy-XOc\"/>\n                            <constraint firstItem=\"cZN-qT-VUq\" firstAttribute=\"leading\" secondItem=\"Mqm-sG-Qyv\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"OiW-h4-ZuI\"/>\n                            <constraint firstItem=\"qkQ-UG-MKG\" firstAttribute=\"leading\" secondItem=\"Mqm-sG-Qyv\" secondAttribute=\"leading\" id=\"bxR-0b-lVS\"/>\n                            <constraint firstItem=\"jSE-G2-qe6\" firstAttribute=\"leading\" relation=\"greaterThanOrEqual\" secondItem=\"Mqm-sG-Qyv\" secondAttribute=\"leading\" constant=\"50\" id=\"cpm-b1-Y9n\"/>\n                            <constraint firstItem=\"cZN-qT-VUq\" firstAttribute=\"top\" secondItem=\"Emc-3r-MJi\" secondAttribute=\"bottom\" constant=\"30\" id=\"fk2-dC-KBI\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"qkQ-UG-MKG\" secondAttribute=\"trailing\" id=\"meZ-CC-eqh\"/>\n                            <constraint firstItem=\"qkQ-UG-MKG\" firstAttribute=\"top\" secondItem=\"Emc-3r-MJi\" secondAttribute=\"bottom\" constant=\"101\" id=\"nJw-ag-ddh\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"cZN-qT-VUq\" secondAttribute=\"trailing\" constant=\"20\" symbolic=\"YES\" id=\"ue6-fg-BYA\"/>\n                        </constraints>\n                    </view>\n                    <tabBarItem key=\"tabBarItem\" title=\"Bar\" image=\"icon_bar\" id=\"1d9-i6-g9L\">\n                        <offsetWrapper key=\"titlePositionAdjustment\" horizontal=\"0.0\" vertical=\"-4\"/>\n                    </tabBarItem>\n                    <navigationItem key=\"navigationItem\" id=\"ni8-Kh-JRq\"/>\n                    <connections>\n                        <outlet property=\"titleLabel\" destination=\"cZN-qT-VUq\" id=\"tRG-O0-13z\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"jkN-pv-eFH\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2140\" y=\"-827.13643178410803\"/>\n        </scene>\n        <!--Buttons Example-->\n        <scene sceneID=\"c3d-TB-Hyh\">\n            <objects>\n                <viewController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"3jo-Zp-rsN\" customClass=\"ReloadExampleViewController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"sYC-OQ-Mga\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"LUh-C3-i05\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"TXd-Bq-amB\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"618\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <containerView opaque=\"NO\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"9rp-Lg-ckk\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"554\"/>\n                                <connections>\n                                    <segue destination=\"KF9-Il-rUn\" kind=\"embed\" id=\"PEH-Jc-gva\"/>\n                                </connections>\n                            </containerView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"9rp-Lg-ckk\" firstAttribute=\"top\" secondItem=\"sYC-OQ-Mga\" secondAttribute=\"bottom\" id=\"Bkl-Sr-KoE\"/>\n                            <constraint firstItem=\"LUh-C3-i05\" firstAttribute=\"top\" secondItem=\"9rp-Lg-ckk\" secondAttribute=\"bottom\" id=\"Mel-a7-tS5\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"9rp-Lg-ckk\" secondAttribute=\"trailing\" id=\"UY1-sK-nWK\"/>\n                            <constraint firstItem=\"9rp-Lg-ckk\" firstAttribute=\"leading\" secondItem=\"TXd-Bq-amB\" secondAttribute=\"leading\" id=\"vBT-dV-v2T\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Buttons Example\" id=\"anf-yu-jjb\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"frU-Vs-ZeP\">\n                            <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            <connections>\n                                <action selector=\"reloadTapped:\" destination=\"3jo-Zp-rsN\" id=\"eJt-FI-qXo\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"79T-iZ-rpA\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2206\" y=\"515\"/>\n        </scene>\n        <!--Bar Example View Controller-->\n        <scene sceneID=\"Ufs-nK-0Io\">\n            <objects>\n                <viewController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"MOL-Zx-vbf\" customClass=\"BarExampleViewController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"hGu-f8-VlE\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"Twz-Ee-IJq\"/>\n                    </layoutGuides>\n                    <view key=\"view\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" id=\"fnu-Fx-A6b\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"497\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"srh-qY-UAa\" customClass=\"BarView\" customModule=\"XLPagerTabStrip\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"5\"/>\n                                <color key=\"backgroundColor\" red=\"0.029917803763441025\" green=\"0.92659837372448983\" blue=\"0.78518703254703159\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"5\" id=\"EuL-ap-Nyh\"/>\n                                </constraints>\n                            </view>\n                            <scrollView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" bounces=\"NO\" alwaysBounceHorizontal=\"YES\" pagingEnabled=\"YES\" showsHorizontalScrollIndicator=\"NO\" showsVerticalScrollIndicator=\"NO\" bouncesZoom=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"gaM-gk-dVJ\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"25\" width=\"375\" height=\"472\"/>\n                                <color key=\"backgroundColor\" red=\"0.93725490196078431\" green=\"0.93725490196078431\" blue=\"0.95686274509803926\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </scrollView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"srh-qY-UAa\" secondAttribute=\"trailing\" id=\"NOC-hJ-B3n\"/>\n                            <constraint firstItem=\"gaM-gk-dVJ\" firstAttribute=\"top\" secondItem=\"srh-qY-UAa\" secondAttribute=\"bottom\" id=\"PWm-Hj-8ij\"/>\n                            <constraint firstItem=\"Twz-Ee-IJq\" firstAttribute=\"top\" secondItem=\"gaM-gk-dVJ\" secondAttribute=\"bottom\" id=\"XIC-x4-8zR\"/>\n                            <constraint firstItem=\"srh-qY-UAa\" firstAttribute=\"top\" secondItem=\"hGu-f8-VlE\" secondAttribute=\"bottom\" id=\"clp-Ty-ewx\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"gaM-gk-dVJ\" secondAttribute=\"trailing\" id=\"d54-qR-N0V\"/>\n                            <constraint firstItem=\"gaM-gk-dVJ\" firstAttribute=\"leading\" secondItem=\"fnu-Fx-A6b\" secondAttribute=\"leading\" id=\"tbZ-mZ-r06\"/>\n                            <constraint firstItem=\"srh-qY-UAa\" firstAttribute=\"leading\" secondItem=\"fnu-Fx-A6b\" secondAttribute=\"leading\" id=\"wjd-Ul-s0i\"/>\n                        </constraints>\n                    </view>\n                    <toolbarItems/>\n                    <connections>\n                        <outlet property=\"barView\" destination=\"srh-qY-UAa\" id=\"A6r-8O-0MY\"/>\n                        <outlet property=\"containerView\" destination=\"gaM-gk-dVJ\" id=\"NqV-Sh-lY6\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"cKU-zQ-C4r\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"3026\" y=\"-825\"/>\n        </scene>\n        <!--Table View Controller-->\n        <scene sceneID=\"BAh-n4-E4d\">\n            <objects>\n                <tableViewController id=\"SCa-L8-uTr\" sceneMemberID=\"viewController\">\n                    <tableView key=\"view\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" dataMode=\"static\" style=\"grouped\" separatorStyle=\"default\" rowHeight=\"44\" sectionHeaderHeight=\"18\" sectionFooterHeight=\"18\" id=\"JVf-JY-fRh\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" red=\"0.93725490199999995\" green=\"0.93725490199999995\" blue=\"0.95686274510000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <sections>\n                            <tableViewSection id=\"8oO-ln-2uT\">\n                                <cells>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" indentationWidth=\"10\" textLabel=\"Wj6-fs-BjA\" style=\"IBUITableViewCellStyleDefault\" id=\"oTF-WE-AbG\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"35\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"oTF-WE-AbG\" id=\"6M8-2g-4Tv\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"43.5\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"PageTabController Types\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"Wj6-fs-BjA\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"0.0\" width=\"343\" height=\"43.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"ptL-BW-nEP\" kind=\"presentation\" id=\"CCB-eR-iX0\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                </cells>\n                            </tableViewSection>\n                            <tableViewSection id=\"dTY-aA-JSb\">\n                                <cells>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" indentationWidth=\"10\" textLabel=\"GIb-gr-QYX\" style=\"IBUITableViewCellStyleDefault\" id=\"Lqx-q4-U6Y\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"115\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"Lqx-q4-U6Y\" id=\"6Oi-8U-mzD\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"43.5\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Instagram Example\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"GIb-gr-QYX\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"0.0\" width=\"343\" height=\"43.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"UaK-8y-2uY\" kind=\"presentation\" id=\"sbw-CJ-r5j\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" indentationWidth=\"10\" textLabel=\"68O-MH-NQl\" style=\"IBUITableViewCellStyleDefault\" id=\"5tn-pD-005\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"159\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"5tn-pD-005\" id=\"U8A-o0-QLd\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"43.5\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Youtube Example\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"68O-MH-NQl\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"0.0\" width=\"343\" height=\"43.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"Pux-pd-JeW\" kind=\"presentation\" id=\"QIG-fU-qdz\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" indentationWidth=\"10\" textLabel=\"yT9-cg-ta8\" style=\"IBUITableViewCellStyleDefault\" id=\"Vv0-op-FMh\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"203\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"Vv0-op-FMh\" id=\"gmz-RN-PgI\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"43.5\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Youtube with Label Example\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"yT9-cg-ta8\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"0.0\" width=\"343\" height=\"43.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"wtp-ZI-nBV\" kind=\"presentation\" id=\"D5b-rl-ZDt\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" indentationWidth=\"10\" textLabel=\"bPv-uB-GeS\" style=\"IBUITableViewCellStyleDefault\" id=\"WB2-oq-b4x\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"247\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"WB2-oq-b4x\" id=\"2mV-U6-6pj\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"43.5\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Spotify Example\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"bPv-uB-GeS\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"0.0\" width=\"343\" height=\"43.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"X2Z-nL-0dy\" kind=\"presentation\" id=\"cSg-pT-kjb\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                </cells>\n                            </tableViewSection>\n                        </sections>\n                        <connections>\n                            <outlet property=\"dataSource\" destination=\"SCa-L8-uTr\" id=\"qZI-nB-nKG\"/>\n                            <outlet property=\"delegate\" destination=\"SCa-L8-uTr\" id=\"V5P-Wq-Fu2\"/>\n                        </connections>\n                    </tableView>\n                    <simulatedStatusBarMetrics key=\"simulatedStatusBarMetrics\"/>\n                </tableViewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"tTl-hO-8eV\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-866\" y=\"-321\"/>\n        </scene>\n        <!--Tab Bar Controller-->\n        <scene sceneID=\"Lv9-yU-Knu\">\n            <objects>\n                <tabBarController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"ptL-BW-nEP\" customClass=\"TabBarController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <toolbarItems/>\n                    <simulatedStatusBarMetrics key=\"simulatedStatusBarMetrics\" statusBarStyle=\"lightContent\"/>\n                    <nil key=\"simulatedBottomBarMetrics\"/>\n                    <tabBar key=\"tabBar\" contentMode=\"scaleToFill\" translucent=\"NO\" id=\"Ki8-MR-faU\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"1000\" height=\"1000\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"tintColor\" red=\"0.027450980390000001\" green=\"0.72549019609999998\" blue=\"0.60784313729999995\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    </tabBar>\n                    <connections>\n                        <segue destination=\"uba-Iz-2L2\" kind=\"relationship\" relationship=\"viewControllers\" id=\"hNx-yW-oR3\"/>\n                        <segue destination=\"g7J-zS-0bu\" kind=\"relationship\" relationship=\"viewControllers\" id=\"WG0-Of-C4e\"/>\n                        <segue destination=\"jWp-2W-r7X\" kind=\"relationship\" relationship=\"viewControllers\" id=\"uoj-hE-05b\"/>\n                        <segue destination=\"b3c-Kr-Yhe\" kind=\"relationship\" relationship=\"viewControllers\" id=\"xMr-zV-ubn\"/>\n                        <segue destination=\"uPL-4b-W3j\" kind=\"relationship\" relationship=\"viewControllers\" id=\"klw-Rc-meT\"/>\n                    </connections>\n                </tabBarController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"YsA-SS-Qae\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"413\" y=\"508\"/>\n        </scene>\n        <!--ACTIVITY-->\n        <scene sceneID=\"4ea-9j-0wV\">\n            <objects>\n                <viewController id=\"Nog-o6-2IJ\" customClass=\"InstagramExampleViewController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"S6g-Ki-yYf\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"MRO-1B-lmT\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"sAq-sJ-Hyx\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"603\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"mzt-Sj-o9z\" customClass=\"ButtonBarView\" customModule=\"XLPagerTabStrip\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"40\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"40\" id=\"qO1-Vw-pEi\"/>\n                                </constraints>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"1ev-zw-4e0\">\n                                    <size key=\"itemSize\" width=\"40\" height=\"40\"/>\n                                    <size key=\"headerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <size key=\"footerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <inset key=\"sectionInset\" minX=\"0.0\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                </collectionViewFlowLayout>\n                                <cells/>\n                            </collectionView>\n                            <scrollView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"qpV-GA-z3E\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"40\" width=\"375\" height=\"563\"/>\n                            </scrollView>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"9ek-wn-vCu\">\n                                <rect key=\"frame\" x=\"28\" y=\"558\" width=\"84\" height=\"33\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"0.99997437000274658\" blue=\"0.99999129772186279\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" constant=\"84\" id=\"mwL-yn-Fxe\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"17\"/>\n                                <state key=\"normal\" title=\"CLOSE\"/>\n                                <connections>\n                                    <action selector=\"closeAction:\" destination=\"Nog-o6-2IJ\" eventType=\"touchUpInside\" id=\"Kz1-wl-TbK\"/>\n                                </connections>\n                            </button>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"mzt-Sj-o9z\" firstAttribute=\"leading\" secondItem=\"sAq-sJ-Hyx\" secondAttribute=\"leading\" id=\"Aoc-dJ-a7o\"/>\n                            <constraint firstItem=\"9ek-wn-vCu\" firstAttribute=\"leading\" secondItem=\"sAq-sJ-Hyx\" secondAttribute=\"leadingMargin\" constant=\"12\" id=\"Hhw-CR-gIL\"/>\n                            <constraint firstItem=\"MRO-1B-lmT\" firstAttribute=\"top\" secondItem=\"9ek-wn-vCu\" secondAttribute=\"bottom\" constant=\"12\" id=\"K6b-Il-tUq\"/>\n                            <constraint firstItem=\"qpV-GA-z3E\" firstAttribute=\"leading\" secondItem=\"sAq-sJ-Hyx\" secondAttribute=\"leading\" id=\"OeX-Ij-Plv\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"qpV-GA-z3E\" secondAttribute=\"trailing\" id=\"TuX-C1-B58\"/>\n                            <constraint firstItem=\"qpV-GA-z3E\" firstAttribute=\"top\" secondItem=\"mzt-Sj-o9z\" secondAttribute=\"bottom\" id=\"XJC-Gq-PXT\"/>\n                            <constraint firstItem=\"mzt-Sj-o9z\" firstAttribute=\"top\" secondItem=\"S6g-Ki-yYf\" secondAttribute=\"bottom\" id=\"c2z-nI-QeM\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"mzt-Sj-o9z\" secondAttribute=\"trailing\" id=\"ksD-G3-ZFA\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"qpV-GA-z3E\" secondAttribute=\"bottom\" id=\"ne5-8Z-LlT\"/>\n                        </constraints>\n                    </view>\n                    <toolbarItems/>\n                    <navigationItem key=\"navigationItem\" title=\"ACTIVITY\" id=\"uUb-iP-vh5\"/>\n                    <connections>\n                        <outlet property=\"buttonBarView\" destination=\"mzt-Sj-o9z\" id=\"7Bb-jR-elW\"/>\n                        <outlet property=\"containerView\" destination=\"qpV-GA-z3E\" id=\"RZf-SK-fcK\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"8gZ-dq-b0g\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"638\" y=\"-448\"/>\n        </scene>\n        <!--Segmented-->\n        <scene sceneID=\"gqT-2d-jBf\">\n            <objects>\n                <navigationController id=\"g7J-zS-0bu\" customClass=\"NavController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <tabBarItem key=\"tabBarItem\" title=\"Segmented\" image=\"icon_segmented\" id=\"cv3-rF-uFc\">\n                        <offsetWrapper key=\"titlePositionAdjustment\" horizontal=\"0.0\" vertical=\"-4\"/>\n                    </tabBarItem>\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" opaque=\"NO\" contentMode=\"scaleToFill\" translucent=\"NO\" id=\"TRx-vY-PeE\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"barTintColor\" red=\"0.027450980390000001\" green=\"0.72549019609999998\" blue=\"0.60784313729999995\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"h8P-u9-NhP\" kind=\"relationship\" relationship=\"rootViewController\" id=\"Srv-IP-2eX\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"lsc-9V-4Tm\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1329\" y=\"-167\"/>\n        </scene>\n        <!--Button-->\n        <scene sceneID=\"aQc-cn-j2T\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"jWp-2W-r7X\" customClass=\"NavController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <tabBarItem key=\"tabBarItem\" title=\"Button\" image=\"icon_button\" id=\"xNX-u1-4Tr\">\n                        <offsetWrapper key=\"titlePositionAdjustment\" horizontal=\"0.0\" vertical=\"-4\"/>\n                    </tabBarItem>\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" id=\"2I8-g6-D4S\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"barTintColor\" red=\"0.027450980390000001\" green=\"0.72549019609999998\" blue=\"0.60784313729999995\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <textAttributes key=\"titleTextAttributes\">\n                            <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"17\"/>\n                            <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                        </textAttributes>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"3jo-Zp-rsN\" kind=\"relationship\" relationship=\"rootViewController\" id=\"Kvi-Ra-5dQ\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"U4T-yC-y5O\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1321\" y=\"515\"/>\n        </scene>\n        <!--Button Bar Example View Controller-->\n        <scene sceneID=\"Ctn-j0-KV6\">\n            <objects>\n                <viewController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"KF9-Il-rUn\" customClass=\"ButtonBarExampleViewController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"PhK-DQ-FzX\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"DoJ-0a-eFQ\"/>\n                    </layoutGuides>\n                    <view key=\"view\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" id=\"nbo-eG-9Of\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"554\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <scrollView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"zn6-8Q-9P3\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"63\" width=\"375\" height=\"490\"/>\n                            </scrollView>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"FH0-FX-IMd\" customClass=\"ButtonBarView\" customModule=\"XLPagerTabStrip\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"43\"/>\n                                <color key=\"backgroundColor\" red=\"0.027450980390000001\" green=\"0.72549019609999998\" blue=\"0.60784313729999995\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"43\" id=\"5Gm-jk-c1U\"/>\n                                </constraints>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" scrollDirection=\"horizontal\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"q1I-j6-uGl\">\n                                    <size key=\"itemSize\" width=\"79\" height=\"42\"/>\n                                    <size key=\"headerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <size key=\"footerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <inset key=\"sectionInset\" minX=\"35\" minY=\"0.0\" maxX=\"35\" maxY=\"0.0\"/>\n                                </collectionViewFlowLayout>\n                                <cells/>\n                            </collectionView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"zn6-8Q-9P3\" secondAttribute=\"trailing\" id=\"00Y-OX-DEu\"/>\n                            <constraint firstItem=\"FH0-FX-IMd\" firstAttribute=\"leading\" secondItem=\"nbo-eG-9Of\" secondAttribute=\"leading\" id=\"9Vk-yi-Pua\"/>\n                            <constraint firstItem=\"zn6-8Q-9P3\" firstAttribute=\"leading\" secondItem=\"nbo-eG-9Of\" secondAttribute=\"leading\" id=\"dYD-LR-3dl\"/>\n                            <constraint firstItem=\"zn6-8Q-9P3\" firstAttribute=\"top\" secondItem=\"PhK-DQ-FzX\" secondAttribute=\"bottom\" constant=\"43\" id=\"rzn-Vc-SYa\"/>\n                            <constraint firstItem=\"FH0-FX-IMd\" firstAttribute=\"top\" secondItem=\"PhK-DQ-FzX\" secondAttribute=\"bottom\" id=\"s00-0U-AXh\"/>\n                            <constraint firstItem=\"DoJ-0a-eFQ\" firstAttribute=\"top\" secondItem=\"zn6-8Q-9P3\" secondAttribute=\"bottom\" constant=\"1\" id=\"wfO-Dh-ZIP\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"FH0-FX-IMd\" secondAttribute=\"trailing\" id=\"z4H-9f-Vyy\"/>\n                        </constraints>\n                    </view>\n                    <toolbarItems/>\n                    <connections>\n                        <outlet property=\"buttonBarView\" destination=\"FH0-FX-IMd\" id=\"c7n-e6-pxW\"/>\n                        <outlet property=\"containerView\" destination=\"zn6-8Q-9P3\" id=\"4xs-sV-fxb\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"ls9-Xb-7by\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"3018\" y=\"514.5\"/>\n        </scene>\n        <!--Twitter Example View Controller-->\n        <scene sceneID=\"Zfp-Dk-WxL\">\n            <objects>\n                <viewController id=\"Vhq-do-uI2\" customClass=\"TwitterExampleViewController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"OfJ-gb-drI\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"64r-dM-ghd\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Eak-dg-otx\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"554\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <subviews>\n                            <scrollView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"A96-PT-Aon\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"554\"/>\n                                <color key=\"backgroundColor\" red=\"0.93725490196078431\" green=\"0.93725490196078431\" blue=\"0.95686274509803926\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </scrollView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"A96-PT-Aon\" firstAttribute=\"top\" secondItem=\"OfJ-gb-drI\" secondAttribute=\"bottom\" id=\"Hq8-hS-mpA\"/>\n                            <constraint firstItem=\"A96-PT-Aon\" firstAttribute=\"leading\" secondItem=\"Eak-dg-otx\" secondAttribute=\"leading\" id=\"WLj-sR-uGh\"/>\n                            <constraint firstItem=\"64r-dM-ghd\" firstAttribute=\"top\" secondItem=\"A96-PT-Aon\" secondAttribute=\"bottom\" id=\"WbQ-8w-VJ6\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"A96-PT-Aon\" secondAttribute=\"trailing\" id=\"qxY-dq-VCq\"/>\n                        </constraints>\n                    </view>\n                    <extendedEdge key=\"edgesForExtendedLayout\" top=\"YES\"/>\n                    <navigationItem key=\"navigationItem\" id=\"0Xx-RA-ktC\">\n                        <nil key=\"title\"/>\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"mhz-8g-Ux7\">\n                            <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            <connections>\n                                <action selector=\"reloadTapped:\" destination=\"Vhq-do-uI2\" id=\"fx6-UJ-VG1\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <connections>\n                        <outlet property=\"containerView\" destination=\"A96-PT-Aon\" id=\"7oh-72-sHX\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"6HK-op-tmY\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"3026\" y=\"-1490\"/>\n        </scene>\n        <!--Twitter-->\n        <scene sceneID=\"xRb-7u-bt9\">\n            <objects>\n                <navigationController id=\"uPL-4b-W3j\" customClass=\"NavController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <tabBarItem key=\"tabBarItem\" title=\"Twitter\" image=\"icon_twitter\" id=\"Iyb-I5-OSg\">\n                        <offsetWrapper key=\"titlePositionAdjustment\" horizontal=\"0.0\" vertical=\"-4\"/>\n                    </tabBarItem>\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" opaque=\"NO\" contentMode=\"scaleToFill\" translucent=\"NO\" id=\"iMm-hr-oOU\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"barTintColor\" red=\"0.027450980390000001\" green=\"0.72549019609999998\" blue=\"0.60784313729999995\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"Vhq-do-uI2\" kind=\"relationship\" relationship=\"rootViewController\" id=\"rTN-Tc-B3c\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"O48-vq-kph\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2141\" y=\"-1490\"/>\n        </scene>\n        <!--Nav Button-->\n        <scene sceneID=\"aV7-hw-LAb\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"b3c-Kr-Yhe\" customClass=\"NavController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <tabBarItem key=\"tabBarItem\" title=\"Nav Button\" image=\"icon_button\" id=\"04T-Ov-veV\">\n                        <offsetWrapper key=\"titlePositionAdjustment\" horizontal=\"0.0\" vertical=\"-4\"/>\n                    </tabBarItem>\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" id=\"PUj-LI-AQ6\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"barTintColor\" red=\"0.027450980390000001\" green=\"0.72549019609999998\" blue=\"0.60784313729999995\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <textAttributes key=\"titleTextAttributes\">\n                            <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"17\"/>\n                            <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                        </textAttributes>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"y3e-AR-HhJ\" kind=\"relationship\" relationship=\"rootViewController\" id=\"VFJ-we-pbZ\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"gov-0c-Zkm\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1329\" y=\"-2176\"/>\n        </scene>\n        <!--Nav Button Bar Example View Controller-->\n        <scene sceneID=\"fS9-Jp-SNl\">\n            <objects>\n                <viewController id=\"y3e-AR-HhJ\" customClass=\"NavButtonBarExampleViewController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"SCP-tk-3Q4\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"blo-XS-xG2\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Z8p-ri-ydp\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"554\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <subviews>\n                            <scrollView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"QoM-XF-R9X\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"554\"/>\n                                <color key=\"backgroundColor\" red=\"0.93725490199999995\" green=\"0.93725490199999995\" blue=\"0.95686274510000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </scrollView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"QoM-XF-R9X\" firstAttribute=\"leading\" secondItem=\"Z8p-ri-ydp\" secondAttribute=\"leading\" id=\"BKv-K4-OD3\"/>\n                            <constraint firstItem=\"blo-XS-xG2\" firstAttribute=\"top\" secondItem=\"QoM-XF-R9X\" secondAttribute=\"bottom\" id=\"EQI-ir-zAd\"/>\n                            <constraint firstItem=\"QoM-XF-R9X\" firstAttribute=\"top\" secondItem=\"SCP-tk-3Q4\" secondAttribute=\"bottom\" id=\"YXa-W1-wcf\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"QoM-XF-R9X\" secondAttribute=\"trailing\" id=\"Z2y-Av-PGp\"/>\n                        </constraints>\n                    </view>\n                    <extendedEdge key=\"edgesForExtendedLayout\"/>\n                    <navigationItem key=\"navigationItem\" id=\"0ef-Sm-22o\">\n                        <nil key=\"title\"/>\n                    </navigationItem>\n                    <connections>\n                        <outlet property=\"containerView\" destination=\"QoM-XF-R9X\" id=\"pgt-p1-mv2\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"JuC-pH-qOM\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2206\" y=\"-2176\"/>\n        </scene>\n        <!--Nav Controller-->\n        <scene sceneID=\"BoY-J3-ved\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"UaK-8y-2uY\" customClass=\"NavController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <toolbarItems/>\n                    <simulatedStatusBarMetrics key=\"simulatedStatusBarMetrics\" statusBarStyle=\"lightContent\"/>\n                    <nil key=\"simulatedBottomBarMetrics\"/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" translucent=\"NO\" id=\"nn8-x2-liB\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"barTintColor\" red=\"0.086274509803921567\" green=\"0.2627450980392157\" blue=\"0.45490196078431372\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <textAttributes key=\"titleTextAttributes\">\n                            <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <color key=\"textShadowColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                        </textAttributes>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <toolbar key=\"toolbar\" opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"4QH-2O-KOp\">\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </toolbar>\n                    <connections>\n                        <segue destination=\"Nog-o6-2IJ\" kind=\"relationship\" relationship=\"rootViewController\" id=\"ZaA-Pl-99R\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"8zm-PZ-Mfa\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-139\" y=\"-783\"/>\n        </scene>\n        <!--Nav Controller-->\n        <scene sceneID=\"5ht-56-wkb\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"X2Z-nL-0dy\" customClass=\"NavController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <toolbarItems/>\n                    <simulatedStatusBarMetrics key=\"simulatedStatusBarMetrics\" statusBarStyle=\"lightContent\"/>\n                    <nil key=\"simulatedBottomBarMetrics\"/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" translucent=\"NO\" id=\"jNK-DV-g6h\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <color key=\"barTintColor\" red=\"0.074509803921568626\" green=\"0.078431372549019607\" blue=\"0.078431372549019607\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <textAttributes key=\"titleTextAttributes\">\n                            <fontDescription key=\"fontDescription\" type=\"system\" weight=\"light\" pointSize=\"16\"/>\n                            <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <color key=\"textShadowColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                        </textAttributes>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <toolbar key=\"toolbar\" opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"iuN-MC-o9b\">\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </toolbar>\n                    <connections>\n                        <segue destination=\"ZPZ-xC-nU8\" kind=\"relationship\" relationship=\"rootViewController\" id=\"Dzp-Cn-NTS\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"XbA-bD-0Bd\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-229\" y=\"-1696\"/>\n        </scene>\n        <!--FIND FRIENDS-->\n        <scene sceneID=\"1YO-Gb-tzF\">\n            <objects>\n                <viewController id=\"ZPZ-xC-nU8\" customClass=\"SpotifyExampleViewController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"37F-aC-5kS\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"pHS-02-a6v\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"iXz-9N-5eX\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"603\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <scrollView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"G0A-Qi-hkf\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"44\" width=\"375\" height=\"559\"/>\n                                <color key=\"backgroundColor\" red=\"0.058823529411764705\" green=\"0.062745098039215685\" blue=\"0.062745098039215685\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </scrollView>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ona-3x-9jI\">\n                                <rect key=\"frame\" x=\"28\" y=\"558\" width=\"84\" height=\"33\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"0.99997437000274658\" blue=\"0.99999129772186279\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" constant=\"84\" id=\"MRb-m1-e9D\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"17\"/>\n                                <state key=\"normal\" title=\"CLOSE\"/>\n                                <connections>\n                                    <action selector=\"closeAction:\" destination=\"ZPZ-xC-nU8\" eventType=\"touchUpInside\" id=\"Cf9-FB-0vv\"/>\n                                </connections>\n                            </button>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uFJ-v9-bHF\" customClass=\"ButtonBarView\" customModule=\"XLPagerTabStrip\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"44\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"44\" id=\"pkp-lJ-x7y\"/>\n                                </constraints>\n                                <inset key=\"scrollIndicatorInsets\" minX=\"15\" minY=\"0.0\" maxX=\"15\" maxY=\"0.0\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" scrollDirection=\"horizontal\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"0Ci-S2-HdY\">\n                                    <size key=\"itemSize\" width=\"40\" height=\"40\"/>\n                                    <size key=\"headerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <size key=\"footerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <inset key=\"sectionInset\" minX=\"0.0\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                </collectionViewFlowLayout>\n                                <cells/>\n                            </collectionView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"0.058823529409999999\" green=\"0.062745098040000002\" blue=\"0.062745098040000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"uFJ-v9-bHF\" firstAttribute=\"leading\" secondItem=\"iXz-9N-5eX\" secondAttribute=\"leading\" id=\"1vs-qH-OyG\"/>\n                            <constraint firstItem=\"G0A-Qi-hkf\" firstAttribute=\"top\" secondItem=\"uFJ-v9-bHF\" secondAttribute=\"bottom\" id=\"6k0-SL-4lT\"/>\n                            <constraint firstItem=\"pHS-02-a6v\" firstAttribute=\"top\" secondItem=\"ona-3x-9jI\" secondAttribute=\"bottom\" constant=\"12\" id=\"IRb-6h-6i0\"/>\n                            <constraint firstItem=\"ona-3x-9jI\" firstAttribute=\"leading\" secondItem=\"iXz-9N-5eX\" secondAttribute=\"leadingMargin\" constant=\"12\" id=\"SWi-SL-ZNj\"/>\n                            <constraint firstItem=\"pHS-02-a6v\" firstAttribute=\"top\" secondItem=\"G0A-Qi-hkf\" secondAttribute=\"bottom\" id=\"Xdf-WT-pXp\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"G0A-Qi-hkf\" secondAttribute=\"trailing\" id=\"fA2-An-JmH\"/>\n                            <constraint firstItem=\"uFJ-v9-bHF\" firstAttribute=\"top\" secondItem=\"37F-aC-5kS\" secondAttribute=\"bottom\" id=\"gSm-yv-aew\"/>\n                            <constraint firstItem=\"G0A-Qi-hkf\" firstAttribute=\"leading\" secondItem=\"iXz-9N-5eX\" secondAttribute=\"leading\" id=\"hoh-E2-KXG\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"uFJ-v9-bHF\" secondAttribute=\"trailing\" id=\"mbW-rc-wst\"/>\n                        </constraints>\n                    </view>\n                    <toolbarItems/>\n                    <navigationItem key=\"navigationItem\" title=\"FIND FRIENDS\" id=\"cSW-Bh-vP3\"/>\n                    <connections>\n                        <outlet property=\"buttonBarView\" destination=\"uFJ-v9-bHF\" id=\"L01-yp-FgZ\"/>\n                        <outlet property=\"containerView\" destination=\"G0A-Qi-hkf\" id=\"IHt-mX-70E\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"oKR-jW-Bht\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"518\" y=\"-1717\"/>\n        </scene>\n        <!--Nav Controller-->\n        <scene sceneID=\"rMg-po-1om\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"Pux-pd-JeW\" customClass=\"NavController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <toolbarItems/>\n                    <simulatedStatusBarMetrics key=\"simulatedStatusBarMetrics\" statusBarStyle=\"lightContent\"/>\n                    <nil key=\"simulatedBottomBarMetrics\"/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" barStyle=\"black\" translucent=\"NO\" id=\"eWp-ed-SXr\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <color key=\"barTintColor\" red=\"0.8666666666666667\" green=\"0.0\" blue=\"0.074509803921568626\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <textAttributes key=\"titleTextAttributes\">\n                            <fontDescription key=\"fontDescription\" type=\"system\" weight=\"light\" pointSize=\"16\"/>\n                            <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <color key=\"textShadowColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                        </textAttributes>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <toolbar key=\"toolbar\" opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"WZf-Dl-jiU\">\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </toolbar>\n                    <connections>\n                        <segue destination=\"Y1C-8r-zKe\" kind=\"relationship\" relationship=\"rootViewController\" id=\"Z69-15-Zno\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"eRh-1T-1Zf\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-229\" y=\"-2388\"/>\n        </scene>\n        <!--Youtube Example View Controller-->\n        <scene sceneID=\"9xA-v7-4VD\">\n            <objects>\n                <viewController id=\"Y1C-8r-zKe\" customClass=\"YoutubeExampleViewController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"CFE-pv-hnK\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"AoG-Am-Q4c\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"yGV-Lf-LC4\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"603\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <scrollView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"KX5-0N-ToU\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"50\" width=\"375\" height=\"553\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </scrollView>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"nHU-Vy-hDF\">\n                                <rect key=\"frame\" x=\"28\" y=\"558\" width=\"84\" height=\"33\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"0.99997437000274658\" blue=\"0.99999129772186279\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" constant=\"84\" id=\"O5J-BF-FPZ\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"17\"/>\n                                <state key=\"normal\" title=\"CLOSE\"/>\n                                <connections>\n                                    <action selector=\"closeAction:\" destination=\"Y1C-8r-zKe\" eventType=\"touchUpInside\" id=\"edB-lv-N20\"/>\n                                </connections>\n                            </button>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"CLm-XH-tEa\" customClass=\"ButtonBarView\" customModule=\"XLPagerTabStrip\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"50\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"50\" id=\"kHr-I4-KkK\"/>\n                                </constraints>\n                                <inset key=\"scrollIndicatorInsets\" minX=\"15\" minY=\"0.0\" maxX=\"15\" maxY=\"0.0\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" scrollDirection=\"horizontal\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"aAD-Hn-Zcp\">\n                                    <size key=\"itemSize\" width=\"40\" height=\"40\"/>\n                                    <size key=\"headerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <size key=\"footerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <inset key=\"sectionInset\" minX=\"0.0\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                </collectionViewFlowLayout>\n                                <cells/>\n                            </collectionView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"0.058823529409999999\" green=\"0.062745098040000002\" blue=\"0.062745098040000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"CLm-XH-tEa\" firstAttribute=\"top\" secondItem=\"CFE-pv-hnK\" secondAttribute=\"bottom\" id=\"2Vj-Bn-6pH\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"KX5-0N-ToU\" secondAttribute=\"trailing\" id=\"MME-7c-qJO\"/>\n                            <constraint firstItem=\"AoG-Am-Q4c\" firstAttribute=\"top\" secondItem=\"nHU-Vy-hDF\" secondAttribute=\"bottom\" constant=\"12\" id=\"PdW-Wp-PRW\"/>\n                            <constraint firstItem=\"nHU-Vy-hDF\" firstAttribute=\"leading\" secondItem=\"yGV-Lf-LC4\" secondAttribute=\"leadingMargin\" constant=\"12\" id=\"fFn-Sz-wao\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"CLm-XH-tEa\" secondAttribute=\"trailing\" id=\"pZ8-pv-iCu\"/>\n                            <constraint firstItem=\"CLm-XH-tEa\" firstAttribute=\"leading\" secondItem=\"yGV-Lf-LC4\" secondAttribute=\"leading\" id=\"qT9-rU-zer\"/>\n                            <constraint firstItem=\"KX5-0N-ToU\" firstAttribute=\"leading\" secondItem=\"yGV-Lf-LC4\" secondAttribute=\"leading\" id=\"sIi-YZ-SuG\"/>\n                            <constraint firstItem=\"KX5-0N-ToU\" firstAttribute=\"top\" secondItem=\"CLm-XH-tEa\" secondAttribute=\"bottom\" id=\"v7v-sW-2Vl\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"KX5-0N-ToU\" secondAttribute=\"bottom\" id=\"xNR-eP-4e1\"/>\n                        </constraints>\n                    </view>\n                    <toolbarItems/>\n                    <navigationItem key=\"navigationItem\" id=\"veW-zk-aAq\">\n                        <barButtonItem key=\"leftBarButtonItem\" title=\"  Home\" id=\"i3x-mo-WeN\"/>\n                        <rightBarButtonItems>\n                            <barButtonItem image=\"more_options\" id=\"GC5-Pl-UeW\">\n                                <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </barButtonItem>\n                            <barButtonItem image=\"search\" id=\"uSy-oi-1d3\">\n                                <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </barButtonItem>\n                        </rightBarButtonItems>\n                    </navigationItem>\n                    <connections>\n                        <outlet property=\"buttonBarView\" destination=\"CLm-XH-tEa\" id=\"3Pe-Ao-JWF\"/>\n                        <outlet property=\"containerView\" destination=\"KX5-0N-ToU\" id=\"80B-8B-I77\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"2AN-72-EPV\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"518\" y=\"-2380\"/>\n        </scene>\n        <!--Nav Controller-->\n        <scene sceneID=\"f4u-mf-lkq\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"wtp-ZI-nBV\" customClass=\"NavController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <toolbarItems/>\n                    <simulatedStatusBarMetrics key=\"simulatedStatusBarMetrics\" statusBarStyle=\"lightContent\"/>\n                    <nil key=\"simulatedBottomBarMetrics\"/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" barStyle=\"black\" translucent=\"NO\" id=\"vc1-jF-ATl\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <color key=\"barTintColor\" red=\"0.86666666670000003\" green=\"0.0\" blue=\"0.074509803920000006\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <textAttributes key=\"titleTextAttributes\">\n                            <fontDescription key=\"fontDescription\" type=\"system\" weight=\"light\" pointSize=\"16\"/>\n                            <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <color key=\"textShadowColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                        </textAttributes>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <toolbar key=\"toolbar\" opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"ZXR-L3-Qqf\">\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </toolbar>\n                    <connections>\n                        <segue destination=\"dFD-gP-LEB\" kind=\"relationship\" relationship=\"rootViewController\" id=\"6KU-Mn-bfq\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"3ZF-Tp-4GF\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-230\" y=\"-3067\"/>\n        </scene>\n        <!--Youtube With Label Example View Controller-->\n        <scene sceneID=\"Q1j-np-84R\">\n            <objects>\n                <viewController id=\"dFD-gP-LEB\" customClass=\"YoutubeWithLabelExampleViewController\" customModule=\"Example\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"nAm-L7-0C5\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"h18-Xb-G4o\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"srq-xV-ncW\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"603\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <scrollView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"OdC-5s-g0E\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"70\" width=\"375\" height=\"533\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </scrollView>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Ye3-ds-RRe\">\n                                <rect key=\"frame\" x=\"28\" y=\"558\" width=\"84\" height=\"33\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"0.99997437\" blue=\"0.99999129769999995\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" constant=\"84\" id=\"gxr-hQ-rJo\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"17\"/>\n                                <state key=\"normal\" title=\"CLOSE\"/>\n                                <connections>\n                                    <action selector=\"closeAction:\" destination=\"dFD-gP-LEB\" eventType=\"touchUpInside\" id=\"tGE-Hd-oiU\"/>\n                                </connections>\n                            </button>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"NF8-r2-llj\" customClass=\"ButtonBarView\" customModule=\"XLPagerTabStrip\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"70\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"70\" id=\"eHr-qr-UnQ\"/>\n                                </constraints>\n                                <inset key=\"scrollIndicatorInsets\" minX=\"15\" minY=\"0.0\" maxX=\"15\" maxY=\"0.0\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" scrollDirection=\"horizontal\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"NcL-oD-vkg\">\n                                    <size key=\"itemSize\" width=\"40\" height=\"40\"/>\n                                    <size key=\"headerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <size key=\"footerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <inset key=\"sectionInset\" minX=\"0.0\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                </collectionViewFlowLayout>\n                                <cells/>\n                            </collectionView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"0.058823529409999999\" green=\"0.062745098040000002\" blue=\"0.062745098040000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"h18-Xb-G4o\" firstAttribute=\"top\" secondItem=\"Ye3-ds-RRe\" secondAttribute=\"bottom\" constant=\"12\" id=\"8Vn-VD-e3K\"/>\n                            <constraint firstItem=\"Ye3-ds-RRe\" firstAttribute=\"leading\" secondItem=\"srq-xV-ncW\" secondAttribute=\"leadingMargin\" constant=\"12\" id=\"PI1-vN-tQn\"/>\n                            <constraint firstItem=\"OdC-5s-g0E\" firstAttribute=\"leading\" secondItem=\"srq-xV-ncW\" secondAttribute=\"leading\" id=\"Yhg-Df-lY8\"/>\n                            <constraint firstItem=\"NF8-r2-llj\" firstAttribute=\"top\" secondItem=\"nAm-L7-0C5\" secondAttribute=\"bottom\" id=\"cGp-RS-hTW\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"NF8-r2-llj\" secondAttribute=\"trailing\" id=\"diI-XY-ee6\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"OdC-5s-g0E\" secondAttribute=\"bottom\" id=\"iOV-H7-dW1\"/>\n                            <constraint firstItem=\"NF8-r2-llj\" firstAttribute=\"leading\" secondItem=\"srq-xV-ncW\" secondAttribute=\"leading\" id=\"rDI-Ht-8Px\"/>\n                            <constraint firstItem=\"OdC-5s-g0E\" firstAttribute=\"top\" secondItem=\"NF8-r2-llj\" secondAttribute=\"bottom\" id=\"vlA-DF-8l2\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"OdC-5s-g0E\" secondAttribute=\"trailing\" id=\"xNh-E4-YQz\"/>\n                        </constraints>\n                    </view>\n                    <toolbarItems/>\n                    <navigationItem key=\"navigationItem\" id=\"Ogr-CI-ZbI\">\n                        <barButtonItem key=\"leftBarButtonItem\" title=\"  Home\" id=\"2RO-X1-xjA\"/>\n                        <rightBarButtonItems>\n                            <barButtonItem image=\"more_options\" id=\"c1i-ZN-Neo\">\n                                <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </barButtonItem>\n                            <barButtonItem image=\"search\" id=\"nYs-bs-onl\">\n                                <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </barButtonItem>\n                        </rightBarButtonItems>\n                    </navigationItem>\n                    <connections>\n                        <outlet property=\"buttonBarView\" destination=\"NF8-r2-llj\" id=\"mQR-fl-D9w\"/>\n                        <outlet property=\"containerView\" destination=\"OdC-5s-g0E\" id=\"4MA-bD-Sxw\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"Loe-25-w2Z\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"518\" y=\"-3067\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <image name=\"icon_bar\" width=\"30\" height=\"30\"/>\n        <image name=\"icon_button\" width=\"30\" height=\"30\"/>\n        <image name=\"icon_segmented\" width=\"30\" height=\"30\"/>\n        <image name=\"icon_twitter\" width=\"30\" height=\"30\"/>\n        <image name=\"more_options\" width=\"24\" height=\"24\"/>\n        <image name=\"search\" width=\"24\" height=\"24\"/>\n    </resources>\n</document>\n"
  },
  {
    "path": "Example/Example/ButtonBarExampleViewController.swift",
    "content": "//  ButtonBarExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport XLPagerTabStrip\n\nclass ButtonBarExampleViewController: ButtonBarPagerTabStripViewController {\n\n    var isReload = false\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        buttonBarView.selectedBar.backgroundColor = .orange\n        buttonBarView.backgroundColor = UIColor(red: 7/255, green: 185/255, blue: 155/255, alpha: 1)\n    }\n\n    // MARK: - PagerTabStripDataSource\n\n    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {\n        let child_1 = TableChildExampleViewController(style: .plain, itemInfo: \"Table View\")\n        let child_2 = ChildExampleViewController(itemInfo: \"View\")\n        let child_3 = TableChildExampleViewController(style: .grouped, itemInfo: \"Table View 2\")\n        let child_4 = ChildExampleViewController(itemInfo: \"View 2\")\n        let child_5 = TableChildExampleViewController(style: .plain, itemInfo: \"Table View 3\")\n        let child_6 = ChildExampleViewController(itemInfo: \"View 3\")\n        let child_7 = TableChildExampleViewController(style: .grouped, itemInfo: \"Table View 4\")\n        let child_8 = ChildExampleViewController(itemInfo: \"View 4\")\n\n        guard isReload else {\n            return [child_1, child_2, child_3, child_4, child_5, child_6, child_7, child_8]\n        }\n\n        var childViewControllers = [child_1, child_2, child_3, child_4, child_5, child_6, child_7, child_8]\n\n        for index in childViewControllers.indices {\n            let nElements = childViewControllers.count - index\n            let n = (Int(arc4random()) % nElements) + index\n            if n != index {\n                childViewControllers.swapAt(index, n)\n            }\n        }\n        let nItems = 1 + (arc4random() % 8)\n        return Array(childViewControllers.prefix(Int(nItems)))\n    }\n\n    override func reloadPagerTabStripView() {\n        isReload = true\n        if arc4random() % 2 == 0 {\n            pagerBehaviour = .progressive(skipIntermediateViewControllers: arc4random() % 2 == 0, elasticIndicatorLimit: arc4random() % 2 == 0 )\n        } else {\n            pagerBehaviour = .common(skipIntermediateViewControllers: arc4random() % 2 == 0)\n        }\n        super.reloadPagerTabStripView()\n    }\n}\n"
  },
  {
    "path": "Example/Example/ChildControllers/ChildExampleViewController.swift",
    "content": "//  ChildExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport XLPagerTabStrip\n\nclass ChildExampleViewController: UIViewController, IndicatorInfoProvider {\n\n    var itemInfo: IndicatorInfo = \"View\"\n\n    init(itemInfo: IndicatorInfo) {\n        self.itemInfo = itemInfo\n        super.init(nibName: nil, bundle: nil)\n    }\n\n    required init?(coder aDecoder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        let label = UILabel()\n        label.translatesAutoresizingMaskIntoConstraints = false\n        label.text = \"XLPagerTabStrip\"\n\n        view.addSubview(label)\n        view.backgroundColor = .white\n\n        view.addConstraint(NSLayoutConstraint(item: label, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1, constant: 0))\n        view.addConstraint(NSLayoutConstraint(item: label, attribute: .centerY, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 1, constant: -50))\n    }\n\n    // MARK: - IndicatorInfoProvider\n\n    func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {\n        return itemInfo\n    }\n}\n"
  },
  {
    "path": "Example/Example/ChildControllers/TableChildExampleViewController.swift",
    "content": "//  TableChildExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport XLPagerTabStrip\n\nclass TableChildExampleViewController: UITableViewController, IndicatorInfoProvider {\n\n    let cellIdentifier = \"postCell\"\n    var blackTheme = false\n    var itemInfo = IndicatorInfo(title: \"View\")\n\n    init(style: UITableView.Style, itemInfo: IndicatorInfo) {\n        self.itemInfo = itemInfo\n        super.init(style: style)\n    }\n\n    required init?(coder aDecoder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        tableView.register(UINib(nibName: \"PostCell\", bundle: Bundle.main), forCellReuseIdentifier: cellIdentifier)\n        tableView.estimatedRowHeight = 600.0\n        tableView.rowHeight = UITableView.automaticDimension\n        tableView.allowsSelection = false\n        if blackTheme {\n            tableView.backgroundColor = UIColor(red: 15/255.0, green: 16/255.0, blue: 16/255.0, alpha: 1.0)\n        }\n    }\n\n    override func viewWillAppear(_ animated: Bool) {\n        super.viewWillAppear(animated)\n        tableView.reloadData()\n    }\n\n    // MARK: - UITableViewDataSource\n\n    override func numberOfSections(in tableView: UITableView) -> Int {\n        return 1\n    }\n\n    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {\n        return DataProvider.sharedInstance.postsData.count\n    }\n\n    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {\n        guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? PostCell,\n            let data = DataProvider.sharedInstance.postsData.object(at: indexPath.row) as? NSDictionary else { return PostCell() }\n\n        cell.configureWithData(data)\n        if blackTheme {\n            cell.changeStylToBlack()\n        }\n        return cell\n    }\n\n    // MARK: - IndicatorInfoProvider\n\n    func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {\n        return itemInfo\n    }\n\n}\n"
  },
  {
    "path": "Example/Example/Helpers/DataProvider.swift",
    "content": "//  PostCell.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n\nclass DataProvider {\n    static let sharedInstance = DataProvider()\n\n    lazy var postsData: NSArray = {\n        let jsonStr = \"[{\\\"post\\\":{\\\"id\\\":113,\\\"text\\\":\\\"We're getting fifty percent of the t-shirt sales\\\",\\\"created_at\\\":\\\"2014-04-17T00:45:40.556Z\\\",\\\"user\\\":{\\\"id\\\":9,\\\"name\\\":\\\"Lisa Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Lisa_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":66,\\\"text\\\":\\\"Eep!\\\",\\\"created_at\\\":\\\"2014-04-09T21:29:59.982Z\\\",\\\"user\\\":{\\\"id\\\":7,\\\"name\\\":\\\"Bart Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Bart_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":42,\\\"text\\\":\\\"I'm not thinking straight, why did I have that wine cooler last month?\\\",\\\"created_at\\\":\\\"2014-04-09T17:58:41.704Z\\\",\\\"user\\\":{\\\"id\\\":5,\\\"name\\\":\\\"Ned Flanders\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Ned_Flanders.png\\\"}}},{\\\"post\\\":{\\\"id\\\":84,\\\"text\\\":\\\"Son, when you participate in sporting events, it's not whether you win or lose: it's how drunk you get.\\\",\\\"created_at\\\":\\\"2014-04-03T20:21:32.119Z\\\",\\\"user\\\":{\\\"id\\\":8,\\\"name\\\":\\\"Homer Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Homer_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":75,\\\"text\\\":\\\"I'm normally not a praying man, but if you're up there, please save me Superman.\\\",\\\"created_at\\\":\\\"2014-04-03T02:04:43.053Z\\\",\\\"user\\\":{\\\"id\\\":8,\\\"name\\\":\\\"Homer Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Homer_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":26,\\\"text\\\":\\\"Homer, please get rid of that pig.\\\",\\\"created_at\\\":\\\"2014-04-02T03:48:56.381Z\\\",\\\"user\\\":{\\\"id\\\":3,\\\"name\\\":\\\"Marge Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Marge_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":40,\\\"text\\\":\\\"You sold weapon-grade plutoneum to the Iraqies without a mark up.\\\",\\\"created_at\\\":\\\"2014-03-28T05:23:24.657Z\\\",\\\"user\\\":{\\\"id\\\":4,\\\"name\\\":\\\"Montgomery Burns\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Montgomery_Burns.png\\\"}}},{\\\"post\\\":{\\\"id\\\":28,\\\"text\\\":\\\"Homer, don't say that. The way I see it, if you raised three children who can knock out and hog tie a perfect stranger you must be doing something right.\\\",\\\"created_at\\\":\\\"2014-03-22T14:24:22.408Z\\\",\\\"user\\\":{\\\"id\\\":3,\\\"name\\\":\\\"Marge Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Marge_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":48,\\\"text\\\":\\\"Hi-dilly-ho, neighborinos!\\\",\\\"created_at\\\":\\\"2014-03-21T08:39:20.764Z\\\",\\\"user\\\":{\\\"id\\\":5,\\\"name\\\":\\\"Ned Flanders\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Ned_Flanders.png\\\"}}},{\\\"post\\\":{\\\"id\\\":78,\\\"text\\\":\\\"Maybe, just once, someone will call me 'Sir' without adding, 'You're making a scene.'\\\",\\\"created_at\\\":\\\"2014-03-20T02:44:28.075Z\\\",\\\"user\\\":{\\\"id\\\":8,\\\"name\\\":\\\"Homer Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Homer_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":33,\\\"text\\\":\\\"This is the type of trickery I pay you for.\\\",\\\"created_at\\\":\\\"2014-03-18T08:25:14.507Z\\\",\\\"user\\\":{\\\"id\\\":4,\\\"name\\\":\\\"Montgomery Burns\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Montgomery_Burns.png\\\"}}},{\\\"post\\\":{\\\"id\\\":72,\\\"text\\\":\\\"Oh, so they have internet on computers now!\\\",\\\"created_at\\\":\\\"2014-03-03T19:02:56.032Z\\\",\\\"user\\\":{\\\"id\\\":8,\\\"name\\\":\\\"Homer Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Homer_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":1,\\\"text\\\":\\\"You know, I do! I mean, there comes a time in a man's life when he asks himself, 'who will float my corpse down the Ganges?'\\\",\\\"created_at\\\":\\\"2014-02-24T14:09:00.912Z\\\",\\\"user\\\":{\\\"id\\\":1,\\\"name\\\":\\\"Apu Nahasapeemapetilon\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Apu_Nahasapeemapetilon.png\\\"}}},{\\\"post\\\":{\\\"id\\\":62,\\\"text\\\":\\\"Ay Caramba!\\\",\\\"created_at\\\":\\\"2014-02-18T16:38:37.958Z\\\",\\\"user\\\":{\\\"id\\\":7,\\\"name\\\":\\\"Bart Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Bart_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":19,\\\"text\\\":\\\"Throughout the ages, the finger painter, the Play-Doh sculptor, the Lincoln Logger, stood alone against the daycare teacher of her time. She did not live to earn aproval stickers, she lived for herself, that she might achieve things that are the glory of all humanity. These are my terms. I do not care to play by any others. And now, if the jury will allow me, it's naptime.\\\",\\\"created_at\\\":\\\"2014-02-16T22:11:33.236Z\\\",\\\"user\\\":{\\\"id\\\":2,\\\"name\\\":\\\"Maggie Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Maggie_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":76,\\\"text\\\":\\\"Son, if you really want something in this life, you have to work for it. Now quiet! They're about to announce the lottery numbers.\\\",\\\"created_at\\\":\\\"2014-02-16T19:09:55.062Z\\\",\\\"user\\\":{\\\"id\\\":8,\\\"name\\\":\\\"Homer Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Homer_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":22,\\\"text\\\":\\\"Somebody throw the goddamn bomb!\\\",\\\"created_at\\\":\\\"2014-02-16T13:50:25.313Z\\\",\\\"user\\\":{\\\"id\\\":3,\\\"name\\\":\\\"Marge Simpsons\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Marge_Simpsons.png\\\"}}},{\\\"post\\\":{\\\"id\\\":36,\\\"text\\\":\\\"Oh, so mother nature needs a favor? Well, maybe she should have thought of that when she was besetting us with droughts and floods and poison monkeys.\\\",\\\"created_at\\\":\\\"2014-02-13T06:51:57.549Z\\\",\\\"user\\\":{\\\"id\\\":4,\\\"name\\\":\\\"Montgomery Burns\\\",\\\"imageURL\\\":\\\"http://obscure-refuge-3149.herokuapp.com/images/Montgomery_Burns.png\\\"}}}]\"\n        let jsonData = jsonStr.data(using: String.Encoding.utf8)\n        let res = try! JSONSerialization.jsonObject(with: jsonData!, options: []) // swiftlint:disable:this force_try\n        return res as! NSArray // swiftlint:disable:this force_cast\n    }()\n}\n\nclass NavController: UINavigationController {\n\n    override var preferredStatusBarStyle: UIStatusBarStyle {\n        return .lightContent\n    }\n\n}\n\nclass TabBarController: UITabBarController {\n\n    override var preferredStatusBarStyle: UIStatusBarStyle {\n        return .lightContent\n    }\n\n}\n"
  },
  {
    "path": "Example/Example/Helpers/PostCell.swift",
    "content": "//  PostCell.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport UIKit\n\nclass PostCell: UITableViewCell {\n\n    @IBOutlet weak var userImage: UIImageView!\n    @IBOutlet weak var postName: UILabel!\n    @IBOutlet weak var postText: UILabel!\n\n    override func awakeFromNib() {\n        super.awakeFromNib()\n        userImage.layer.cornerRadius = 10.0\n    }\n\n    func configureWithData(_ data: NSDictionary) {\n        if let post = data[\"post\"] as? NSDictionary, let user = post[\"user\"] as? NSDictionary {\n            postName.text = user[\"name\"] as? String\n            postText.text = post[\"text\"] as? String\n            userImage.image = UIImage(named: postName.text!.replacingOccurrences(of: \" \", with: \"_\"))\n        }\n    }\n\n    func changeStylToBlack() {\n        userImage?.layer.cornerRadius = 30.0\n        postText.text = nil\n        postName.font = UIFont(name: \"HelveticaNeue-Light\", size:18) ?? .systemFont(ofSize: 18)\n        postName.textColor = .white\n        backgroundColor = UIColor(red: 15/255.0, green: 16/255.0, blue: 16/255.0, alpha: 1.0)\n    }\n}\n"
  },
  {
    "path": "Example/Example/Helpers/PostCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" preservesSuperviewLayoutMargins=\"YES\" selectionStyle=\"default\" indentationWidth=\"10\" rowHeight=\"84\" id=\"b8n-8Y-pxb\" customClass=\"PostCell\" customModule=\"Example\" customModuleProvider=\"target\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"84\"/>\n            <autoresizingMask key=\"autoresizingMask\"/>\n            <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" preservesSuperviewLayoutMargins=\"YES\" insetsLayoutMarginsFromSafeArea=\"NO\" tableViewCell=\"b8n-8Y-pxb\" id=\"K88-rd-6gZ\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"83.5\"/>\n                <autoresizingMask key=\"autoresizingMask\"/>\n                <subviews>\n                    <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"wQ5-jv-KcD\">\n                        <rect key=\"frame\" x=\"12\" y=\"12\" width=\"60\" height=\"60\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" constant=\"60\" id=\"a22-Yz-B14\"/>\n                            <constraint firstAttribute=\"width\" constant=\"60\" id=\"h3B-3k-YAV\"/>\n                        </constraints>\n                    </imageView>\n                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"1000\" text=\"Label\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Xt9-VS-IpY\">\n                        <rect key=\"frame\" x=\"80\" y=\"12\" width=\"275\" height=\"18\"/>\n                        <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"15\"/>\n                        <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" lineBreakMode=\"tailTruncation\" numberOfLines=\"0\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fIC-u4-GzA\">\n                        <rect key=\"frame\" x=\"80\" y=\"38\" width=\"275\" height=\"25.5\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" relation=\"greaterThanOrEqual\" constant=\"18\" id=\"KTU-C8-rru\"/>\n                        </constraints>\n                        <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"15\"/>\n                        <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                </subviews>\n                <constraints>\n                    <constraint firstItem=\"wQ5-jv-KcD\" firstAttribute=\"top\" secondItem=\"K88-rd-6gZ\" secondAttribute=\"top\" constant=\"12\" id=\"0nA-Ff-0jE\"/>\n                    <constraint firstItem=\"fIC-u4-GzA\" firstAttribute=\"leading\" secondItem=\"Xt9-VS-IpY\" secondAttribute=\"leading\" id=\"7Jd-TH-zoU\"/>\n                    <constraint firstItem=\"Xt9-VS-IpY\" firstAttribute=\"leading\" secondItem=\"wQ5-jv-KcD\" secondAttribute=\"trailing\" constant=\"8\" id=\"CJD-v3-ZI5\"/>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"fIC-u4-GzA\" secondAttribute=\"bottom\" priority=\"999\" constant=\"20\" id=\"Dsa-9n-hAy\"/>\n                    <constraint firstItem=\"Xt9-VS-IpY\" firstAttribute=\"top\" secondItem=\"K88-rd-6gZ\" secondAttribute=\"top\" constant=\"12\" id=\"aeT-ml-Joy\"/>\n                    <constraint firstItem=\"fIC-u4-GzA\" firstAttribute=\"width\" secondItem=\"Xt9-VS-IpY\" secondAttribute=\"width\" id=\"cf4-gX-Utu\"/>\n                    <constraint firstItem=\"wQ5-jv-KcD\" firstAttribute=\"leading\" secondItem=\"K88-rd-6gZ\" secondAttribute=\"leading\" constant=\"12\" id=\"hyC-j1-1ur\"/>\n                    <constraint firstAttribute=\"trailing\" secondItem=\"Xt9-VS-IpY\" secondAttribute=\"trailing\" constant=\"20\" symbolic=\"YES\" id=\"xNw-iC-WEv\"/>\n                    <constraint firstItem=\"fIC-u4-GzA\" firstAttribute=\"top\" secondItem=\"Xt9-VS-IpY\" secondAttribute=\"bottom\" constant=\"8\" id=\"ypP-AG-hch\"/>\n                </constraints>\n            </tableViewCellContentView>\n            <connections>\n                <outlet property=\"postName\" destination=\"Xt9-VS-IpY\" id=\"VYd-5D-WAS\"/>\n                <outlet property=\"postText\" destination=\"fIC-u4-GzA\" id=\"GvN-fW-jWH\"/>\n                <outlet property=\"userImage\" destination=\"wQ5-jv-KcD\" id=\"T64-Nd-dc9\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"348\" y=\"692\"/>\n        </tableViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "Example/Example/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>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>9.0.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Storyboard</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>UIViewControllerBasedStatusBarAppearance</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/Example/Instagram/InstagramExampleViewController.swift",
    "content": "//  SegmentedExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport XLPagerTabStrip\n\nclass InstagramExampleViewController: ButtonBarPagerTabStripViewController {\n\n    @IBOutlet weak var shadowView: UIView!\n    let blueInstagramColor = UIColor(red: 37/255.0, green: 111/255.0, blue: 206/255.0, alpha: 1.0)\n\n    override func viewDidLoad() {\n        // change selected bar color\n        settings.style.buttonBarBackgroundColor = .white\n        settings.style.buttonBarItemBackgroundColor = .white\n        settings.style.selectedBarBackgroundColor = blueInstagramColor\n        settings.style.buttonBarItemFont = .boldSystemFont(ofSize: 14)\n        settings.style.selectedBarHeight = 2.0\n        settings.style.buttonBarMinimumLineSpacing = 0\n        settings.style.buttonBarItemTitleColor = .black\n        settings.style.buttonBarItemsShouldFillAvailableWidth = true\n        settings.style.buttonBarLeftContentInset = 0\n        settings.style.buttonBarRightContentInset = 0\n\n        changeCurrentIndexProgressive = { [weak self] (oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in\n            guard changeCurrentIndex == true else { return }\n            oldCell?.label.textColor = .black\n            newCell?.label.textColor = self?.blueInstagramColor\n        }\n        super.viewDidLoad()\n    }\n\n    // MARK: - PagerTabStripDataSource\n\n    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {\n        let child_1 = TableChildExampleViewController(style: .plain, itemInfo: \"FOLLOWING\")\n        let child_2 = ChildExampleViewController(itemInfo: \"YOU\")\n        return [child_1, child_2]\n    }\n\n    // MARK: - Custom Action\n\n    @IBAction func closeAction(_ sender: UIButton) {\n        dismiss(animated: true, completion: nil)\n    }\n}\n"
  },
  {
    "path": "Example/Example/NavButtonBarExampleViewController.swift",
    "content": "//  NavButtonBarExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport XLPagerTabStrip\n\nclass NavButtonBarExampleViewController: ButtonBarPagerTabStripViewController {\n    var isReload = false\n\n    override func viewDidLoad() {\n        // set up style before super view did load is executed\n        settings.style.buttonBarBackgroundColor = .clear\n        settings.style.selectedBarBackgroundColor = .orange\n        //-\n        super.viewDidLoad()\n\n        buttonBarView.removeFromSuperview()\n        navigationController?.navigationBar.addSubview(buttonBarView)\n\n        changeCurrentIndexProgressive = { (oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in\n            guard changeCurrentIndex == true else { return }\n\n            oldCell?.label.textColor = UIColor(white: 1, alpha: 0.6)\n            newCell?.label.textColor = .white\n\n            if animated {\n                UIView.animate(withDuration: 0.1, animations: { () -> Void in\n                    newCell?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)\n                    oldCell?.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)\n                })\n            } else {\n                newCell?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)\n                oldCell?.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)\n            }\n        }\n    }\n\n    // MARK: - PagerTabStripDataSource\n\n    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {\n        let child_1 = TableChildExampleViewController(style: .plain, itemInfo: \"Table View\")\n        let child_2 = ChildExampleViewController(itemInfo: \"View\")\n        let child_3 = TableChildExampleViewController(style: .grouped, itemInfo: \"Table View 2\")\n        let child_4 = ChildExampleViewController(itemInfo: \"View 1\")\n        let child_5 = TableChildExampleViewController(style: .plain, itemInfo: \"Table View 3\")\n        let child_6 = ChildExampleViewController(itemInfo: \"View 2\")\n        let child_7 = TableChildExampleViewController(style: .grouped, itemInfo: \"Table View 4\")\n        let child_8 = ChildExampleViewController(itemInfo: \"View 3\")\n\n        guard isReload else {\n            return [child_1, child_2, child_3, child_4, child_5, child_6, child_7, child_8]\n        }\n\n        var childViewControllers = [child_1, child_2, child_3, child_4, child_5, child_6, child_7, child_8]\n\n        for index in childViewControllers.indices {\n            let nElements = childViewControllers.count - index\n            let n = (Int(arc4random()) % nElements) + index\n            if n != index {\n                childViewControllers.swapAt(index, n)\n            }\n        }\n        let nItems = 1 + (arc4random() % 8)\n        return Array(childViewControllers.prefix(Int(nItems)))\n    }\n\n    override func reloadPagerTabStripView() {\n        isReload = true\n        if arc4random() % 2 == 0 {\n            pagerBehaviour = .progressive(skipIntermediateViewControllers: arc4random() % 2 == 0, elasticIndicatorLimit: arc4random() % 2 == 0 )\n        } else {\n            pagerBehaviour = .common(skipIntermediateViewControllers: arc4random() % 2 == 0)\n        }\n        super.reloadPagerTabStripView()\n    }\n\n    override func configureCell(_ cell: ButtonBarViewCell, indicatorInfo: IndicatorInfo) {\n        super.configureCell(cell, indicatorInfo: indicatorInfo)\n        cell.backgroundColor = .clear\n    }\n}\n"
  },
  {
    "path": "Example/Example/ReloadExampleViewController.swift",
    "content": "//  ReloadExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport UIKit\nimport XLPagerTabStrip\n\nclass ReloadExampleViewController: UIViewController {\n\n    @IBOutlet lazy var titleLabel: UILabel! = {\n        let label = UILabel()\n        return label\n    }()\n\n    lazy var bigLabel: UILabel = {\n        let bigLabel = UILabel()\n        bigLabel.backgroundColor = .clear\n        bigLabel.textColor = .white\n        bigLabel.font = UIFont.boldSystemFont(ofSize: 20)\n        bigLabel.adjustsFontSizeToFitWidth = true\n        return bigLabel\n    }()\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        if navigationController != nil {\n            navigationItem.titleView = bigLabel\n            bigLabel.sizeToFit()\n        }\n\n        if let pagerViewController = children.first as? PagerTabStripViewController {\n            updateTitle(of: pagerViewController)\n        }\n    }\n\n    @IBAction func reloadTapped(_ sender: UIBarButtonItem) {\n        for childViewController in children {\n            guard let child = childViewController as? PagerTabStripViewController else {\n                continue\n            }\n            child.reloadPagerTabStripView()\n            updateTitle(of: child)\n            break\n        }\n    }\n\n    @IBAction func closeTapped(_ sender: UIButton) {\n        dismiss(animated: true, completion: nil)\n    }\n\n    func updateTitle(of pagerTabStripViewController: PagerTabStripViewController) {\n        func stringFromBool(_ bool: Bool) -> String {\n            return bool ? \"YES\" : \"NO\"\n        }\n\n        titleLabel.text = \"Progressive = \\(stringFromBool(pagerTabStripViewController.pagerBehaviour.isProgressiveIndicator))  ElasticLimit = \\(stringFromBool(pagerTabStripViewController.pagerBehaviour.isElasticIndicatorLimit))\"\n\n        (navigationItem.titleView as? UILabel)?.text = titleLabel.text\n        navigationItem.titleView?.sizeToFit()\n    }\n\n    override var preferredStatusBarStyle: UIStatusBarStyle {\n        return .lightContent\n    }\n}\n"
  },
  {
    "path": "Example/Example/SegmentedExampleViewController.swift",
    "content": "//  SegmentedExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport XLPagerTabStrip\n\nclass SegmentedExampleViewController: SegmentedPagerTabStripViewController {\n\n    var isReload = false\n\n    required init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        // change segmented style\n        settings.style.segmentedControlColor = .white\n    }\n\n    // MARK: - PagerTabStripDataSource\n\n    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {\n        let child_1 = TableChildExampleViewController(style: .plain, itemInfo: \"Table View\")\n        let child_2 = ChildExampleViewController(itemInfo: \"View\")\n        let child_3 = TableChildExampleViewController(style: .grouped, itemInfo: \"Table View 2\")\n        let child_4 = ChildExampleViewController(itemInfo: \"View 2\")\n\n        guard isReload else {\n            return [child_1, child_2, child_3, child_4]\n        }\n\n        var childViewControllers = [child_1, child_2, child_3, child_4]\n        let count = childViewControllers.count\n\n        for index in childViewControllers.indices {\n            let nElements = count - index\n            let n = (Int(arc4random()) % nElements) + index\n            if n != index {\n                childViewControllers.swapAt(index, n)\n            }\n        }\n        let nItems = 1 + (arc4random() % 4)\n        return Array(childViewControllers.prefix(Int(nItems)))\n    }\n\n    @IBAction func reloadTapped(_ sender: UIBarButtonItem) {\n        isReload = true\n        pagerBehaviour = .common(skipIntermediateViewControllers: arc4random() % 2 == 0)\n        reloadPagerTabStripView()\n    }\n}\n"
  },
  {
    "path": "Example/Example/Spotify/SpotifyExampleViewController.swift",
    "content": "//  SpotifyExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport XLPagerTabStrip\n\nclass SpotifyExampleViewController: ButtonBarPagerTabStripViewController {\n\n    @IBOutlet weak var shadowView: UIView!\n\n    let graySpotifyColor = UIColor(red: 21/255.0, green: 21/255.0, blue: 24/255.0, alpha: 1.0)\n    let darkGraySpotifyColor = UIColor(red: 19/255.0, green: 20/255.0, blue: 20/255.0, alpha: 1.0)\n\n    override func viewDidLoad() {\n        // change selected bar color\n        settings.style.buttonBarBackgroundColor = graySpotifyColor\n        settings.style.buttonBarItemBackgroundColor = graySpotifyColor\n        settings.style.selectedBarBackgroundColor = UIColor(red: 33/255.0, green: 174/255.0, blue: 67/255.0, alpha: 1.0)\n        settings.style.buttonBarItemFont = UIFont(name: \"HelveticaNeue-Light\", size:14) ?? UIFont.systemFont(ofSize: 14)\n        settings.style.selectedBarHeight = 3.0\n        settings.style.buttonBarMinimumLineSpacing = 0\n        settings.style.buttonBarItemTitleColor = .black\n        settings.style.buttonBarItemsShouldFillAvailableWidth = true\n\n        settings.style.buttonBarLeftContentInset = 20\n        settings.style.buttonBarRightContentInset = 20\n\n        changeCurrentIndexProgressive = { (oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in\n            guard changeCurrentIndex == true else { return }\n            oldCell?.label.textColor = UIColor(red: 138/255.0, green: 138/255.0, blue: 144/255.0, alpha: 1.0)\n            newCell?.label.textColor = .white\n        }\n        super.viewDidLoad()\n    }\n\n    // MARK: - PagerTabStripDataSource\n\n    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {\n        let child_1 = TableChildExampleViewController(style: .plain, itemInfo: IndicatorInfo(title: \"FRIENDS\"))\n        child_1.blackTheme = true\n        let child_2 = TableChildExampleViewController(style: .plain, itemInfo: IndicatorInfo(title: \"FEATURED\"))\n        child_2.blackTheme = true\n        return [child_1, child_2]\n    }\n\n    // MARK: - Actions\n\n    @IBAction func closeAction(_ sender: UIButton) {\n        dismiss(animated: true, completion: nil)\n    }\n}\n"
  },
  {
    "path": "Example/Example/TwitterExampleViewController.swift",
    "content": "//  TwitterExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport XLPagerTabStrip\n\nclass TwitterExampleViewController: TwitterPagerTabStripViewController {\n    var isReload = false\n\n    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {\n\n        let child_1 = TableChildExampleViewController(style: .plain, itemInfo: \"TableView\")\n        let child_2 = ChildExampleViewController(itemInfo: \"View\")\n        let child_3 = TableChildExampleViewController(style: .grouped, itemInfo: \"TableView 2\")\n        let child_4 = ChildExampleViewController(itemInfo: \"View 2\")\n        let child_5 = TableChildExampleViewController(style: .plain, itemInfo: \"TableView 3\")\n        let child_6 = ChildExampleViewController(itemInfo: \"View 3\")\n        let child_7 = TableChildExampleViewController(style: .grouped, itemInfo: \"TableView 4\")\n        let child_8 = ChildExampleViewController(itemInfo: \"View 4\")\n\n        guard isReload else {\n            return [child_1, child_2, child_3, child_4, child_5, child_6, child_7, child_8]\n        }\n\n        var childViewControllers = [child_1, child_2, child_3, child_4, child_5, child_6, child_7, child_8]\n\n        for index in childViewControllers.indices {\n            let nElements = childViewControllers.count - index\n            let n = (Int(arc4random()) % nElements) + index\n            if n != index {\n                childViewControllers.swapAt(index, n)\n            }\n        }\n        let nItems = 1 + (arc4random() % 8)\n        return Array(childViewControllers.prefix(Int(nItems)))\n    }\n\n    @IBAction func reloadTapped(_ sender: AnyObject) {\n        isReload = true\n        reloadPagerTabStripView()\n    }\n}\n"
  },
  {
    "path": "Example/Example/Youtube/YoutubeExampleViewController.swift",
    "content": "//  YoutubeExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport XLPagerTabStrip\n\nclass YoutubeExampleViewController: BaseButtonBarPagerTabStripViewController<YoutubeIconCell> {\n\n    let redColor = UIColor(red: 221/255.0, green: 0/255.0, blue: 19/255.0, alpha: 1.0)\n    let unselectedIconColor = UIColor(red: 73/255.0, green: 8/255.0, blue: 10/255.0, alpha: 1.0)\n\n    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {\n        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)\n    }\n\n    required init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n\n        buttonBarItemSpec = ButtonBarItemSpec.nibFile(nibName: \"YoutubeIconCell\", bundle: Bundle(for: YoutubeIconCell.self), width: { _ in\n                return 55.0\n        })\n    }\n\n    override func viewDidLoad() {\n        // change selected bar color\n        settings.style.buttonBarBackgroundColor = redColor\n        settings.style.buttonBarItemBackgroundColor = .clear\n        settings.style.selectedBarBackgroundColor = UIColor(red: 234/255.0, green: 234/255.0, blue: 234/255.0, alpha: 1.0)\n        settings.style.selectedBarHeight = 4.0\n        settings.style.buttonBarMinimumLineSpacing = 0\n        settings.style.buttonBarItemTitleColor = .black\n        settings.style.buttonBarItemsShouldFillAvailableWidth = true\n        settings.style.buttonBarLeftContentInset = 0\n        settings.style.buttonBarRightContentInset = 0\n\n        changeCurrentIndexProgressive = { [weak self] (oldCell: YoutubeIconCell?, newCell: YoutubeIconCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in\n            guard changeCurrentIndex == true else { return }\n            oldCell?.iconImage.tintColor = self?.unselectedIconColor\n            newCell?.iconImage.tintColor = .white\n        }\n        super.viewDidLoad()\n        navigationController?.navigationBar.shadowImage = UIImage()\n        navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)\n    }\n\n    // MARK: - PagerTabStripDataSource\n\n    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {\n        let child_1 = TableChildExampleViewController(style: .plain, itemInfo: IndicatorInfo(title: \" HOME\", image: UIImage(named: \"home\")))\n        let child_2 = TableChildExampleViewController(style: .plain, itemInfo: IndicatorInfo(title: \" TRENDING\", image: UIImage(named: \"trending\")))\n        let child_3 = ChildExampleViewController(itemInfo: IndicatorInfo(title: \" ACCOUNT\", image: UIImage(named: \"profile\")))\n        return [child_1, child_2, child_3]\n    }\n\n    override func configure(cell: YoutubeIconCell, for indicatorInfo: IndicatorInfo) {\n        cell.iconImage.image = indicatorInfo.image?.withRenderingMode(.alwaysTemplate)\n    }\n\n    override func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool) {\n        super.updateIndicator(for: viewController, fromIndex: fromIndex, toIndex: toIndex, withProgressPercentage: progressPercentage, indexWasChanged: indexWasChanged)\n        if indexWasChanged && toIndex > -1 && toIndex < viewControllers.count {\n            let child = viewControllers[toIndex] as! IndicatorInfoProvider // swiftlint:disable:this force_cast\n            UIView.performWithoutAnimation({ [weak self] () -> Void in\n                guard let me = self else { return }\n                me.navigationItem.leftBarButtonItem?.title =  child.indicatorInfo(for: me).title\n            })\n        }\n    }\n\n    // MARK: - Actions\n\n    @IBAction func closeAction(_ sender: UIButton) {\n        dismiss(animated: true, completion: nil)\n    }\n}\n"
  },
  {
    "path": "Example/Example/Youtube/YoutubeIconCell.swift",
    "content": "//  YoutubeIconCell.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n\nclass YoutubeIconCell: UICollectionViewCell {\n\n    @IBOutlet weak var iconImage: UIImageView!\n\n}\n"
  },
  {
    "path": "Example/Example/Youtube/YoutubeIconCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"9531\" systemVersion=\"15C50\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"9529\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <collectionViewCell opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" id=\"2CI-9N-dP3\" customClass=\"YoutubeIconCell\" customModule=\"Example\" customModuleProvider=\"target\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"74\" height=\"50\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"74\" height=\"50\"/>\n                <autoresizingMask key=\"autoresizingMask\"/>\n                <subviews>\n                    <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Tkn-VR-o25\">\n                        <rect key=\"frame\" x=\"20\" y=\"8\" width=\"35\" height=\"35\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"width\" constant=\"35\" id=\"EUF-rI-9Y8\"/>\n                            <constraint firstAttribute=\"height\" constant=\"35\" id=\"RoA-LT-AHV\"/>\n                        </constraints>\n                    </imageView>\n                </subviews>\n                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n            </view>\n            <constraints>\n                <constraint firstItem=\"Tkn-VR-o25\" firstAttribute=\"centerX\" secondItem=\"2CI-9N-dP3\" secondAttribute=\"centerX\" id=\"wav-eA-a2N\"/>\n                <constraint firstItem=\"Tkn-VR-o25\" firstAttribute=\"centerY\" secondItem=\"2CI-9N-dP3\" secondAttribute=\"centerY\" id=\"xV4-vo-sZc\"/>\n            </constraints>\n            <size key=\"customSize\" width=\"74\" height=\"50\"/>\n            <connections>\n                <outlet property=\"iconImage\" destination=\"Tkn-VR-o25\" id=\"7DO-mm-BJX\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"317\" y=\"376\"/>\n        </collectionViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "Example/Example/YoutubeWithLabel/YoutubeIconWithLabelCell.swift",
    "content": "//  YoutubeIconWithLabelCell.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n\nclass YoutubeIconWithLabelCell: UICollectionViewCell {\n\n    @IBOutlet weak var iconImage: UIImageView!\n    @IBOutlet weak var iconLabel: UILabel!\n\n}\n"
  },
  {
    "path": "Example/Example/YoutubeWithLabel/YoutubeIconWithLabelCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"13529\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"13527\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <collectionViewCell opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" id=\"2CI-9N-dP3\" customClass=\"YoutubeIconWithLabelCell\" customModule=\"Example\" customModuleProvider=\"target\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"74\" height=\"70\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"74\" height=\"70\"/>\n                <autoresizingMask key=\"autoresizingMask\"/>\n                <subviews>\n                    <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Tkn-VR-o25\">\n                        <rect key=\"frame\" x=\"20\" y=\"10\" width=\"35\" height=\"35\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"width\" constant=\"35\" id=\"EUF-rI-9Y8\"/>\n                            <constraint firstAttribute=\"height\" constant=\"35\" id=\"RoA-LT-AHV\"/>\n                        </constraints>\n                    </imageView>\n                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rwk-fy-4KB\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"45\" width=\"74\" height=\"20\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" constant=\"20\" id=\"kWi-HY-P6M\"/>\n                        </constraints>\n                        <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"10\"/>\n                        <nil key=\"textColor\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                </subviews>\n            </view>\n            <constraints>\n                <constraint firstItem=\"rwk-fy-4KB\" firstAttribute=\"top\" secondItem=\"Tkn-VR-o25\" secondAttribute=\"bottom\" id=\"A8G-Sk-d4C\"/>\n                <constraint firstItem=\"Tkn-VR-o25\" firstAttribute=\"top\" secondItem=\"2CI-9N-dP3\" secondAttribute=\"top\" constant=\"10\" id=\"DaW-j3-w2g\"/>\n                <constraint firstItem=\"rwk-fy-4KB\" firstAttribute=\"leading\" secondItem=\"2CI-9N-dP3\" secondAttribute=\"leading\" id=\"HFm-qh-fCk\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"rwk-fy-4KB\" secondAttribute=\"bottom\" constant=\"5\" id=\"Q0g-pb-bbf\"/>\n                <constraint firstAttribute=\"trailing\" secondItem=\"rwk-fy-4KB\" secondAttribute=\"trailing\" id=\"YuE-x9-9EY\"/>\n                <constraint firstItem=\"Tkn-VR-o25\" firstAttribute=\"centerX\" secondItem=\"2CI-9N-dP3\" secondAttribute=\"centerX\" id=\"wav-eA-a2N\"/>\n            </constraints>\n            <size key=\"customSize\" width=\"74\" height=\"50\"/>\n            <connections>\n                <outlet property=\"iconImage\" destination=\"Tkn-VR-o25\" id=\"7DO-mm-BJX\"/>\n                <outlet property=\"iconLabel\" destination=\"rwk-fy-4KB\" id=\"76s-nG-weE\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"317\" y=\"376\"/>\n        </collectionViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "Example/Example/YoutubeWithLabel/YoutubeWithLabelExampleViewController.swift",
    "content": "//  YoutubeWithLabelExampleViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport XLPagerTabStrip\n\nclass YoutubeWithLabelExampleViewController: BaseButtonBarPagerTabStripViewController<YoutubeIconWithLabelCell> {\n\n    let redColor = UIColor(red: 221/255.0, green: 0/255.0, blue: 19/255.0, alpha: 1.0)\n    let unselectedIconColor = UIColor(red: 73/255.0, green: 8/255.0, blue: 10/255.0, alpha: 1.0)\n\n    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {\n        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)\n    }\n\n    required init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n\n        buttonBarItemSpec = ButtonBarItemSpec.nibFile(nibName: \"YoutubeIconWithLabelCell\", bundle: Bundle(for: YoutubeIconWithLabelCell.self), width: { _ in\n                return 70.0\n        })\n    }\n\n    override func viewDidLoad() {\n        // change selected bar color\n        settings.style.buttonBarBackgroundColor = redColor\n        settings.style.buttonBarItemBackgroundColor = .clear\n        settings.style.selectedBarBackgroundColor = UIColor(red: 234/255.0, green: 234/255.0, blue: 234/255.0, alpha: 1.0)\n        settings.style.selectedBarHeight = 4.0\n        settings.style.buttonBarMinimumLineSpacing = 0\n        settings.style.buttonBarItemTitleColor = .black\n        settings.style.buttonBarItemsShouldFillAvailableWidth = true\n        settings.style.buttonBarLeftContentInset = 0\n        settings.style.buttonBarRightContentInset = 0\n\n        changeCurrentIndexProgressive = { [weak self] (oldCell: YoutubeIconWithLabelCell?, newCell: YoutubeIconWithLabelCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in\n            guard changeCurrentIndex == true else { return }\n            oldCell?.iconImage.tintColor = self?.unselectedIconColor\n            oldCell?.iconLabel.textColor = self?.unselectedIconColor\n            newCell?.iconImage.tintColor = .white\n            newCell?.iconLabel.textColor = .white\n        }\n        super.viewDidLoad()\n        navigationController?.navigationBar.shadowImage = UIImage()\n        navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)\n    }\n\n    // MARK: - PagerTabStripDataSource\n\n    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {\n        let child_1 = TableChildExampleViewController(style: .plain, itemInfo: IndicatorInfo(title: \" HOME\", image: UIImage(named: \"home\")))\n        let child_2 = TableChildExampleViewController(style: .plain, itemInfo: IndicatorInfo(title: \" TRENDING\", image: UIImage(named: \"trending\")))\n        let child_3 = ChildExampleViewController(itemInfo: IndicatorInfo(title: \" ACCOUNT\", image: UIImage(named: \"profile\")))\n        return [child_1, child_2, child_3]\n    }\n\n    override func configure(cell: YoutubeIconWithLabelCell, for indicatorInfo: IndicatorInfo) {\n        cell.iconImage.image = indicatorInfo.image?.withRenderingMode(.alwaysTemplate)\n        cell.iconLabel.text = indicatorInfo.title?.trimmingCharacters(in: .whitespacesAndNewlines)\n    }\n\n    override func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool) {\n        super.updateIndicator(for: viewController, fromIndex: fromIndex, toIndex: toIndex, withProgressPercentage: progressPercentage, indexWasChanged: indexWasChanged)\n        if indexWasChanged && toIndex > -1 && toIndex < viewControllers.count {\n            let child = viewControllers[toIndex] as! IndicatorInfoProvider // swiftlint:disable:this force_cast\n            UIView.performWithoutAnimation({ [weak self] () -> Void in\n                guard let me = self else { return }\n                me.navigationItem.leftBarButtonItem?.title =  child.indicatorInfo(for: me).title\n            })\n        }\n    }\n\n    // MARK: - Actions\n\n    @IBAction func closeAction(_ sender: UIButton) {\n        dismiss(animated: true, completion: nil)\n    }\n}\n"
  },
  {
    "path": "Example/ExampleUITests/ExampleUITests.swift",
    "content": "//\n//  ExampleUITests.swift\n//  ExampleUITests\n//\n//  Copyright © 2016 Xmartlabs SRL. All rights reserved.\n//\n\nimport XCTest\n\nclass ExampleUITests: XCTestCase {\n\n    override func setUp() {\n        super.setUp()\n\n        // Put setup code here. This method is called before the invocation of each test method in the class.\n\n        // In UI tests it is usually best to stop immediately when a failure occurs.\n        continueAfterFailure = false\n        // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.\n        XCUIApplication().launch()\n\n        // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.\n    }\n\n    override func tearDown() {\n        // Put teardown code here. This method is called after the invocation of each test method in the class.\n        super.tearDown()\n    }\n\n    func testExample() {\n        // Use recording to get started writing UI tests.\n        // Use XCTAssert and related functions to verify your tests produce the correct results.\n    }\n\n}\n"
  },
  {
    "path": "Example/ExampleUITests/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>BNDL</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</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example.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\t1F081A9E1FDABD1400B881EB /* YoutubeIconWithLabelCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F081A9B1FDABD1400B881EB /* YoutubeIconWithLabelCell.swift */; };\n\t\t1F081A9F1FDABD1400B881EB /* YoutubeIconWithLabelCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1F081A9C1FDABD1400B881EB /* YoutubeIconWithLabelCell.xib */; };\n\t\t1F081AA01FDABD1400B881EB /* YoutubeWithLabelExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F081A9D1FDABD1400B881EB /* YoutubeWithLabelExampleViewController.swift */; };\n\t\t285718181C568336004D7E7B /* DataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 285718171C568336004D7E7B /* DataProvider.swift */; };\n\t\t285DA2881C569AA2000908CA /* ChildExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 285DA2861C569AA2000908CA /* ChildExampleViewController.swift */; };\n\t\t285DA2891C569AA2000908CA /* TableChildExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 285DA2871C569AA2000908CA /* TableChildExampleViewController.swift */; };\n\t\t285DA28C1C592154000908CA /* InstagramExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 285DA28B1C592154000908CA /* InstagramExampleViewController.swift */; };\n\t\t285DA2901C59C587000908CA /* SpotifyExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 285DA28F1C59C587000908CA /* SpotifyExampleViewController.swift */; };\n\t\t285DA2931C5A596B000908CA /* YoutubeExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 285DA2921C5A596B000908CA /* YoutubeExampleViewController.swift */; };\n\t\t285DA2951C5A6A00000908CA /* YoutubeIconCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 285DA2941C5A6A00000908CA /* YoutubeIconCell.swift */; };\n\t\t285DA2971C5A6A36000908CA /* YoutubeIconCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 285DA2961C5A6A36000908CA /* YoutubeIconCell.xib */; };\n\t\t287D0A721C4B7877004566D6 /* ExampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 287D0A711C4B7877004566D6 /* ExampleUITests.swift */; };\n\t\t287D0A7D1C4B7B55004566D6 /* XLPagerTabStrip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 287D0A7A1C4B7B26004566D6 /* XLPagerTabStrip.framework */; };\n\t\t287D0A7E1C4B7B55004566D6 /* XLPagerTabStrip.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 287D0A7A1C4B7B26004566D6 /* XLPagerTabStrip.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t28F828D01C4B714D00330CF4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28F828CF1C4B714D00330CF4 /* AppDelegate.swift */; };\n\t\tCB2125DE1C52A80E002DAF42 /* TwitterExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB2125DD1C52A80E002DAF42 /* TwitterExampleViewController.swift */; };\n\t\tCB3697BF1C5177B4001FC5F8 /* ButtonBarExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB3697BE1C5177B4001FC5F8 /* ButtonBarExampleViewController.swift */; };\n\t\tCB71C6EB1C4EB964008EC806 /* SegmentedExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB71C6EA1C4EB964008EC806 /* SegmentedExampleViewController.swift */; };\n\t\tCB71C6F31C4FDDCE008EC806 /* PostCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB71C6F21C4FDDCE008EC806 /* PostCell.swift */; };\n\t\tCB86ED801C4D6F0D00DA463B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CB86ED6F1C4D6F0D00DA463B /* Assets.xcassets */; };\n\t\tCB86ED811C4D6F0D00DA463B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CB86ED711C4D6F0D00DA463B /* LaunchScreen.storyboard */; };\n\t\tCB86ED941C4E89DD00DA463B /* PostCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = CB86ED931C4E89DD00DA463B /* PostCell.xib */; };\n\t\tCBA0A1FF1C50304500C5748C /* BarExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBA0A1FE1C50304500C5748C /* BarExampleViewController.swift */; };\n\t\tCBA0A2021C5032E100C5748C /* Storyboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CBA0A2011C5032E100C5748C /* Storyboard.storyboard */; };\n\t\tCBA0A2041C5033B400C5748C /* ReloadExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBA0A2031C5033B400C5748C /* ReloadExampleViewController.swift */; };\n\t\tCBBD435F1C5274AE001A748E /* NavButtonBarExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBBD435E1C5274AE001A748E /* NavButtonBarExampleViewController.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t287D0A791C4B7B26004566D6 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 287D0A741C4B7B26004566D6 /* XLPagerTabStrip.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 28F8287D1C494B2C00330CF4;\n\t\t\tremoteInfo = XLPagerTabStrip;\n\t\t};\n\t\t287D0A7B1C4B7B26004566D6 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 287D0A741C4B7B26004566D6 /* XLPagerTabStrip.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 28F828871C494B2C00330CF4;\n\t\t\tremoteInfo = XLPagerTabStripTests;\n\t\t};\n\t\t287D0A7F1C4B7B55004566D6 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 287D0A741C4B7B26004566D6 /* XLPagerTabStrip.xcodeproj */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 28F8287C1C494B2C00330CF4;\n\t\t\tremoteInfo = XLPagerTabStrip;\n\t\t};\n\t\t28F828E11C4B714D00330CF4 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 28F828C41C4B714D00330CF4 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 28F828CB1C4B714D00330CF4;\n\t\t\tremoteInfo = Example;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t287D0A811C4B7B55004566D6 /* Embed Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t287D0A7E1C4B7B55004566D6 /* XLPagerTabStrip.framework in Embed Frameworks */,\n\t\t\t);\n\t\t\tname = \"Embed Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t1F081A9B1FDABD1400B881EB /* YoutubeIconWithLabelCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YoutubeIconWithLabelCell.swift; sourceTree = \"<group>\"; };\n\t\t1F081A9C1FDABD1400B881EB /* YoutubeIconWithLabelCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = YoutubeIconWithLabelCell.xib; sourceTree = \"<group>\"; };\n\t\t1F081A9D1FDABD1400B881EB /* YoutubeWithLabelExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YoutubeWithLabelExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\t285718171C568336004D7E7B /* DataProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DataProvider.swift; path = Example/Helpers/DataProvider.swift; sourceTree = \"<group>\"; };\n\t\t285DA2861C569AA2000908CA /* ChildExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ChildExampleViewController.swift; path = Example/ChildControllers/ChildExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\t285DA2871C569AA2000908CA /* TableChildExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TableChildExampleViewController.swift; path = Example/ChildControllers/TableChildExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\t285DA28B1C592154000908CA /* InstagramExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = InstagramExampleViewController.swift; path = Example/Instagram/InstagramExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\t285DA28F1C59C587000908CA /* SpotifyExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpotifyExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\t285DA2921C5A596B000908CA /* YoutubeExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = YoutubeExampleViewController.swift; path = Example/Youtube/YoutubeExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\t285DA2941C5A6A00000908CA /* YoutubeIconCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = YoutubeIconCell.swift; path = Example/Youtube/YoutubeIconCell.swift; sourceTree = \"<group>\"; };\n\t\t285DA2961C5A6A36000908CA /* YoutubeIconCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = YoutubeIconCell.xib; path = Example/Youtube/YoutubeIconCell.xib; sourceTree = \"<group>\"; };\n\t\t287D0A711C4B7877004566D6 /* ExampleUITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ExampleUITests.swift; path = Example/ExampleUITests/ExampleUITests.swift; sourceTree = SOURCE_ROOT; };\n\t\t287D0A741C4B7B26004566D6 /* XLPagerTabStrip.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; path = XLPagerTabStrip.xcodeproj; sourceTree = \"<group>\"; };\n\t\t28F828CC1C4B714D00330CF4 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t28F828CF1C4B714D00330CF4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = Example/AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\t28F828DB1C4B714D00330CF4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Example/Info.plist; sourceTree = \"<group>\"; };\n\t\t28F828E01C4B714D00330CF4 /* ExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t28F828E61C4B714D00330CF4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tCB2125DD1C52A80E002DAF42 /* TwitterExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TwitterExampleViewController.swift; path = Example/TwitterExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tCB3697BE1C5177B4001FC5F8 /* ButtonBarExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ButtonBarExampleViewController.swift; path = Example/Example/ButtonBarExampleViewController.swift; sourceTree = SOURCE_ROOT; };\n\t\tCB71C6EA1C4EB964008EC806 /* SegmentedExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SegmentedExampleViewController.swift; path = Example/SegmentedExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tCB71C6F21C4FDDCE008EC806 /* PostCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PostCell.swift; path = Example/Helpers/PostCell.swift; sourceTree = \"<group>\"; };\n\t\tCB86ED6F1C4D6F0D00DA463B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Example/Assets.xcassets; sourceTree = \"<group>\"; };\n\t\tCB86ED721C4D6F0D00DA463B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\tCB86ED931C4E89DD00DA463B /* PostCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = PostCell.xib; path = Example/Helpers/PostCell.xib; sourceTree = \"<group>\"; };\n\t\tCBA0A1FE1C50304500C5748C /* BarExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BarExampleViewController.swift; path = Example/BarExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tCBA0A2011C5032E100C5748C /* Storyboard.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Storyboard.storyboard; sourceTree = \"<group>\"; };\n\t\tCBA0A2031C5033B400C5748C /* ReloadExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ReloadExampleViewController.swift; path = Example/ReloadExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tCBBD435E1C5274AE001A748E /* NavButtonBarExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NavButtonBarExampleViewController.swift; path = Example/NavButtonBarExampleViewController.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t28F828C91C4B714D00330CF4 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t287D0A7D1C4B7B55004566D6 /* XLPagerTabStrip.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t28F828DD1C4B714D00330CF4 /* 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/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t1F081A9A1FDABD1400B881EB /* YoutubeWithLabel */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1F081A9B1FDABD1400B881EB /* YoutubeIconWithLabelCell.swift */,\n\t\t\t\t1F081A9C1FDABD1400B881EB /* YoutubeIconWithLabelCell.xib */,\n\t\t\t\t1F081A9D1FDABD1400B881EB /* YoutubeWithLabelExampleViewController.swift */,\n\t\t\t);\n\t\t\tname = YoutubeWithLabel;\n\t\t\tpath = Example/YoutubeWithLabel;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t285718151C568285004D7E7B /* Helpers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCB86ED931C4E89DD00DA463B /* PostCell.xib */,\n\t\t\t\tCB71C6F21C4FDDCE008EC806 /* PostCell.swift */,\n\t\t\t\t285718171C568336004D7E7B /* DataProvider.swift */,\n\t\t\t);\n\t\t\tname = Helpers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t285DA2841C569A3E000908CA /* ChildControllers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t285DA2861C569AA2000908CA /* ChildExampleViewController.swift */,\n\t\t\t\t285DA2871C569AA2000908CA /* TableChildExampleViewController.swift */,\n\t\t\t);\n\t\t\tname = ChildControllers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t285DA28A1C59210F000908CA /* Instagram  */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t285DA28B1C592154000908CA /* InstagramExampleViewController.swift */,\n\t\t\t);\n\t\t\tname = \"Instagram \";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t285DA28E1C59C587000908CA /* Spotify */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t285DA28F1C59C587000908CA /* SpotifyExampleViewController.swift */,\n\t\t\t);\n\t\t\tname = Spotify;\n\t\t\tpath = Example/Spotify;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t285DA2911C5A5945000908CA /* Youtube */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t285DA2921C5A596B000908CA /* YoutubeExampleViewController.swift */,\n\t\t\t\t285DA2941C5A6A00000908CA /* YoutubeIconCell.swift */,\n\t\t\t\t285DA2961C5A6A36000908CA /* YoutubeIconCell.xib */,\n\t\t\t);\n\t\t\tname = Youtube;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t287D0A751C4B7B26004566D6 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t287D0A7A1C4B7B26004566D6 /* XLPagerTabStrip.framework */,\n\t\t\t\t287D0A7C1C4B7B26004566D6 /* XLPagerTabStripTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t28F828C31C4B714D00330CF4 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t28F828CE1C4B714D00330CF4 /* Example */,\n\t\t\t\t28F828E31C4B714D00330CF4 /* ExampleUITests */,\n\t\t\t\t28F828CD1C4B714D00330CF4 /* Products */,\n\t\t\t\t287D0A741C4B7B26004566D6 /* XLPagerTabStrip.xcodeproj */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t28F828CD1C4B714D00330CF4 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t28F828CC1C4B714D00330CF4 /* Example.app */,\n\t\t\t\t28F828E01C4B714D00330CF4 /* ExampleUITests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t28F828CE1C4B714D00330CF4 /* Example */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCB86ED6C1C4D6ED400DA463B /* Demo */,\n\t\t\t\t28F828CF1C4B714D00330CF4 /* AppDelegate.swift */,\n\t\t\t\t28F828DB1C4B714D00330CF4 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = Example;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t28F828E31C4B714D00330CF4 /* ExampleUITests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t28F828E61C4B714D00330CF4 /* Info.plist */,\n\t\t\t\t287D0A711C4B7877004566D6 /* ExampleUITests.swift */,\n\t\t\t);\n\t\t\tname = ExampleUITests;\n\t\t\tpath = Example/ExampleUITests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCB86ED6C1C4D6ED400DA463B /* Demo */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1F081A9A1FDABD1400B881EB /* YoutubeWithLabel */,\n\t\t\t\t285DA2911C5A5945000908CA /* Youtube */,\n\t\t\t\t285DA28E1C59C587000908CA /* Spotify */,\n\t\t\t\t285DA28A1C59210F000908CA /* Instagram  */,\n\t\t\t\t285DA2841C569A3E000908CA /* ChildControllers */,\n\t\t\t\t285718151C568285004D7E7B /* Helpers */,\n\t\t\t\tCB86ED701C4D6F0D00DA463B /* Base.lproj */,\n\t\t\t\tCB86ED6F1C4D6F0D00DA463B /* Assets.xcassets */,\n\t\t\t\tCB71C6EA1C4EB964008EC806 /* SegmentedExampleViewController.swift */,\n\t\t\t\tCB3697BE1C5177B4001FC5F8 /* ButtonBarExampleViewController.swift */,\n\t\t\t\tCBA0A1FE1C50304500C5748C /* BarExampleViewController.swift */,\n\t\t\t\tCBA0A2031C5033B400C5748C /* ReloadExampleViewController.swift */,\n\t\t\t\tCBBD435E1C5274AE001A748E /* NavButtonBarExampleViewController.swift */,\n\t\t\t\tCB2125DD1C52A80E002DAF42 /* TwitterExampleViewController.swift */,\n\t\t\t);\n\t\t\tname = Demo;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCB86ED701C4D6F0D00DA463B /* Base.lproj */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCBA0A2011C5032E100C5748C /* Storyboard.storyboard */,\n\t\t\t\tCB86ED711C4D6F0D00DA463B /* LaunchScreen.storyboard */,\n\t\t\t);\n\t\t\tname = Base.lproj;\n\t\t\tpath = Example/Base.lproj;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t28F828CB1C4B714D00330CF4 /* Example */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 28F828E91C4B714D00330CF4 /* Build configuration list for PBXNativeTarget \"Example\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t28F828C81C4B714D00330CF4 /* Sources */,\n\t\t\t\t28F828C91C4B714D00330CF4 /* Frameworks */,\n\t\t\t\t28F828CA1C4B714D00330CF4 /* Resources */,\n\t\t\t\t287D0A811C4B7B55004566D6 /* Embed Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t287D0A801C4B7B55004566D6 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = Example;\n\t\t\tproductName = Example;\n\t\t\tproductReference = 28F828CC1C4B714D00330CF4 /* Example.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t28F828DF1C4B714D00330CF4 /* ExampleUITests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 28F828EC1C4B714D00330CF4 /* Build configuration list for PBXNativeTarget \"ExampleUITests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t28F828DC1C4B714D00330CF4 /* Sources */,\n\t\t\t\t28F828DD1C4B714D00330CF4 /* Frameworks */,\n\t\t\t\t28F828DE1C4B714D00330CF4 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t28F828E21C4B714D00330CF4 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = ExampleUITests;\n\t\t\tproductName = ExampleUITests;\n\t\t\tproductReference = 28F828E01C4B714D00330CF4 /* ExampleUITests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.ui-testing\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t28F828C41C4B714D00330CF4 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0720;\n\t\t\t\tLastUpgradeCheck = 1020;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t28F828CB1C4B714D00330CF4 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.2;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t};\n\t\t\t\t\t28F828DF1C4B714D00330CF4 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.2;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t\tTestTargetID = 28F828CB1C4B714D00330CF4;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 28F828C71C4B714D00330CF4 /* Build configuration list for PBXProject \"Example\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\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 = 28F828C31C4B714D00330CF4;\n\t\t\tproductRefGroup = 28F828CD1C4B714D00330CF4 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectReferences = (\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 287D0A751C4B7B26004566D6 /* Products */;\n\t\t\t\t\tProjectRef = 287D0A741C4B7B26004566D6 /* XLPagerTabStrip.xcodeproj */;\n\t\t\t\t},\n\t\t\t);\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t28F828CB1C4B714D00330CF4 /* Example */,\n\t\t\t\t28F828DF1C4B714D00330CF4 /* ExampleUITests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXReferenceProxy section */\n\t\t287D0A7A1C4B7B26004566D6 /* XLPagerTabStrip.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = XLPagerTabStrip.framework;\n\t\t\tremoteRef = 287D0A791C4B7B26004566D6 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t287D0A7C1C4B7B26004566D6 /* XLPagerTabStripTests.xctest */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.cfbundle;\n\t\t\tpath = XLPagerTabStripTests.xctest;\n\t\t\tremoteRef = 287D0A7B1C4B7B26004566D6 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n/* End PBXReferenceProxy section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t28F828CA1C4B714D00330CF4 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tCB86ED801C4D6F0D00DA463B /* Assets.xcassets in Resources */,\n\t\t\t\tCB86ED941C4E89DD00DA463B /* PostCell.xib in Resources */,\n\t\t\t\tCBA0A2021C5032E100C5748C /* Storyboard.storyboard in Resources */,\n\t\t\t\t1F081A9F1FDABD1400B881EB /* YoutubeIconWithLabelCell.xib in Resources */,\n\t\t\t\tCB86ED811C4D6F0D00DA463B /* LaunchScreen.storyboard in Resources */,\n\t\t\t\t285DA2971C5A6A36000908CA /* YoutubeIconCell.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t28F828DE1C4B714D00330CF4 /* 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 PBXSourcesBuildPhase section */\n\t\t28F828C81C4B714D00330CF4 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t285DA28C1C592154000908CA /* InstagramExampleViewController.swift in Sources */,\n\t\t\t\tCB71C6EB1C4EB964008EC806 /* SegmentedExampleViewController.swift in Sources */,\n\t\t\t\t28F828D01C4B714D00330CF4 /* AppDelegate.swift in Sources */,\n\t\t\t\tCBA0A2041C5033B400C5748C /* ReloadExampleViewController.swift in Sources */,\n\t\t\t\t285DA2901C59C587000908CA /* SpotifyExampleViewController.swift in Sources */,\n\t\t\t\tCB3697BF1C5177B4001FC5F8 /* ButtonBarExampleViewController.swift in Sources */,\n\t\t\t\t285DA2881C569AA2000908CA /* ChildExampleViewController.swift in Sources */,\n\t\t\t\tCBA0A1FF1C50304500C5748C /* BarExampleViewController.swift in Sources */,\n\t\t\t\t285718181C568336004D7E7B /* DataProvider.swift in Sources */,\n\t\t\t\tCB2125DE1C52A80E002DAF42 /* TwitterExampleViewController.swift in Sources */,\n\t\t\t\t285DA2891C569AA2000908CA /* TableChildExampleViewController.swift in Sources */,\n\t\t\t\t1F081A9E1FDABD1400B881EB /* YoutubeIconWithLabelCell.swift in Sources */,\n\t\t\t\tCBBD435F1C5274AE001A748E /* NavButtonBarExampleViewController.swift in Sources */,\n\t\t\t\tCB71C6F31C4FDDCE008EC806 /* PostCell.swift in Sources */,\n\t\t\t\t285DA2931C5A596B000908CA /* YoutubeExampleViewController.swift in Sources */,\n\t\t\t\t285DA2951C5A6A00000908CA /* YoutubeIconCell.swift in Sources */,\n\t\t\t\t1F081AA01FDABD1400B881EB /* YoutubeWithLabelExampleViewController.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t28F828DC1C4B714D00330CF4 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t287D0A721C4B7877004566D6 /* ExampleUITests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t287D0A801C4B7B55004566D6 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = XLPagerTabStrip;\n\t\t\ttargetProxy = 287D0A7F1C4B7B55004566D6 /* PBXContainerItemProxy */;\n\t\t};\n\t\t28F828E21C4B714D00330CF4 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 28F828CB1C4B714D00330CF4 /* Example */;\n\t\t\ttargetProxy = 28F828E11C4B714D00330CF4 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\tCB86ED711C4D6F0D00DA463B /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tCB86ED721C4D6F0D00DA463B /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t28F828E71C4B714D00330CF4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\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_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\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\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\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_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_AGGRESSIVE;\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 = 9.3;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t28F828E81C4B714D00330CF4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\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_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\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\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\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_AGGRESSIVE;\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 = 9.3;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t28F828EA1C4B714D00330CF4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/Example/Example/Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.Example;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t28F828EB1C4B714D00330CF4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/Example/Example/Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.Example;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t28F828ED1C4B714D00330CF4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tINFOPLIST_FILE = Example/ExampleUITests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.ExampleUITests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTEST_TARGET_NAME = Example;\n\t\t\t\tUSES_XCTRUNNER = YES;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t28F828EE1C4B714D00330CF4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tINFOPLIST_FILE = Example/ExampleUITests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.ExampleUITests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTEST_TARGET_NAME = Example;\n\t\t\t\tUSES_XCTRUNNER = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t28F828C71C4B714D00330CF4 /* Build configuration list for PBXProject \"Example\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t28F828E71C4B714D00330CF4 /* Debug */,\n\t\t\t\t28F828E81C4B714D00330CF4 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t28F828E91C4B714D00330CF4 /* Build configuration list for PBXNativeTarget \"Example\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t28F828EA1C4B714D00330CF4 /* Debug */,\n\t\t\t\t28F828EB1C4B714D00330CF4 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t28F828EC1C4B714D00330CF4 /* Build configuration list for PBXNativeTarget \"ExampleUITests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t28F828ED1C4B714D00330CF4 /* Debug */,\n\t\t\t\t28F828EE1C4B714D00330CF4 /* 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 = 28F828C41C4B714D00330CF4 /* Project object */;\n}\n"
  },
  {
    "path": "Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:Example.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2019 Xmartlabs SRL\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\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 THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Migration.md",
    "content": "## How to migrate from Swift 2 to Swift 3\n\nTo migrate from Swift 2 to Swift 3 you have to change the naming of some of the functions you call or override. These are the name changes for version 6.0+ in `PagerTabStripViewController`:\n\n| Swift 2 function name | Swift 3 function name |\n| --------------------- | --------------------- |\n| `func viewControllersForPagerTabStrip(_ pagerTabStripController: PagerTabStripViewController) -> [UIViewController]` | `func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController]` |\n| `func indicatorInfoForPagerTabStrip(_ pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo` | `func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo` |\n| `func pagerTabStripViewController(_ pagerTabStripViewController: PagerTabStripViewController, updateIndicatorFromIndex fromIndex: Int, toIndex: Int)` | `func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int)` |\n| `func pagerTabStripViewController(_ pagerTabStripViewController: PagerTabStripViewController, updateIndicatorFromIndex fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool)` | `func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool)` |\n| `func moveToViewControllerAtIndex(_ index: Int, animated: Bool = true)` | `func moveToViewController(at index: Int, animated: Bool = true)` |\n| `func moveToViewController(_ viewController: UIViewController, animated: Bool = true)` | `func moveTo(viewController: UIViewController, animated: Bool = true)` |\n| `func canMoveToIndex(index: Int) -> Bool` | `func canMoveTo(index: Int) -> Bool` |\n| ` func pageOffsetForChildIndex(index: Int) -> CGFloat` | `func pageOffsetForChild(at index: Int) -> CGFloat` |\n| `func offsetForChildIndex(_ index: Int) -> CGFloat` | `func offsetForChild(at index: Int) -> CGFloat` |\n| `func offsetForChildViewController(_ viewController: UIViewController) throws -> CGFloat` | `func offsetForChild(viewController: UIViewController) throws -> CGFloat` |\n| `func pageForContentOffset(_ contentOffset: CGFloat) -> Int` | `func pageFor(contentOffset: CGFloat) -> Int` |\n| `func virtualPageForContentOffset(_ contentOffset: CGFloat) -> Int` | `func virtualPageFor(contentOffset: CGFloat) -> Int` |\n| `func pageForVirtualPage(_ virtualPage: Int) -> Int` | `func pageFor(virtualPage: Int) -> Int` |\n\nYou can check all the changes in [this pull request](https://github.com/xmartlabs/XLPagerTabStrip/pull/226)"
  },
  {
    "path": "ObjC/FXPageControl.h",
    "content": "//\n//  FXPageControl.h\n//\n//  Version 1.6\n//\n//  Created by Nick Lockwood on 07/01/2010.\n//  Copyright 2010 Charcoal Design\n//\n//  Distributed under the permissive zlib License\n//  Get the latest version of FXPageControl from here:\n//\n//  https://github.com/nicklockwood/FXPageControl\n//\n//  This software is provided 'as-is', without any express or implied\n//  warranty.  In no event will the authors be held liable for any damages\n//  arising from the use of this software.\n//\n//  Permission is granted to anyone to use this software for any purpose,\n//  including commercial applications, and to alter it and redistribute it\n//  freely, subject to the following restrictions:\n//\n//  1. The origin of this software must not be misrepresented; you must not\n//  claim that you wrote the original software. If you use this software\n//  in a product, an acknowledgment in the product documentation would be\n//  appreciated but is not required.\n//\n//  2. Altered source versions must be plainly marked as such, and must not be\n//  misrepresented as being the original software.\n//\n//  3. This notice may not be removed or altered from any source distribution.\n//\n\n\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wobjc-missing-property-synthesis\"\n#import <UIKit/UIKit.h>\n\n\nNS_ASSUME_NONNULL_BEGIN\n\n\nextern const CGPathRef FXPageControlDotShapeCircle;\nextern const CGPathRef FXPageControlDotShapeSquare;\nextern const CGPathRef FXPageControlDotShapeTriangle;\n\n\n@protocol FXPageControlDelegate;\n\n\nIB_DESIGNABLE @interface FXPageControl : UIControl\n\n- (void)setUp;\n- (CGSize)sizeForNumberOfPages:(NSInteger)pageCount;\n- (void)updateCurrentPageDisplay;\n\n@property (nonatomic, weak) IBOutlet id <FXPageControlDelegate> delegate;\n\n@property (nonatomic, assign) IBInspectable NSInteger currentPage;\n@property (nonatomic, assign) IBInspectable NSInteger numberOfPages;\n@property (nonatomic, assign) IBInspectable BOOL defersCurrentPageDisplay;\n@property (nonatomic, assign) IBInspectable BOOL hidesForSinglePage;\n@property (nonatomic, assign, getter = isWrapEnabled) IBInspectable BOOL wrapEnabled;\n@property (nonatomic, assign, getter = isVertical) IBInspectable BOOL vertical;\n\n@property (nonatomic, assign) IBInspectable CGPathRef dotShape;\n@property (nonatomic, assign) IBInspectable CGFloat dotSize;\n@property (nonatomic, assign) IBInspectable CGFloat dotShadowBlur;\n@property (nonatomic, assign) IBInspectable CGSize dotShadowOffset;\n@property (nonatomic, assign) IBInspectable CGFloat dotBorderWidth;\n@property (nonatomic, strong, nullable) IBInspectable UIImage *dotImage;\n@property (nonatomic, strong, nullable) IBInspectable UIColor *dotColor;\n@property (nonatomic, strong, nullable) IBInspectable UIColor *dotShadowColor;\n@property (nonatomic, strong, nullable) IBInspectable UIColor *dotBorderColor;\n\n@property (nonatomic, assign) IBInspectable CGPathRef selectedDotShape;\n@property (nonatomic, assign) IBInspectable CGFloat selectedDotSize;\n@property (nonatomic, assign) IBInspectable CGFloat selectedDotShadowBlur;\n@property (nonatomic, assign) IBInspectable CGSize selectedDotShadowOffset;\n@property (nonatomic, assign) IBInspectable CGFloat selectedDotBorderWidth;\n@property (nonatomic, strong, nullable) IBInspectable UIImage *selectedDotImage;\n@property (nonatomic, strong, nullable) IBInspectable UIColor *selectedDotColor;\n@property (nonatomic, strong, nullable) IBInspectable UIColor *selectedDotShadowColor;\n@property (nonatomic, strong, nullable) IBInspectable UIColor *selectedDotBorderColor;\n\n@property (nonatomic, assign) IBInspectable CGFloat dotSpacing;\n\n@end\n\n\n@protocol FXPageControlDelegate <NSObject>\n@optional\n\n- (nullable UIImage *)pageControl:(FXPageControl *)pageControl imageForDotAtIndex:(NSInteger)index;\n- (CGPathRef)pageControl:(FXPageControl *)pageControl shapeForDotAtIndex:(NSInteger)index;\n- (UIColor *)pageControl:(FXPageControl *)pageControl colorForDotAtIndex:(NSInteger)index;\n\n- (nullable UIImage *)pageControl:(FXPageControl *)pageControl selectedImageForDotAtIndex:(NSInteger)index;\n- (CGPathRef)pageControl:(FXPageControl *)pageControl selectedShapeForDotAtIndex:(NSInteger)index;\n- (UIColor *)pageControl:(FXPageControl *)pageControl selectedColorForDotAtIndex:(NSInteger)index;\n\n@end\n\n\nNS_ASSUME_NONNULL_END\n\n\n#pragma clang diagnostic pop\n"
  },
  {
    "path": "ObjC/FXPageControl.m",
    "content": "//\n//  FXPageControl.m\n//\n//  Version 1.6\n//\n//  Created by Nick Lockwood on 07/01/2010.\n//  Copyright 2010 Charcoal Design\n//\n//  Distributed under the permissive zlib License\n//  Get the latest version of FXPageControl from here:\n//\n//  https://github.com/nicklockwood/FXPageControl\n//\n//  This software is provided 'as-is', without any express or implied\n//  warranty.  In no event will the authors be held liable for any damages\n//  arising from the use of this software.\n//\n//  Permission is granted to anyone to use this software for any purpose,\n//  including commercial applications, and to alter it and redistribute it\n//  freely, subject to the following restrictions:\n//\n//  1. The origin of this software must not be misrepresented; you must not\n//  claim that you wrote the original software. If you use this software\n//  in a product, an acknowledgment in the product documentation would be\n//  appreciated but is not required.\n//\n//  2. Altered source versions must be plainly marked as such, and must not be\n//  misrepresented as being the original software.\n//\n//  3. This notice may not be removed or altered from any source distribution.\n//\n\n#import \"FXPageControl.h\"\n\n\n#pragma clang diagnostic ignored \"-Wgnu\"\n#pragma clang diagnostic ignored \"-Wfloat-equal\"\n#pragma clang diagnostic ignored \"-Wfloat-conversion\"\n#pragma clang diagnostic ignored \"-Warc-repeated-use-of-weak\"\n#pragma clang diagnostic ignored \"-Wdirect-ivar-access\"\n\n\n#import <Availability.h>\n#if !__has_feature(objc_arc)\n#error This class requires automatic reference counting\n#endif\n\n\nconst CGPathRef FXPageControlDotShapeCircle = (const CGPathRef)1;\nconst CGPathRef FXPageControlDotShapeSquare = (const CGPathRef)2;\nconst CGPathRef FXPageControlDotShapeTriangle = (const CGPathRef)3;\n#define LAST_SHAPE FXPageControlDotShapeTriangle\n\n\n@implementation FXPageControl\n\n- (void)setUp\n{\n    //needs redrawing if bounds change\n    self.contentMode = UIViewContentModeRedraw;\n\n    //set defaults\n    _dotSpacing = 10.0;\n    _dotSize = 6.0;\n    _dotShadowOffset = CGSizeMake(0, 1);\n    _selectedDotShadowOffset = CGSizeMake(0, 1);\n}\n\n- (instancetype)initWithFrame:(CGRect)frame\n{\n    if ((self = [super initWithFrame:frame]))\n    {\n        [self setUp];\n    }\n    return self;\n}\n\n- (instancetype)initWithCoder:(NSCoder *)aDecoder\n{\n    if ((self = [super initWithCoder:aDecoder]))\n    {\n        [self setUp];\n    }\n    return self;\n}\n\n- (void)dealloc\n{\n    if (_dotShape > LAST_SHAPE) CGPathRelease(_dotShape);\n    if (_selectedDotShape > LAST_SHAPE) CGPathRelease(_selectedDotShape);\n}\n\n- (CGSize)sizeForNumberOfPages:(__unused NSInteger)pageCount\n{\n    CGFloat width = _dotSize + (_dotSize + _dotSpacing) * (_numberOfPages - 1);\n    return _vertical? CGSizeMake(_dotSize, width): CGSizeMake(width, _dotSize);\n}\n\n- (void)updateCurrentPageDisplay\n{\n    [self setNeedsDisplay];\n}\n\n- (void)drawRect:(CGRect)rect\n{\n    if (_numberOfPages > 1 || !_hidesForSinglePage)\n    {\n        CGContextRef context = UIGraphicsGetCurrentContext();\n        CGContextClearRect(context, rect);\n        CGSize size = [self sizeForNumberOfPages:_numberOfPages];\n        if (_vertical)\n        {\n            CGContextTranslateCTM(context, self.frame.size.width / 2, (self.frame.size.height - size.height) / 2);\n        }\n        else\n        {\n            CGContextTranslateCTM(context, (self.frame.size.width - size.width) / 2, self.frame.size.height / 2);\n        }\n\n        for (int i = 0; i < _numberOfPages; i++)\n        {\n            UIImage *dotImage = nil;\n            UIColor *dotColor = nil;\n            CGPathRef dotShape = NULL;\n            CGFloat dotSize = 0;\n            UIColor *dotShadowColor = nil;\n            CGSize dotShadowOffset = CGSizeZero;\n            CGFloat dotShadowBlur = 0;\n            CGFloat dotBorderWidth = 0;\n            UIColor *dotBorderColor = nil;\n\n            if (i == _currentPage)\n            {\n                if ([_delegate respondsToSelector:@selector(pageControl:selectedImageForDotAtIndex:)])\n                {\n                    dotImage = [_delegate pageControl:self selectedImageForDotAtIndex:i];\n                }\n                else\n                {\n                    dotImage = _selectedDotImage;\n                }\n                if ([_delegate respondsToSelector:@selector(pageControl:selectedShapeForDotAtIndex:)])\n                {\n                    dotShape = [_delegate pageControl:self selectedShapeForDotAtIndex:i];\n                }\n                else\n                {\n                    dotShape = _selectedDotShape ?: _dotShape;\n                }\n                if ([_delegate respondsToSelector:@selector(pageControl:selectedColorForDotAtIndex:)])\n                {\n                    dotColor = [_delegate pageControl:self selectedColorForDotAtIndex:i];\n                }\n                else\n                {\n                    dotColor = _selectedDotColor ?: [UIColor blackColor];\n                }\n                dotShadowBlur = _selectedDotShadowBlur;\n                dotShadowColor = _selectedDotShadowColor;\n                dotShadowOffset = _selectedDotShadowOffset;\n                dotBorderWidth = _selectedDotBorderWidth;\n                dotBorderColor = _selectedDotBorderColor;\n                dotSize = _selectedDotSize ?: _dotSize;\n            }\n            else\n            {\n                if ([_delegate respondsToSelector:@selector(pageControl:imageForDotAtIndex:)])\n                {\n                    dotImage = [_delegate pageControl:self imageForDotAtIndex:i];\n                }\n                else\n                {\n                    dotImage = _dotImage;\n                }\n                if ([_delegate respondsToSelector:@selector(pageControl:shapeForDotAtIndex:)])\n                {\n                    dotShape = [_delegate pageControl:self shapeForDotAtIndex:i];\n                }\n                else\n                {\n                    dotShape = _dotShape;\n                }\n                if ([_delegate respondsToSelector:@selector(pageControl:colorForDotAtIndex:)])\n                {\n                    dotColor = [_delegate pageControl:self colorForDotAtIndex:i];\n                }\n                else\n                {\n                    dotColor = _dotColor;\n                }\n                if (!dotColor)\n                {\n                    //fall back to selected dot color with reduced alpha\n                    if ([_delegate respondsToSelector:@selector(pageControl:selectedColorForDotAtIndex:)])\n                    {\n                        dotColor = [_delegate pageControl:self selectedColorForDotAtIndex:i];\n                    }\n                    else\n                    {\n                        dotColor = _selectedDotColor ?: [UIColor blackColor];\n                    }\n                    dotColor = [dotColor colorWithAlphaComponent:0.25];\n                }\n                dotShadowBlur = _dotShadowBlur;\n                dotShadowColor = _dotShadowColor;\n                dotShadowOffset = _dotShadowOffset;\n                dotBorderWidth = _dotBorderWidth;\n                dotBorderColor = _dotBorderColor;\n                dotSize = _dotSize;\n            }\n\n            [dotColor setFill];\n\n            CGContextSaveGState(context);\n            CGFloat offset = (_dotSize + _dotSpacing) * i + _dotSize / 2;\n            CGContextTranslateCTM(context, _vertical? 0: offset, _vertical? offset: 0);\n\n            if (dotShadowColor && ![dotShadowColor isEqual:[UIColor clearColor]])\n            {\n                CGContextSetShadowWithColor(context, dotShadowOffset, dotShadowBlur, dotShadowColor.CGColor);\n            }\n            if (dotImage)\n            {\n                [dotImage drawInRect:CGRectMake(-dotImage.size.width / 2, -dotImage.size.height / 2, dotImage.size.width, dotImage.size.height)];\n            }\n            else\n            {\n                [dotBorderColor setStroke];\n                CGContextSetLineWidth(context, dotBorderWidth);\n                if (!dotShape || dotShape == FXPageControlDotShapeCircle)\n                {\n                    CGContextAddEllipseInRect(context, CGRectMake(-dotSize / 2, -dotSize / 2, dotSize, dotSize));\n                }\n                else if (dotShape == FXPageControlDotShapeSquare)\n                {\n                    CGContextAddRect(context, CGRectMake(-dotSize / 2, -dotSize / 2, dotSize, dotSize));\n                }\n                else if (dotShape == FXPageControlDotShapeTriangle)\n                {\n                    CGContextMoveToPoint(context, 0, -dotSize / 2);\n                    CGContextAddLineToPoint(context, dotSize / 2, dotSize / 2);\n                    CGContextAddLineToPoint(context, -dotSize / 2, dotSize / 2);\n                    CGContextAddLineToPoint(context, 0, -dotSize / 2);\n                }\n                else\n                {\n                    CGContextAddPath(context, dotShape);\n                }\n\n                if (dotBorderWidth == 0)\n                CGContextDrawPath(context, kCGPathFill);\n                else\n                CGContextDrawPath(context, kCGPathFillStroke);\n            }\n            CGContextRestoreGState(context);\n        }\n    }\n}\n\n- (NSInteger)clampedPageValue:(NSInteger)page\n{\n    if (_wrapEnabled)\n    {\n        return _numberOfPages? (page + _numberOfPages) % _numberOfPages: 0;\n    }\n    else\n    {\n        return MIN(MAX(0, page), _numberOfPages - 1);\n    }\n}\n\n- (void)setDotImage:(UIImage *)dotImage\n{\n    if (_dotImage != dotImage)\n    {\n        _dotImage = dotImage;\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setDotShape:(CGPathRef)dotShape\n{\n    if (_dotShape != dotShape)\n    {\n        if (_dotShape > LAST_SHAPE) CGPathRelease(_dotShape);\n        _dotShape = dotShape;\n        if (_dotShape > LAST_SHAPE) CGPathRetain(_dotShape);\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setDotSize:(CGFloat)dotSize\n{\n    if (ABS(_dotSize - dotSize) > 0.001)\n    {\n        _dotSize = dotSize;\n        [self setNeedsDisplay];\n        [self invalidateIntrinsicContentSize];\n    }\n}\n\n- (void)setDotColor:(UIColor *)dotColor\n{\n    if (_dotColor != dotColor)\n    {\n        _dotColor = dotColor;\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setDotShadowColor:(UIColor *)dotColor\n{\n    if (_dotShadowColor != dotColor)\n    {\n        _dotShadowColor = dotColor;\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setDotShadowBlur:(CGFloat)dotShadowBlur\n{\n    if (ABS(_dotShadowBlur - dotShadowBlur) > 0.001)\n    {\n        _dotShadowBlur = dotShadowBlur;\n        [self setNeedsDisplay];\n        [self invalidateIntrinsicContentSize];\n    }\n}\n\n- (void)setDotShadowOffset:(CGSize)dotShadowOffset\n{\n    if (!CGSizeEqualToSize(_dotShadowOffset, dotShadowOffset))\n    {\n        _dotShadowOffset = dotShadowOffset;\n        [self setNeedsDisplay];\n        [self invalidateIntrinsicContentSize];\n    }\n}\n\n- (void)setDotBorderWidth:(CGFloat)dotBorderWidth\n{\n    if (ABS(_dotBorderWidth - dotBorderWidth) > 0.001)\n    {\n        _dotBorderWidth = dotBorderWidth;\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setDotBorderColor:(UIColor *)dotBorderColor\n{\n    if (_dotBorderColor != dotBorderColor)\n    {\n        _dotBorderColor = dotBorderColor;\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setSelectedDotImage:(UIImage *)dotImage\n{\n    if (_selectedDotImage != dotImage)\n    {\n        _selectedDotImage = dotImage;\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setSelectedDotColor:(UIColor *)dotColor\n{\n    if (_selectedDotColor != dotColor)\n    {\n        _selectedDotColor = dotColor;\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setSelectedDotShape:(CGPathRef)dotShape\n{\n    if (_selectedDotShape != dotShape)\n    {\n        if (_selectedDotShape > LAST_SHAPE) CGPathRelease(_selectedDotShape);\n        _selectedDotShape = dotShape;\n        if (_selectedDotShape > LAST_SHAPE) CGPathRetain(_selectedDotShape);\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setSelectedDotSize:(CGFloat)dotSize\n{\n    if (ABS(_selectedDotSize - dotSize) > 0.001)\n    {\n        _selectedDotSize = dotSize;\n        [self setNeedsDisplay];\n        [self invalidateIntrinsicContentSize];\n    }\n}\n\n- (void)setSelectedDotShadowColor:(UIColor *)dotColor\n{\n    if (_selectedDotShadowColor != dotColor)\n    {\n        _selectedDotShadowColor = dotColor;\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setSelectedDotShadowBlur:(CGFloat)dotShadowBlur\n{\n    if (ABS(_selectedDotShadowBlur - dotShadowBlur) > 0.001)\n    {\n        _selectedDotShadowBlur = dotShadowBlur;\n        [self setNeedsDisplay];\n        [self invalidateIntrinsicContentSize];\n    }\n}\n\n- (void)setSelectedDotShadowOffset:(CGSize)dotShadowOffset\n{\n    if (!CGSizeEqualToSize(_selectedDotShadowOffset, dotShadowOffset))\n    {\n        _selectedDotShadowOffset = dotShadowOffset;\n        [self setNeedsDisplay];\n        [self invalidateIntrinsicContentSize];\n    }\n}\n\n- (void)setSelectedDotBorderWidth:(CGFloat)selectedDotBorderWidth\n{\n    if (ABS(_selectedDotBorderWidth - selectedDotBorderWidth) > 0.001)\n    {\n        _selectedDotBorderWidth = selectedDotBorderWidth;\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setSelectedDotBorderColor:(UIColor *)dotColor\n{\n    if (_selectedDotBorderColor != dotColor)\n    {\n        _selectedDotBorderColor = dotColor;\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setDotSpacing:(CGFloat)dotSpacing\n{\n    if (ABS(_dotSpacing - dotSpacing) > 0.001)\n    {\n        _dotSpacing = dotSpacing;\n        [self setNeedsDisplay];\n        [self invalidateIntrinsicContentSize];\n    }\n}\n\n- (void)setDelegate:(id<FXPageControlDelegate>)delegate\n{\n    if (_delegate != delegate)\n    {\n        _delegate = delegate;\n        [self setNeedsDisplay];\n    }\n}\n\n- (void)setCurrentPage:(NSInteger)page\n{\n    _currentPage = [self clampedPageValue:page];\n    [self setNeedsDisplay];\n}\n\n- (void)setNumberOfPages:(NSInteger)pages\n{\n    if (_numberOfPages != pages)\n    {\n        _numberOfPages = pages;\n        if (_currentPage >= pages)\n        {\n            _currentPage = pages - 1;\n        }\n        [self setNeedsDisplay];\n        [self invalidateIntrinsicContentSize];\n    }\n}\n\n- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event\n{\n    CGPoint point = [touch locationInView:self];\n    BOOL forward = _vertical? (point.y > self.frame.size.height / 2): (point.x > self.frame.size.width / 2);\n    _currentPage = [self clampedPageValue:_currentPage + (forward? 1: -1)];\n    if (!_defersCurrentPageDisplay)\n    {\n        [self setNeedsDisplay];\n    }\n    [self sendActionsForControlEvents:UIControlEventValueChanged];\n    [super endTrackingWithTouch:touch withEvent:event];\n}\n\n- (CGSize)sizeThatFits:(__unused CGSize)size\n{\n    CGSize dotSize = [self sizeForNumberOfPages:_numberOfPages];\n    if (_selectedDotSize)\n    {\n        CGFloat width = (_selectedDotSize - _dotSize);\n        CGFloat height = MAX(36, MAX(_dotSize, _selectedDotSize));\n        dotSize.width = _vertical? height: dotSize.width + width;\n        dotSize.height = _vertical? dotSize.height + width: height;\n\n    }\n    if ((_dotShadowColor && ![_dotShadowColor isEqual:[UIColor clearColor]]) ||\n        (_selectedDotShadowColor && ![_selectedDotShadowColor isEqual:[UIColor clearColor]]))\n    {\n        dotSize.width += MAX(_dotShadowOffset.width, _selectedDotShadowOffset.width) * 2;\n        dotSize.height += MAX(_dotShadowOffset.height, _selectedDotShadowOffset.height) * 2;\n        dotSize.width += MAX(_dotShadowBlur, _selectedDotShadowBlur) * 2;\n        dotSize.height += MAX(_dotShadowBlur, _selectedDotShadowBlur) * 2;\n    }\n    return dotSize;\n}\n\n- (CGSize)intrinsicContentSize\n{\n    return [self sizeThatFits:self.bounds.size];\n}\n\n#pragma mark - Accessibility\n\n- (UIAccessibilityTraits)accessibilityTraits\n{\n    return UIAccessibilityTraitAdjustable;\n}\n\n- (void)accessibilityIncrement\n{\n    self.currentPage = self.currentPage + 1;\n    [self sendActionsForControlEvents:UIControlEventValueChanged];\n}\n\n- (void)accessibilityDecrement\n{\n    self.currentPage = self.currentPage - 1;\n    [self sendActionsForControlEvents:UIControlEventValueChanged];\n}\n\n@end\n"
  },
  {
    "path": "Package.resolved",
    "content": "{\n  \"object\": {\n    \"pins\": [\n      {\n        \"package\": \"FXPageControl\",\n        \"repositoryURL\": \"https://github.com/nicklockwood/FXPageControl.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"a94633402ba98c52f86c2a70e61ff086dec9de78\",\n          \"version\": \"1.6.0\"\n        }\n      }\n    ]\n  },\n  \"version\": 1\n}\n"
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version: 5.4\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"XLPagerTabStrip\",\n    platforms: [\n            .iOS(.v11)\n        ],\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"XLPagerTabStrip\",\n            targets: [\"XLPagerTabStrip\"]),\n    ],\n    dependencies: [\n        .package(\n                    url: \"https://github.com/nicklockwood/FXPageControl.git\",\n                    .upToNextMajor(from: \"1.6.0\")\n                )\n    ],\n    targets: [\n        .target(\n            name: \"XLPagerTabStrip\",\n            dependencies: [\"FXPageControl\"]),\n    ],\n    swiftLanguageVersions: [\n           .v5\n       ]\n)\n"
  },
  {
    "path": "Playground.playground/Contents.swift",
    "content": "//\n//  Playground.playground\n//  XLPagerTabStrip\n//\n//  Copyright © 2016 Xmartlabs SRL. All rights reserved.\n//\n\n//: Playground - noun: a place where people can play\n\nimport UIKit\nimport XLPagerTabStrip\n\nvar helloWorld = \"Hello, playground\"\n"
  },
  {
    "path": "Playground.playground/contents.xcplayground",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<playground version='5.0' target-platform='ios'>\n    <timeline fileName='timeline.xctimeline'/>\n</playground>"
  },
  {
    "path": "README.md",
    "content": "![XLPagerTabStripView](https://raw.githubusercontent.com/xmartlabs/XLPagerTabStrip/master/XLPagerTabTrip.png)\n\n<p align=\"left\">\n<a href=\"https://travis-ci.org/xmartlabs/XLPagerTabStrip\"><img src=\"https://travis-ci.org/xmartlabs/XLPagerTabStrip.svg?branch=master\" alt=\"Build status\" /></a>\n<img src=\"https://img.shields.io/badge/platform-iOS-blue.svg?style=flat\" alt=\"Platform iOS\" />\n<a href=\"https://developer.apple.com/swift\"><img src=\"https://img.shields.io/badge/swift5-compatible-4BC51D.svg?style=flat\" alt=\"Swift 5 compatible\" /></a>\n<a href=\"https://github.com/Carthage/Carthage\"><img src=\"https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat\" alt=\"Carthage compatible\" /></a>\n<a href=\"https://cocoapods.org/pods/XLPagerTabStrip\"><img src=\"https://img.shields.io/cocoapods/v/XLPagerTabStrip.svg\" alt=\"CocoaPods compatible\" /></a>\n<a href=\"https://raw.githubusercontent.com/xmartlabs/XLPagerTabStrip/master/LICENSE\"><img src=\"http://img.shields.io/badge/license-MIT-blue.svg?style=flat\" alt=\"License: MIT\" />\n</a>\n<!-- <a href=\"https://codebeat.co/projects/github-com-xmartlabs-xlpagertabstrip\"><img alt=\"codebeat badge\" src=\"https://codebeat.co/badges/f32c9ad3-0aa1-4b40-a632-9421211bd39e\" /></a> -->\n\n</p>\n\nMade with ❤️ by [XMARTLABS](http://xmartlabs.com).\n\nAndroid [PagerTabStrip](http://developer.android.com/reference/android/support/v4/view/PagerTabStrip.html) for iOS!\n\n👉 Looking for a SwiftUI version? Check out [PagerTabStripView](https://github.com/xmartlabs/PagerTabStripView), it's fully written in pure SwiftUI. 👈\n\n**XLPagerTabStrip** is a *Container View Controller* that allows us to switch easily among a collection of view controllers. Pan gesture can be used to move on to next or previous view controller. It shows a interactive indicator of the current, previous, next child view controllers.\n\n<table>\n  <tr>\n    <th><img src=\"Example/instagram.gif\" width=\"250\"/></th>\n    <th><img src=\"Example/spotify.gif\" width=\"250\"/></th>\n    <th><img src=\"Example/youtube.gif\" width=\"250\"/></th>\n    <th><img src=\"Example/pagerTabStripTypes.gif\" width=\"250\"/></th>\n  </tr>\n</table>\n\n## Getting involved\n\n* If you **want to contribute** please feel free to **submit pull requests**.\n* If you **have a feature request** please **open an issue**.\n* If you **found a bug** or **need help** please **check older issues, [FAQ](#faq) and threads on [StackOverflow](http://stackoverflow.com/questions/tagged/XLPagerTabStrip) (Tag 'XLPagerTabStrip') before submitting an issue**.\n\n**Before contribute check the [CONTRIBUTING](CONTRIBUTING.md) file for more info.**\n\nIf you use **XLPagerTabStrip** in your app we would love to hear about it! Drop us a line on [twitter](https://twitter.com/xmartlabs).\n\n## Pager Types\n\nThe library provides 4 different ways to show the view controllers.\n\n### Button Bar\n\nThis is likely the most common pager type. It's used by many well-known apps such as instagram, youtube, skype, and many others.\n\n<img src=\"Example/barButton.gif\" width=\"250\"/>\n\n### Bar\n\nThis mode doesn't show a title neither an image. It only shows a bar that indicates the current view controller.\n\n<img src=\"Example/bar.gif\" width=\"250\"/>\n\n### Twitter\n\nA long time ago, the twitter app made use of this type of pager in the app main screen.\n\n<img src=\"Example/twitter.gif\" width=\"250\"/>\n\n### Segmented\n\nThis mode uses a `UISegmentedControl` to indicate which view controller is being displayed.\n\n<img src=\"Example/segmented.gif\" width=\"250\"/>\n\n## Usage\n\nBasically, we just need to provide the list of child view controllers to show, and these view controllers should provide the information (title or image) that will be shown in the associated indicator.\n\nLet's see the steps to do this:\n\n##### Choose which type of pager we want to create\n\nFirst, we must choose the type of pager we want to create.  Depending on our choice, we will have to create a view controller that extends from one of the following controllers: `TwitterPagerTabStripViewController`, `ButtonBarPagerTabStripViewController`, `SegmentedPagerTabStripViewController`, `BarPagerTabStripViewController`.\n\n> All these built-in pager controllers extend from the base class `PagerTabStripViewController`.\n> You can also make your custom pager controller by extending directly from `PagerTabStripViewController` in the event that no pager menu type fits your needs.\n\n```swift\nimport XLPagerTabStrip\n\nclass MyPagerTabStripName: ButtonBarPagerTabStripViewController {\n  ..\n}\n```\n\n##### Connect outlets and add layout constraints\n\nWe strongly recommend using IB to set up our page controller views.\n\nDrag a `UIViewController` into the storyboard and set up its class with your pager controller (`MyPagerTabStripName`).\nDrag a `UIScrollView` into your view controller view and connect `PagerTabStripViewController` `containerView` outlet with the scroll view.\n\nDepending on which type of paging view controller you are working with you may have to connect more outlets.\n\nFor `BarPagerTabStripViewController`, we should connect `barView` outlet. barView type is UIView. `ButtonBarPagerTabStripViewController` requires us to connect `buttonBarView` outlet. `buttonBarView` type is `ButtonBarView` which extends from `UICollectionView`. `SegmentedPagerTabStripViewController` has a `segmentedControl` outlet; if the outlet is not connected the library try to set up the navigationItem `titleView` property using a `UISegmentedControl`. `TwitterPagerTabStripViewController` doesn't require us to connect any additional outlet.\n\n> The example project contains a example for each pager controller type and we can look into it to see how views were added and how outlets were connected.\n\n##### Provide the view controllers that will appear embedded into the PagerTabStrip view controller\n\nYou can provide the view controllers by overriding `func viewControllers(for: pagerTabStripController: PagerTabStripViewController) -> [UIViewController]` method.\n\n```swift\noverride public func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {\n  return [MyEmbeddedViewController(), MySecondEmbeddedViewController()]\n}\n```\n\n> The method above is the only method declared in `PagerTabStripDataSource` protocol. We don't need to explicitly conform to it since base pager class already does it.\n\n\n##### Provide information to show in each indicator\n\nEvery UIViewController that will appear within the PagerTabStrip needs to provide either a title or an image.\nIn order to do so they should conform to `IndicatorInfoProvider` by implementing `func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo`\n which provides the information required to show the PagerTabStrip menu (indicator) associated with the view controller.\n\n```swift\nclass MyEmbeddedViewController: UITableViewController, IndicatorInfoProvider {\n\n  func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {\n    return IndicatorInfo(title: \"My Child title\")\n  }\n}\n```\n\n**For a detailed step-by-step guide about how to use the library, please check out this community [blog post](https://medium.com/michaeladeyeri/how-to-implement-android-like-tab-layouts-in-ios-using-swift-3-578516c3aa9).**\n\nThat's it! We're done! 🍻🍻\n\n\n## Customization\n\n##### Pager Behaviour\n\nThe pager indicator can be updated progressive as we swipe or at once in the middle of the transition between the view controllers.\nBy setting up `pagerBehaviour` property we can choose how the indicator should be updated.\n\n```swift\npublic var pagerBehaviour: PagerTabStripBehaviour\n```\n\n```swift\npublic enum PagerTabStripBehaviour {\n    case common(skipIntermediteViewControllers: Bool)\n    case progressive(skipIntermediteViewControllers: Bool, elasticIndicatorLimit: Bool)\n}\n```\n\nDefault Values:\n```swift\n// Twitter Type\nPagerTabStripBehaviour.common(skipIntermediateViewControllers: true)\n// Segmented Type\nPagerTabStripBehaviour.common(skipIntermediateViewControllers: true)\n// Bar Type\nPagerTabStripBehaviour.progressive(skipIntermediateViewControllers: true, elasticIndicatorLimit: true)\n// ButtonBar Type\nPagerTabStripBehaviour.progressive(skipIntermediateViewControllers: true, elasticIndicatorLimit: true)\n```\n\nAs you might have noticed, `common` and `progressive` enumeration cases have `skipIntermediateViewControllers` and `elasticIndicatorLimit` associated values.\n\n`skipIntermediateViewControllers` allows us to skip intermediate view controllers when a tab indicator is tapped.\n\n`elasticIndicatorLimit` allows us to tension the indicator when we reach a limit, I mean when we try to move forward from last indicator or move back from first indicator.\n\n##### PagerTabStripDelegate & PagerTabStripIsProgressiveDelegate\n\nNormally we don't need to implement these protocols because each pager type already conforms to it in order to properly update its indicator. However, there may be some scenarios when overriding a method may come in handy.\n\n```swift\npublic protocol PagerTabStripDelegate: class {\n\n    func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int)\n}\n\npublic protocol PagerTabStripIsProgressiveDelegate : PagerTabStripDelegate {\n\n    func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool)\n}\n```\n\n> Again, the method invoked by the library depends on the `pagerBehaviour` value.\n\n\n\n\n### ButtonBar Customization\n\n```swift\n\nsettings.style.buttonBarBackgroundColor: UIColor?\n// buttonBar minimumInteritemSpacing value, note that button bar extends from UICollectionView\nsettings.style.buttonBarMinimumInteritemSpacing: CGFloat?\n// buttonBar minimumLineSpacing value\nsettings.style.buttonBarMinimumLineSpacing: CGFloat?\n// buttonBar flow layout left content inset value\nsettings.style.buttonBarLeftContentInset: CGFloat?\n// buttonBar flow layout right content inset value\nsettings.style.buttonBarRightContentInset: CGFloat?\n\n// selected bar view is created programmatically so it's important to set up the following 2 properties properly\nsettings.style.selectedBarBackgroundColor = UIColor.black\nsettings.style.selectedBarHeight: CGFloat = 5\n\n// each buttonBar item is a UICollectionView cell of type ButtonBarViewCell\nsettings.style.buttonBarItemBackgroundColor: UIColor?\nsettings.style.buttonBarItemFont = UIFont.systemFont(ofSize: 18)\n// helps to determine the cell width, it represent the space before and after the title label\nsettings.style.buttonBarItemLeftRightMargin: CGFloat = 8\nsettings.style.buttonBarItemTitleColor: UIColor?\n// in case the barView items do not fill the screen width this property stretch the cells to fill the screen\nsettings.style.buttonBarItemsShouldFillAvailableWidth = true\n// only used if button bar is created programmatically and not using storyboards or nib files as recommended.\npublic var buttonBarHeight: CGFloat?\n```\n\n**Important:** Settings should be called before `viewDidLoad` is called.\n```swift\noverride func viewDidLoad() {\n   self.settings.style.selectedBarHeight = 2\n   self.settings.style.selectedBarBackgroundColor = UIColor.white\n\n   super.viewDidLoad()\n}\n```\n\n#####  Update cells when selected indicator changes\n\nWe may need to update the indicator cell when the displayed view controller changes. The following function properties help to accomplish that. Depending on our pager `pagerBehaviour` value we will have to set up `changeCurrentIndex` or `changeCurrentIndexProgressive`.\n\n```swift\npublic var changeCurrentIndex: ((oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, animated: Bool) -> Void)?\npublic var changeCurrentIndexProgressive: ((oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void)?\n```\n\nLet's see an example:\n\n```swift\nchangeCurrentIndexProgressive = { (oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in\n    guard changeCurrentIndex == true else { return }\n\n    oldCell?.label.textColor = UIColor(white: 1, alpha: 0.6)\n    newCell?.label.textColor = UIColor.white\n\n    if animated {\n        UIView.animate(withDuration: 0.1, animations: { () -> Void in\n            newCell?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)\n            oldCell?.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)\n        })\n    }\n    else {\n        newCell?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)\n        oldCell?.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)\n    }\n}\n```\n\n### Bar Type Customization\n\n```swift\nsettings.style.barBackgroundColor: UIColor?\nsettings.style.selectedBarBackgroundColor: UIColor?\n// barHeight is only set up when the bar is created programmatically and not using storyboards or xib files as recommended.\nsettings.style.barHeight: CGFloat = 5\n```\n\n### Twitter Type Customization\n\n```swift\nsettings.style.dotColor = UIColor(white: 1, alpha: 0.4)\nsettings.style.selectedDotColor = UIColor.white\nsettings.style.portraitTitleFont = UIFont.systemFont(ofSize: 18)\nsettings.style.landscapeTitleFont = UIFont.systemFont(ofSize: 15)\nsettings.style.titleColor = UIColor.white\n```\n\n### Segmented Type Customization\n\n```swift\nsettings.style.segmentedControlColor: UIColor?\n```\n\n\n\n## Requirements\n\n* iOS 9.3+\n* Xcode 10.2+\n\n## Examples\n\nFollow these 3 steps to run Example project: Clone XLPagerTabStrip repository, open XLPagerTabStrip workspace and run the *Example* project.\n\n## Installation\n\n### CocoaPods\n\n[CocoaPods](https://cocoapods.org/) is a dependency manager for Cocoa projects.\n\nTo install XLPagerTabStrip, simply add the following line to your Podfile:\n\n```ruby\npod 'XLPagerTabStrip', '~> 9.0'\n```\n\n### Carthage\n\n[Carthage](https://github.com/Carthage/Carthage) is a simple, decentralized dependency manager for Cocoa.\n\nTo install XLPagerTabStrip, simply add the following line to your Cartfile:\n\n```ogdl\ngithub \"xmartlabs/XLPagerTabStrip\" ~> 9.0\n```\n\n### SPM\n\n- File > Swift Packages > Add Package Dependency\n- Add `https://github.com/xmartlabs/XLPagerTabStrip.git`\n- Select \"Up to Next Major\" with \"9.0.0\"\n\n## FAQ\n\n#### How to change the visible child view controller programmatically\n\n`PagerTabStripViewController` provides the following methods to programmatically change the visible child view controller:\n\n```swift\nfunc moveToViewController(at index: Int)\nfunc moveToViewController(at index: Int, animated: Bool)\nfunc moveTo(viewController: UIViewController)\nfunc moveTo(viewController: UIViewController, animated: Bool)\n```\n\n\n#### How to migrate from Swift 2 to Swift 3 <a name=\"migrate\"></a>\n\nCheck out [our migration guide](https://github.com/xmartlabs/XLPagerTabStrip/blob/master/Migration.md)\n\n## Author\n\n* [Martin Barreto](https://github.com/mtnBarreto) ([@mtnBarreto](https://twitter.com/mtnBarreto))\n\n## Change Log\n\nThis can be found in the [CHANGELOG.md](CHANGELOG.md) file.\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/BarPagerTabStripViewController.swift",
    "content": "//  BarPagerTabStripViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n\npublic struct BarPagerTabStripSettings {\n\n    public struct Style {\n        public var barBackgroundColor: UIColor?\n        public var selectedBarBackgroundColor: UIColor?\n        public var barHeight: CGFloat = 5 // barHeight is ony set up when the bar is created programatically and not using storyboards or xib files.\n    }\n\n    public var style = Style()\n}\n\nopen class BarPagerTabStripViewController: PagerTabStripViewController, PagerTabStripDataSource, PagerTabStripIsProgressiveDelegate {\n\n    public var settings = BarPagerTabStripSettings()\n\n    @IBOutlet weak public var barView: BarView!\n\n    required public init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        delegate = self\n        datasource = self\n    }\n\n    public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {\n        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)\n        delegate = self\n        datasource = self\n    }\n\n    open override func viewDidLoad() {\n        super.viewDidLoad()\n        barView = barView ?? {\n            let barView = BarView(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: settings.style.barHeight))\n            barView.autoresizingMask = .flexibleWidth\n            barView.backgroundColor = .black\n            barView.selectedBar.backgroundColor = .white\n            return barView\n        }()\n\n        barView.backgroundColor = settings.style.barBackgroundColor ?? barView.backgroundColor\n        barView.selectedBar.backgroundColor = settings.style.selectedBarBackgroundColor ?? barView.selectedBar.backgroundColor\n    }\n\n    open override func viewWillAppear(_ animated: Bool) {\n        super.viewWillAppear(animated)\n        if barView.superview == nil {\n            view.addSubview(barView)\n        }\n        barView.optionsCount = viewControllers.count\n        barView.moveTo(index: currentIndex, animated: false)\n    }\n\n    open override func reloadPagerTabStripView() {\n        super.reloadPagerTabStripView()\n        barView.optionsCount = viewControllers.count\n        if isViewLoaded {\n            barView.moveTo(index: currentIndex, animated: false)\n        }\n    }\n\n    // MARK: - PagerTabStripDelegate\n\n    open func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool) {\n\n        barView.move(fromIndex: fromIndex, toIndex: toIndex, progressPercentage: progressPercentage)\n    }\n\n    open func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int) {\n        barView.moveTo(index: toIndex, animated: true)\n    }\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/BarView.swift",
    "content": "//  BarView.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n\nopen class BarView: UIView {\n\n    open lazy var selectedBar: UIView = { [unowned self] in\n        let selectedBar = UIView(frame: CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height))\n        return selectedBar\n    }()\n\n    var optionsCount = 1 {\n        willSet(newOptionsCount) {\n            if newOptionsCount <= selectedIndex {\n                selectedIndex = optionsCount - 1\n            }\n        }\n    }\n    var selectedIndex = 0\n\n    required public init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        addSubview(selectedBar)\n    }\n\n    override init(frame: CGRect) {\n        super.init(frame: frame)\n        addSubview(selectedBar)\n    }\n\n    // MARK: - Helpers\n\n    private func updateSelectedBarPosition(with animation: Bool) {\n        var frame = selectedBar.frame\n        frame.size.width = self.frame.size.width / CGFloat(optionsCount)\n        frame.origin.x = frame.size.width * CGFloat(selectedIndex)\n        if animation {\n            UIView.animate(withDuration: 0.3, animations: { [weak self] in\n                self?.selectedBar.frame = frame\n            })\n        } else {\n            selectedBar.frame = frame\n        }\n    }\n\n    open func moveTo(index: Int, animated: Bool) {\n        selectedIndex = index\n        updateSelectedBarPosition(with: animated)\n    }\n\n    open func move(fromIndex: Int, toIndex: Int, progressPercentage: CGFloat) {\n        selectedIndex = (progressPercentage > 0.5) ? toIndex : fromIndex\n\n        var newFrame = selectedBar.frame\n        newFrame.size.width = frame.size.width / CGFloat(optionsCount)\n        var fromFrame = newFrame\n        fromFrame.origin.x = newFrame.size.width * CGFloat(fromIndex)\n        var toFrame = newFrame\n        toFrame.origin.x = toFrame.size.width * CGFloat(toIndex)\n        var targetFrame = fromFrame\n        targetFrame.origin.x += (toFrame.origin.x - targetFrame.origin.x) * CGFloat(progressPercentage)\n        selectedBar.frame = targetFrame\n    }\n\n    open override func layoutSubviews() {\n        super.layoutSubviews()\n        updateSelectedBarPosition(with: false)\n    }\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/BaseButtonBarPagerTabStripViewController.swift",
    "content": "//  BaseButtonBarPagerTabStripViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n\nopen class BaseButtonBarPagerTabStripViewController<ButtonBarCellType: UICollectionViewCell>: PagerTabStripViewController, PagerTabStripDataSource, PagerTabStripIsProgressiveDelegate, UICollectionViewDelegate, UICollectionViewDataSource {\n\n    public var settings = ButtonBarPagerTabStripSettings()\n    public var buttonBarItemSpec: ButtonBarItemSpec<ButtonBarCellType>!\n    public var changeCurrentIndex: ((_ oldCell: ButtonBarCellType?, _ newCell: ButtonBarCellType?, _ animated: Bool) -> Void)?\n    public var changeCurrentIndexProgressive: ((_ oldCell: ButtonBarCellType?, _ newCell: ButtonBarCellType?, _ progressPercentage: CGFloat, _ changeCurrentIndex: Bool, _ animated: Bool) -> Void)?\n\n    @IBOutlet public weak var buttonBarView: ButtonBarView!\n\n    lazy private var cachedCellWidths: [CGFloat]? = { [unowned self] in\n        return self.calculateWidths()\n        }()\n\n    public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {\n        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)\n        delegate = self\n        datasource = self\n    }\n\n    required public init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        delegate = self\n        datasource = self\n    }\n\n    open override func viewDidLoad() {\n        super.viewDidLoad()\n        let buttonBarViewAux = buttonBarView ?? {\n            let flowLayout = UICollectionViewFlowLayout()\n            flowLayout.scrollDirection = .horizontal\n            flowLayout.sectionInset = UIEdgeInsets(top: 0, left: settings.style.buttonBarLeftContentInset ?? 35, bottom: 0, right: settings.style.buttonBarRightContentInset ?? 35)\n            let buttonBarHeight = settings.style.buttonBarHeight ?? 44\n            let buttonBar = ButtonBarView(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: buttonBarHeight), collectionViewLayout: flowLayout)\n            buttonBar.backgroundColor = .orange\n            buttonBar.selectedBar.backgroundColor = .black\n            buttonBar.autoresizingMask = .flexibleWidth\n            var newContainerViewFrame = containerView.frame\n            newContainerViewFrame.origin.y = buttonBarHeight\n            newContainerViewFrame.size.height = containerView.frame.size.height - (buttonBarHeight - containerView.frame.origin.y)\n            containerView.frame = newContainerViewFrame\n            return buttonBar\n        }()\n        buttonBarView = buttonBarViewAux\n\n        if buttonBarView.superview == nil {\n            view.addSubview(buttonBarView)\n        }\n        if buttonBarView.delegate == nil {\n            buttonBarView.delegate = self\n        }\n        if buttonBarView.dataSource == nil {\n            buttonBarView.dataSource = self\n        }\n        buttonBarView.scrollsToTop = false\n        let flowLayout = buttonBarView.collectionViewLayout as! UICollectionViewFlowLayout // swiftlint:disable:this force_cast\n        flowLayout.scrollDirection = .horizontal\n        flowLayout.minimumInteritemSpacing = settings.style.buttonBarMinimumInteritemSpacing ?? flowLayout.minimumInteritemSpacing\n        flowLayout.minimumLineSpacing = settings.style.buttonBarMinimumLineSpacing ?? flowLayout.minimumLineSpacing\n        let sectionInset = flowLayout.sectionInset\n        flowLayout.sectionInset = UIEdgeInsets(top: sectionInset.top, left: settings.style.buttonBarLeftContentInset ?? sectionInset.left, bottom: sectionInset.bottom, right: settings.style.buttonBarRightContentInset ?? sectionInset.right)\n        buttonBarView.showsHorizontalScrollIndicator = false\n        buttonBarView.backgroundColor = settings.style.buttonBarBackgroundColor ?? buttonBarView.backgroundColor\n        buttonBarView.selectedBar.backgroundColor = settings.style.selectedBarBackgroundColor\n        buttonBarView.selectedBarVerticalAlignment = settings.style.selectedBarVerticalAlignment\n        buttonBarView.selectedBarHeight = settings.style.selectedBarHeight\n        // register button bar item cell\n        switch buttonBarItemSpec! {\n        case .nibFile(let nibName, let bundle, _):\n            buttonBarView.register(UINib(nibName: nibName, bundle: bundle), forCellWithReuseIdentifier:\"Cell\")\n        case .cellClass:\n            buttonBarView.register(ButtonBarCellType.self, forCellWithReuseIdentifier:\"Cell\")\n        }\n        //-\n    }\n\n    open override func viewWillAppear(_ animated: Bool) {\n        super.viewWillAppear(animated)\n        buttonBarView.layoutIfNeeded()\n        isViewAppearing = true\n    }\n\n    open override func viewDidAppear(_ animated: Bool) {\n        super.viewDidAppear(animated)\n        isViewAppearing = false\n    }\n\n    open override func viewDidLayoutSubviews() {\n        super.viewDidLayoutSubviews()\n\n        guard isViewAppearing || isViewRotating else { return }\n\n        // Force the UICollectionViewFlowLayout to get laid out again with the new size if\n        // a) The view is appearing.  This ensures that\n        //    collectionView:layout:sizeForItemAtIndexPath: is called for a second time\n        //    when the view is shown and when the view *frame(s)* are actually set\n        //    (we need the view frame's to have been set to work out the size's and on the\n        //    first call to collectionView:layout:sizeForItemAtIndexPath: the view frame(s)\n        //    aren't set correctly)\n        // b) The view is rotating.  This ensures that\n        //    collectionView:layout:sizeForItemAtIndexPath: is called again and can use the views\n        //    *new* frame so that the buttonBarView cell's actually get resized correctly\n        cachedCellWidths = calculateWidths()\n        buttonBarView.collectionViewLayout.invalidateLayout()\n        // When the view first appears or is rotated we also need to ensure that the barButtonView's\n        // selectedBar is resized and its contentOffset/scroll is set correctly (the selected\n        // tab/cell may end up either skewed or off screen after a rotation otherwise)\n        buttonBarView.moveTo(index: currentIndex, animated: false, swipeDirection: .none, pagerScroll: .scrollOnlyIfOutOfScreen)\n        buttonBarView.selectItem(at: IndexPath(item: currentIndex, section: 0), animated: false, scrollPosition: [])\n    }\n\n    // MARK: - View Rotation\n\n    open override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {\n        super.viewWillTransition(to: size, with: coordinator)\n    }\n\n    // MARK: - Public Methods\n\n    open override func reloadPagerTabStripView() {\n        super.reloadPagerTabStripView()\n        guard isViewLoaded else { return }\n        buttonBarView.reloadData()\n        cachedCellWidths = calculateWidths()\n        buttonBarView.moveTo(index: currentIndex, animated: false, swipeDirection: .none, pagerScroll: .yes)\n    }\n\n    open func calculateStretchedCellWidths(_ minimumCellWidths: [CGFloat], suggestedStretchedCellWidth: CGFloat, previousNumberOfLargeCells: Int) -> CGFloat {\n        var numberOfLargeCells = 0\n        var totalWidthOfLargeCells: CGFloat = 0\n\n        for minimumCellWidthValue in minimumCellWidths where minimumCellWidthValue > suggestedStretchedCellWidth {\n            totalWidthOfLargeCells += minimumCellWidthValue\n            numberOfLargeCells += 1\n        }\n\n        guard numberOfLargeCells > previousNumberOfLargeCells else { return suggestedStretchedCellWidth }\n\n        let flowLayout = buttonBarView.collectionViewLayout as! UICollectionViewFlowLayout // swiftlint:disable:this force_cast\n        let collectionViewAvailiableWidth = buttonBarView.frame.size.width - flowLayout.sectionInset.left - flowLayout.sectionInset.right\n        let numberOfCells = minimumCellWidths.count\n        let cellSpacingTotal = CGFloat(numberOfCells - 1) * flowLayout.minimumLineSpacing\n\n        let numberOfSmallCells = numberOfCells - numberOfLargeCells\n        let newSuggestedStretchedCellWidth = (collectionViewAvailiableWidth - totalWidthOfLargeCells - cellSpacingTotal) / CGFloat(numberOfSmallCells)\n\n        return calculateStretchedCellWidths(minimumCellWidths, suggestedStretchedCellWidth: newSuggestedStretchedCellWidth, previousNumberOfLargeCells: numberOfLargeCells)\n    }\n\n    open func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int) {\n        guard shouldUpdateButtonBarView else { return }\n        buttonBarView.moveTo(index: toIndex, animated: true, swipeDirection: toIndex < fromIndex ? .right : .left, pagerScroll: .yes)\n\n        if let changeCurrentIndex = changeCurrentIndex {\n            let oldCell = buttonBarView.cellForItem(at: IndexPath(item: currentIndex != fromIndex ? fromIndex : toIndex, section: 0)) as? ButtonBarCellType\n            let newCell = buttonBarView.cellForItem(at: IndexPath(item: currentIndex, section: 0)) as? ButtonBarCellType\n            changeCurrentIndex(oldCell, newCell, true)\n        }\n    }\n\n    open func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool) {\n        guard shouldUpdateButtonBarView else { return }\n        buttonBarView.move(fromIndex: fromIndex, toIndex: toIndex, progressPercentage: progressPercentage, pagerScroll: .yes)\n        if let changeCurrentIndexProgressive = changeCurrentIndexProgressive {\n            let oldCell = buttonBarView.cellForItem(at: IndexPath(item: currentIndex != fromIndex ? fromIndex : toIndex, section: 0)) as? ButtonBarCellType\n            let newCell = buttonBarView.cellForItem(at: IndexPath(item: currentIndex, section: 0)) as? ButtonBarCellType\n            changeCurrentIndexProgressive(oldCell, newCell, progressPercentage, indexWasChanged, true)\n        }\n    }\n\n    // MARK: - UICollectionViewDelegateFlowLayut\n\n    @objc open func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {\n        guard let cellWidthValue = cachedCellWidths?[indexPath.row] else {\n            fatalError(\"cachedCellWidths for \\(indexPath.row) must not be nil\")\n        }\n        return CGSize(width: cellWidthValue, height: collectionView.frame.size.height)\n    }\n\n    open func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {\n        guard indexPath.item != currentIndex else { return }\n\n        buttonBarView.moveTo(index: indexPath.item, animated: true, swipeDirection: .none, pagerScroll: .yes)\n        shouldUpdateButtonBarView = false\n\n        let oldCell = buttonBarView.cellForItem(at: IndexPath(item: currentIndex, section: 0)) as? ButtonBarCellType\n        let newCell = buttonBarView.cellForItem(at: IndexPath(item: indexPath.item, section: 0)) as? ButtonBarCellType\n        if pagerBehaviour.isProgressiveIndicator {\n            if let changeCurrentIndexProgressive = changeCurrentIndexProgressive {\n                changeCurrentIndexProgressive(oldCell, newCell, 1, true, true)\n            }\n        } else {\n            if let changeCurrentIndex = changeCurrentIndex {\n                changeCurrentIndex(oldCell, newCell, true)\n            }\n        }\n        moveToViewController(at: indexPath.item)\n    }\n\n    // MARK: - UICollectionViewDataSource\n\n    open func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {\n        return viewControllers.count\n    }\n\n    open func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {\n        guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: \"Cell\", for: indexPath) as? ButtonBarCellType else {\n            fatalError(\"UICollectionViewCell should be or extend from ButtonBarViewCell\")\n        }\n        let childController = viewControllers[indexPath.item] as! IndicatorInfoProvider // swiftlint:disable:this force_cast\n        let indicatorInfo = childController.indicatorInfo(for: self)\n\n        configure(cell: cell, for: indicatorInfo)\n\n        if pagerBehaviour.isProgressiveIndicator {\n            if let changeCurrentIndexProgressive = changeCurrentIndexProgressive {\n                changeCurrentIndexProgressive(currentIndex == indexPath.item ? nil : cell, currentIndex == indexPath.item ? cell : nil, 1, true, false)\n            }\n        } else {\n            if let changeCurrentIndex = changeCurrentIndex {\n                changeCurrentIndex(currentIndex == indexPath.item ? nil : cell, currentIndex == indexPath.item ? cell : nil, false)\n            }\n        }\n\n        return cell\n    }\n\n    // MARK: - UIScrollViewDelegate\n\n    open override func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {\n        super.scrollViewDidEndScrollingAnimation(scrollView)\n\n        guard scrollView == containerView else { return }\n        shouldUpdateButtonBarView = true\n    }\n\n    open func configure(cell: ButtonBarCellType, for indicatorInfo: IndicatorInfo) {\n        fatalError(\"You must override this method to set up ButtonBarView cell accordingly\")\n    }\n\n    private func calculateWidths() -> [CGFloat] {\n        let flowLayout = buttonBarView.collectionViewLayout as! UICollectionViewFlowLayout // swiftlint:disable:this force_cast\n        let numberOfCells = viewControllers.count\n\n        var minimumCellWidths = [CGFloat]()\n        var collectionViewContentWidth: CGFloat = 0\n\n        for viewController in viewControllers {\n            let childController = viewController as! IndicatorInfoProvider // swiftlint:disable:this force_cast\n            let indicatorInfo = childController.indicatorInfo(for: self)\n            switch buttonBarItemSpec! {\n            case .cellClass(let widthCallback):\n                let width = widthCallback(indicatorInfo)\n                minimumCellWidths.append(width)\n                collectionViewContentWidth += width\n            case .nibFile(_, _, let widthCallback):\n                let width = widthCallback(indicatorInfo)\n                minimumCellWidths.append(width)\n                collectionViewContentWidth += width\n            }\n        }\n\n        let cellSpacingTotal = CGFloat(numberOfCells - 1) * flowLayout.minimumLineSpacing\n        collectionViewContentWidth += cellSpacingTotal\n\n        let collectionViewAvailableVisibleWidth = buttonBarView.frame.size.width - flowLayout.sectionInset.left - flowLayout.sectionInset.right\n\n        if !settings.style.buttonBarItemsShouldFillAvailableWidth || collectionViewAvailableVisibleWidth < collectionViewContentWidth {\n            return minimumCellWidths\n        } else {\n            let stretchedCellWidthIfAllEqual = (collectionViewAvailableVisibleWidth - cellSpacingTotal) / CGFloat(numberOfCells)\n            let generalMinimumCellWidth = calculateStretchedCellWidths(minimumCellWidths, suggestedStretchedCellWidth: stretchedCellWidthIfAllEqual, previousNumberOfLargeCells: 0)\n            var stretchedCellWidths = [CGFloat]()\n\n            for minimumCellWidthValue in minimumCellWidths {\n                let cellWidth = (minimumCellWidthValue > generalMinimumCellWidth) ? minimumCellWidthValue : generalMinimumCellWidth\n                stretchedCellWidths.append(cellWidth)\n            }\n\n            return stretchedCellWidths\n        }\n    }\n\n    private var shouldUpdateButtonBarView = true\n}\n\nopen class ExampleBaseButtonBarPagerTabStripViewController: BaseButtonBarPagerTabStripViewController<ButtonBarViewCell> {\n\n    public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {\n        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)\n        initialize()\n    }\n\n    public required init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        initialize()\n    }\n\n    open func initialize() {\n        #if SWIFT_PACKAGE\n        var bundle = Bundle.module\n        #else\n        var bundle = Bundle(for: ButtonBarViewCell.self)\n        #endif\n        \n        if let resourcePath = bundle.path(forResource: \"XLPagerTabStrip\", ofType: \"bundle\") {\n            if let resourcesBundle = Bundle(path: resourcePath) {\n                bundle = resourcesBundle\n            }\n        }\n        \n        buttonBarItemSpec = .nibFile(nibName: \"ButtonCell\", bundle: bundle, width: { [weak self] (childItemInfo) -> CGFloat in\n            let label = UILabel()\n            label.translatesAutoresizingMaskIntoConstraints = false\n            label.font = self?.settings.style.buttonBarItemFont ?? label.font\n            label.text = childItemInfo.title\n            let labelSize = label.intrinsicContentSize\n            return labelSize.width + CGFloat(self?.settings.style.buttonBarItemLeftRightMargin ?? 8 * 2)\n            })\n    }\n\n    open override func configure(cell: ButtonBarViewCell, for indicatorInfo: IndicatorInfo) {\n        cell.label.text = indicatorInfo.title\n        cell.accessibilityLabel = indicatorInfo.accessibilityLabel\n        if let image = indicatorInfo.image {\n            cell.imageView.image = image\n        }\n        if let highlightedImage = indicatorInfo.highlightedImage {\n            cell.imageView.highlightedImage = highlightedImage\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/ButtonBarPagerTabStripViewController.swift",
    "content": "//  ButtonBarPagerTabStripViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n\npublic enum ButtonBarItemSpec<CellType: UICollectionViewCell> {\n\n    case nibFile(nibName: String, bundle: Bundle?, width:((IndicatorInfo)-> CGFloat))\n    case cellClass(width:((IndicatorInfo)-> CGFloat))\n\n    public var weight: ((IndicatorInfo) -> CGFloat) {\n        switch self {\n        case .cellClass(let widthCallback):\n            return widthCallback\n        case .nibFile(_, _, let widthCallback):\n            return widthCallback\n        }\n    }\n}\n\npublic struct ButtonBarPagerTabStripSettings {\n\n    public struct Style {\n        public var buttonBarBackgroundColor: UIColor?\n        public var buttonBarMinimumInteritemSpacing: CGFloat?\n        public var buttonBarMinimumLineSpacing: CGFloat?\n        public var buttonBarLeftContentInset: CGFloat?\n        public var buttonBarRightContentInset: CGFloat?\n\n        public var selectedBarBackgroundColor = UIColor.black\n        public var selectedBarHeight: CGFloat = 5\n        public var selectedBarVerticalAlignment: SelectedBarVerticalAlignment = .bottom\n\n        public var buttonBarItemBackgroundColor: UIColor?\n        public var buttonBarItemFont = UIFont.systemFont(ofSize: 18)\n        public var buttonBarItemLeftRightMargin: CGFloat = 8\n        public var buttonBarItemTitleColor: UIColor?\n        public var buttonBarItemsShouldFillAvailableWidth = true\n        // only used if button bar is created programaticaly and not using storyboards or nib files\n        public var buttonBarHeight: CGFloat?\n    }\n\n    public var style = Style()\n}\n\nopen class ButtonBarPagerTabStripViewController: PagerTabStripViewController, PagerTabStripDataSource, PagerTabStripIsProgressiveDelegate, UICollectionViewDelegate, UICollectionViewDataSource {\n\n    public var settings = ButtonBarPagerTabStripSettings()\n\n    public var buttonBarItemSpec: ButtonBarItemSpec<ButtonBarViewCell>!\n\n    public var changeCurrentIndex: ((_ oldCell: ButtonBarViewCell?, _ newCell: ButtonBarViewCell?, _ animated: Bool) -> Void)?\n    public var changeCurrentIndexProgressive: ((_ oldCell: ButtonBarViewCell?, _ newCell: ButtonBarViewCell?, _ progressPercentage: CGFloat, _ changeCurrentIndex: Bool, _ animated: Bool) -> Void)?\n\n    @IBOutlet public weak var buttonBarView: ButtonBarView!\n\n    lazy private var cachedCellWidths: [CGFloat]? = { [unowned self] in\n        return self.calculateWidths()\n    }()\n\n    override public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {\n        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)\n        delegate = self\n        datasource = self\n    }\n\n    required public init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        delegate = self\n        datasource = self\n    }\n\n    open override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        #if SWIFT_PACKAGE\n        var bundle = Bundle.module\n        #else\n        var bundle = Bundle(for: ButtonBarViewCell.self)\n        #endif\n\n        if let resourcePath = bundle.path(forResource: \"XLPagerTabStrip\", ofType: \"bundle\") {\n            if let resourcesBundle = Bundle(path: resourcePath) {\n                bundle = resourcesBundle\n            }\n        }\n        \n        buttonBarItemSpec = .nibFile(nibName: \"ButtonCell\", bundle: bundle, width: { [weak self] (childItemInfo) -> CGFloat in\n                let label = UILabel()\n                label.translatesAutoresizingMaskIntoConstraints = false\n                label.font = self?.settings.style.buttonBarItemFont\n                label.text = childItemInfo.title\n                let labelSize = label.intrinsicContentSize\n                return labelSize.width + (self?.settings.style.buttonBarItemLeftRightMargin ?? 8) * 2\n        })\n\n        let buttonBarViewAux = buttonBarView ?? {\n                let flowLayout = UICollectionViewFlowLayout()\n                flowLayout.scrollDirection = .horizontal\n                let buttonBarHeight = settings.style.buttonBarHeight ?? 44\n                let buttonBar = ButtonBarView(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: buttonBarHeight), collectionViewLayout: flowLayout)\n                buttonBar.backgroundColor = .orange\n                buttonBar.selectedBar.backgroundColor = .black\n                buttonBar.autoresizingMask = .flexibleWidth\n                var newContainerViewFrame = containerView.frame\n                newContainerViewFrame.origin.y = buttonBarHeight\n                newContainerViewFrame.size.height = containerView.frame.size.height - (buttonBarHeight - containerView.frame.origin.y)\n                containerView.frame = newContainerViewFrame\n                return buttonBar\n            }()\n        buttonBarView = buttonBarViewAux\n\n        if buttonBarView.superview == nil {\n            view.addSubview(buttonBarView)\n        }\n        if buttonBarView.delegate == nil {\n            buttonBarView.delegate = self\n        }\n        if buttonBarView.dataSource == nil {\n            buttonBarView.dataSource = self\n        }\n        buttonBarView.scrollsToTop = false\n        let flowLayout = buttonBarView.collectionViewLayout as! UICollectionViewFlowLayout // swiftlint:disable:this force_cast\n        flowLayout.scrollDirection = .horizontal\n        flowLayout.minimumInteritemSpacing = settings.style.buttonBarMinimumInteritemSpacing ?? flowLayout.minimumInteritemSpacing\n        flowLayout.minimumLineSpacing = settings.style.buttonBarMinimumLineSpacing ?? flowLayout.minimumLineSpacing\n        let sectionInset = flowLayout.sectionInset\n        flowLayout.sectionInset = UIEdgeInsets(top: sectionInset.top, left: settings.style.buttonBarLeftContentInset ?? sectionInset.left, bottom: sectionInset.bottom, right: settings.style.buttonBarRightContentInset ?? sectionInset.right)\n\n        buttonBarView.showsHorizontalScrollIndicator = false\n        buttonBarView.backgroundColor = settings.style.buttonBarBackgroundColor ?? buttonBarView.backgroundColor\n        buttonBarView.selectedBar.backgroundColor = settings.style.selectedBarBackgroundColor\n\n        buttonBarView.selectedBarHeight = settings.style.selectedBarHeight\n        buttonBarView.selectedBarVerticalAlignment = settings.style.selectedBarVerticalAlignment\n\n        // register button bar item cell\n        switch buttonBarItemSpec! {\n        case .nibFile(let nibName, let bundle, _):\n            buttonBarView.register(UINib(nibName: nibName, bundle: bundle), forCellWithReuseIdentifier:\"Cell\")\n        case .cellClass:\n            buttonBarView.register(ButtonBarViewCell.self, forCellWithReuseIdentifier:\"Cell\")\n        }\n        //-\n    }\n\n    open override func viewWillAppear(_ animated: Bool) {\n        super.viewWillAppear(animated)\n        buttonBarView.layoutIfNeeded()\n    }\n\n    open override func viewDidLayoutSubviews() {\n        super.viewDidLayoutSubviews()\n\n        guard isViewAppearing || isViewRotating else { return }\n\n        // Force the UICollectionViewFlowLayout to get laid out again with the new size if\n        // a) The view is appearing.  This ensures that\n        //    collectionView:layout:sizeForItemAtIndexPath: is called for a second time\n        //    when the view is shown and when the view *frame(s)* are actually set\n        //    (we need the view frame's to have been set to work out the size's and on the\n        //    first call to collectionView:layout:sizeForItemAtIndexPath: the view frame(s)\n        //    aren't set correctly)\n        // b) The view is rotating.  This ensures that\n        //    collectionView:layout:sizeForItemAtIndexPath: is called again and can use the views\n        //    *new* frame so that the buttonBarView cell's actually get resized correctly\n        cachedCellWidths = calculateWidths()\n        buttonBarView.collectionViewLayout.invalidateLayout()\n        // When the view first appears or is rotated we also need to ensure that the barButtonView's\n        // selectedBar is resized and its contentOffset/scroll is set correctly (the selected\n        // tab/cell may end up either skewed or off screen after a rotation otherwise)\n        buttonBarView.moveTo(index: currentIndex, animated: false, swipeDirection: .none, pagerScroll: .scrollOnlyIfOutOfScreen)\n        buttonBarView.selectItem(at: IndexPath(item: currentIndex, section: 0), animated: false, scrollPosition: [])\n    }\n\n    // MARK: - Public Methods\n\n    open override func reloadPagerTabStripView() {\n        super.reloadPagerTabStripView()\n        guard isViewLoaded else { return }\n        buttonBarView.reloadData()\n        cachedCellWidths = calculateWidths()\n        buttonBarView.moveTo(index: currentIndex, animated: false, swipeDirection: .none, pagerScroll: .yes)\n    }\n\n    open func calculateStretchedCellWidths(_ minimumCellWidths: [CGFloat], suggestedStretchedCellWidth: CGFloat, previousNumberOfLargeCells: Int) -> CGFloat {\n        var numberOfLargeCells = 0\n        var totalWidthOfLargeCells: CGFloat = 0\n\n        for minimumCellWidthValue in minimumCellWidths where minimumCellWidthValue > suggestedStretchedCellWidth {\n            totalWidthOfLargeCells += minimumCellWidthValue\n            numberOfLargeCells += 1\n        }\n\n        guard numberOfLargeCells > previousNumberOfLargeCells else { return suggestedStretchedCellWidth }\n\n        let flowLayout = buttonBarView.collectionViewLayout as! UICollectionViewFlowLayout // swiftlint:disable:this force_cast\n        let collectionViewAvailiableWidth = buttonBarView.frame.size.width - flowLayout.sectionInset.left - flowLayout.sectionInset.right\n        let numberOfCells = minimumCellWidths.count\n        let cellSpacingTotal = CGFloat(numberOfCells - 1) * flowLayout.minimumLineSpacing\n\n        let numberOfSmallCells = numberOfCells - numberOfLargeCells\n        let newSuggestedStretchedCellWidth = (collectionViewAvailiableWidth - totalWidthOfLargeCells - cellSpacingTotal) / CGFloat(numberOfSmallCells)\n\n        return calculateStretchedCellWidths(minimumCellWidths, suggestedStretchedCellWidth: newSuggestedStretchedCellWidth, previousNumberOfLargeCells: numberOfLargeCells)\n    }\n\n    open func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int) {\n        guard shouldUpdateButtonBarView else { return }\n        buttonBarView.moveTo(index: toIndex, animated: false, swipeDirection: toIndex < fromIndex ? .right : .left, pagerScroll: .yes)\n\n        if let changeCurrentIndex = changeCurrentIndex {\n            let oldIndexPath = IndexPath(item: currentIndex != fromIndex ? fromIndex : toIndex, section: 0)\n            let newIndexPath = IndexPath(item: currentIndex, section: 0)\n\n            let cells = cellForItems(at: [oldIndexPath, newIndexPath], reloadIfNotVisible: collectionViewDidLoad)\n            changeCurrentIndex(cells.first!, cells.last!, true)\n        }\n    }\n\n    open func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool) {\n        guard shouldUpdateButtonBarView else { return }\n        buttonBarView.move(fromIndex: fromIndex, toIndex: toIndex, progressPercentage: progressPercentage, pagerScroll: .yes)\n        if let changeCurrentIndexProgressive = changeCurrentIndexProgressive {\n            let oldIndexPath = IndexPath(item: currentIndex != fromIndex ? fromIndex : toIndex, section: 0)\n            let newIndexPath = IndexPath(item: currentIndex, section: 0)\n\n            let cells = cellForItems(at: [oldIndexPath, newIndexPath], reloadIfNotVisible: collectionViewDidLoad)\n            changeCurrentIndexProgressive(cells.first!, cells.last!, progressPercentage, indexWasChanged, true)\n        }\n    }\n\n    private func cellForItems(at indexPaths: [IndexPath], reloadIfNotVisible reload: Bool = true) -> [ButtonBarViewCell?] {\n        let cells = indexPaths.map { buttonBarView.cellForItem(at: $0) as? ButtonBarViewCell }\n\n        if reload {\n            let indexPathsToReload = cells.enumerated()\n                .compactMap { (arg) -> IndexPath? in\n                    let (index, cell) = arg\n                    return cell == nil ? indexPaths[index] : nil\n                }\n                .compactMap { (indexPath: IndexPath) -> IndexPath? in\n                    return (indexPath.item >= 0 && indexPath.item < buttonBarView.numberOfItems(inSection: indexPath.section)) ? indexPath : nil\n                }\n\n            if !indexPathsToReload.isEmpty {\n                buttonBarView.reloadItems(at: indexPathsToReload)\n            }\n        }\n\n        return cells\n    }\n\n    // MARK: - UICollectionViewDelegateFlowLayut\n\n    @objc open func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {\n        guard let cellWidthValue = cachedCellWidths?[indexPath.row] else {\n            fatalError(\"cachedCellWidths for \\(indexPath.row) must not be nil\")\n        }\n        return CGSize(width: cellWidthValue, height: collectionView.frame.size.height)\n    }\n\n    open func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {\n        guard indexPath.item != currentIndex else { return }\n\n        buttonBarView.moveTo(index: indexPath.item, animated: true, swipeDirection: .none, pagerScroll: .yes)\n        shouldUpdateButtonBarView = false\n\n        let oldIndexPath = IndexPath(item: currentIndex, section: 0)\n        let newIndexPath = IndexPath(item: indexPath.item, section: 0)\n\n        let cells = cellForItems(at: [oldIndexPath, newIndexPath], reloadIfNotVisible: collectionViewDidLoad)\n\n        if pagerBehaviour.isProgressiveIndicator {\n            if let changeCurrentIndexProgressive = changeCurrentIndexProgressive {\n                changeCurrentIndexProgressive(cells.first!, cells.last!, 1, true, true)\n            }\n        } else {\n            if let changeCurrentIndex = changeCurrentIndex {\n                changeCurrentIndex(cells.first!, cells.last!, true)\n            }\n        }\n        moveToViewController(at: indexPath.item)\n    }\n\n    // MARK: - UICollectionViewDataSource\n\n    open func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {\n        return viewControllers.count\n    }\n\n    open func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {\n        guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: \"Cell\", for: indexPath) as? ButtonBarViewCell else {\n            fatalError(\"UICollectionViewCell should be or extend from ButtonBarViewCell\")\n        }\n\n        collectionViewDidLoad = true\n\n        let childController = viewControllers[indexPath.item] as! IndicatorInfoProvider // swiftlint:disable:this force_cast\n        let indicatorInfo = childController.indicatorInfo(for: self)\n\n        cell.label.text = indicatorInfo.title\n        cell.label.font = settings.style.buttonBarItemFont\n        cell.label.textColor = settings.style.buttonBarItemTitleColor ?? cell.label.textColor\n        cell.contentView.backgroundColor = settings.style.buttonBarItemBackgroundColor ?? cell.contentView.backgroundColor\n        cell.backgroundColor = settings.style.buttonBarItemBackgroundColor ?? cell.backgroundColor\n        if let image = indicatorInfo.image {\n            cell.imageView.image = image\n        }\n        if let highlightedImage = indicatorInfo.highlightedImage {\n            cell.imageView.highlightedImage = highlightedImage\n        }\n\n        configureCell(cell, indicatorInfo: indicatorInfo)\n\n        if pagerBehaviour.isProgressiveIndicator {\n            if let changeCurrentIndexProgressive = changeCurrentIndexProgressive {\n                changeCurrentIndexProgressive(currentIndex == indexPath.item ? nil : cell, currentIndex == indexPath.item ? cell : nil, 1, true, false)\n            }\n        } else {\n            if let changeCurrentIndex = changeCurrentIndex {\n                changeCurrentIndex(currentIndex == indexPath.item ? nil : cell, currentIndex == indexPath.item ? cell : nil, false)\n            }\n        }\n        cell.isAccessibilityElement = true\n        cell.accessibilityLabel = indicatorInfo.accessibilityLabel ?? cell.label.text\n        cell.accessibilityTraits.insert([.button, .header])\n        return cell\n    }\n\n    // MARK: - UIScrollViewDelegate\n\n    open override func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {\n        super.scrollViewDidEndScrollingAnimation(scrollView)\n\n        guard scrollView == containerView else { return }\n        shouldUpdateButtonBarView = true\n    }\n\n    open func configureCell(_ cell: ButtonBarViewCell, indicatorInfo: IndicatorInfo) {\n    }\n\n    private func calculateWidths() -> [CGFloat] {\n        let flowLayout = buttonBarView.collectionViewLayout as! UICollectionViewFlowLayout // swiftlint:disable:this force_cast\n        let numberOfCells = viewControllers.count\n\n        var minimumCellWidths = [CGFloat]()\n        var collectionViewContentWidth: CGFloat = 0\n\n        for viewController in viewControllers {\n            let childController = viewController as! IndicatorInfoProvider // swiftlint:disable:this force_cast\n            let indicatorInfo = childController.indicatorInfo(for: self)\n            switch buttonBarItemSpec! {\n            case .cellClass(let widthCallback):\n                let width = widthCallback(indicatorInfo)\n                minimumCellWidths.append(width)\n                collectionViewContentWidth += width\n            case .nibFile(_, _, let widthCallback):\n                let width = widthCallback(indicatorInfo)\n                minimumCellWidths.append(width)\n                collectionViewContentWidth += width\n            }\n        }\n\n        let cellSpacingTotal = CGFloat(numberOfCells - 1) * flowLayout.minimumLineSpacing\n        collectionViewContentWidth += cellSpacingTotal\n\n        let collectionViewAvailableVisibleWidth = buttonBarView.frame.size.width - flowLayout.sectionInset.left - flowLayout.sectionInset.right\n\n        if !settings.style.buttonBarItemsShouldFillAvailableWidth || collectionViewAvailableVisibleWidth < collectionViewContentWidth {\n            return minimumCellWidths\n        } else {\n            let stretchedCellWidthIfAllEqual = (collectionViewAvailableVisibleWidth - cellSpacingTotal) / CGFloat(numberOfCells)\n            let generalMinimumCellWidth = calculateStretchedCellWidths(minimumCellWidths, suggestedStretchedCellWidth: stretchedCellWidthIfAllEqual, previousNumberOfLargeCells: 0)\n            var stretchedCellWidths = [CGFloat]()\n\n            for minimumCellWidthValue in minimumCellWidths {\n                let cellWidth = (minimumCellWidthValue > generalMinimumCellWidth) ? minimumCellWidthValue : generalMinimumCellWidth\n                stretchedCellWidths.append(cellWidth)\n            }\n\n            return stretchedCellWidths\n        }\n    }\n\n    private var shouldUpdateButtonBarView = true\n    private var collectionViewDidLoad = false\n\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/ButtonBarView.swift",
    "content": "//  ButtonBarView.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport UIKit\n\npublic enum PagerScroll {\n    case no\n    case yes\n    case scrollOnlyIfOutOfScreen\n}\n\npublic enum SelectedBarAlignment {\n    case left\n    case center\n    case right\n    case progressive\n}\n\npublic enum SelectedBarVerticalAlignment {\n    case top\n    case middle\n    case bottom\n}\n\nopen class ButtonBarView: UICollectionView {\n\n    open lazy var selectedBar: UIView = { [unowned self] in\n        let bar  = UIView(frame: CGRect(x: 0, y: self.frame.size.height - CGFloat(self.selectedBarHeight), width: 0, height: CGFloat(self.selectedBarHeight)))\n        bar.layer.zPosition = 9999\n        return bar\n    }()\n\n    internal var selectedBarHeight: CGFloat = 4 {\n        didSet {\n            updateSelectedBarYPosition()\n        }\n    }\n    var selectedBarVerticalAlignment: SelectedBarVerticalAlignment = .bottom\n    var selectedBarAlignment: SelectedBarAlignment = .center\n    var selectedIndex = 0\n\n    required public init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        addSubview(selectedBar)\n    }\n\n    public override init(frame: CGRect, collectionViewLayout layout: UICollectionViewLayout) {\n        super.init(frame: frame, collectionViewLayout: layout)\n        addSubview(selectedBar)\n    }\n\n    open func moveTo(index: Int, animated: Bool, swipeDirection: SwipeDirection, pagerScroll: PagerScroll) {\n        selectedIndex = index\n        updateSelectedBarPosition(animated, swipeDirection: swipeDirection, pagerScroll: pagerScroll)\n    }\n\n    open func move(fromIndex: Int, toIndex: Int, progressPercentage: CGFloat, pagerScroll: PagerScroll) {\n        selectedIndex = progressPercentage > 0.5 ? toIndex : fromIndex\n\n        let fromFrame = layoutAttributesForItem(at: IndexPath(item: fromIndex, section: 0))!.frame\n        let numberOfItems = dataSource!.collectionView(self, numberOfItemsInSection: 0)\n\n        var toFrame: CGRect\n\n        if toIndex < 0 || toIndex > numberOfItems - 1 {\n            if toIndex < 0 {\n                let cellAtts = layoutAttributesForItem(at: IndexPath(item: 0, section: 0))\n                toFrame = cellAtts!.frame.offsetBy(dx: -cellAtts!.frame.size.width, dy: 0)\n            } else {\n                let cellAtts = layoutAttributesForItem(at: IndexPath(item: (numberOfItems - 1), section: 0))\n                toFrame = cellAtts!.frame.offsetBy(dx: cellAtts!.frame.size.width, dy: 0)\n            }\n        } else {\n            toFrame = layoutAttributesForItem(at: IndexPath(item: toIndex, section: 0))!.frame\n        }\n\n        var targetFrame = fromFrame\n        targetFrame.size.height = selectedBar.frame.size.height\n        targetFrame.size.width += (toFrame.size.width - fromFrame.size.width) * progressPercentage\n        targetFrame.origin.x += (toFrame.origin.x - fromFrame.origin.x) * progressPercentage\n\n        selectedBar.frame = CGRect(x: targetFrame.origin.x, y: selectedBar.frame.origin.y, width: targetFrame.size.width, height: selectedBar.frame.size.height)\n\n        var targetContentOffset: CGFloat = 0.0\n        if contentSize.width > frame.size.width {\n            let toContentOffset = contentOffsetForCell(withFrame: toFrame, andIndex: toIndex)\n            let fromContentOffset = contentOffsetForCell(withFrame: fromFrame, andIndex: fromIndex)\n\n            targetContentOffset = fromContentOffset + ((toContentOffset - fromContentOffset) * progressPercentage)\n        }\n\n        setContentOffset(CGPoint(x: targetContentOffset, y: 0), animated: false)\n    }\n\n    open func updateSelectedBarPosition(_ animated: Bool, swipeDirection: SwipeDirection, pagerScroll: PagerScroll) {\n        var selectedBarFrame = selectedBar.frame\n\n        let selectedCellIndexPath = IndexPath(item: selectedIndex, section: 0)\n        let attributes = layoutAttributesForItem(at: selectedCellIndexPath)\n        let selectedCellFrame = attributes!.frame\n\n        updateContentOffset(animated: animated, pagerScroll: pagerScroll, toFrame: selectedCellFrame, toIndex: (selectedCellIndexPath as NSIndexPath).row)\n\n        selectedBarFrame.size.width = selectedCellFrame.size.width\n        selectedBarFrame.origin.x = selectedCellFrame.origin.x\n\n        if animated {\n            UIView.animate(withDuration: 0.3, animations: { [weak self] in\n                self?.selectedBar.frame = selectedBarFrame\n            })\n        } else {\n            selectedBar.frame = selectedBarFrame\n        }\n    }\n\n    // MARK: - Helpers\n\n    private func updateContentOffset(animated: Bool, pagerScroll: PagerScroll, toFrame: CGRect, toIndex: Int) {\n        guard pagerScroll != .no || (pagerScroll != .scrollOnlyIfOutOfScreen && (toFrame.origin.x < contentOffset.x || toFrame.origin.x >= (contentOffset.x + frame.size.width - contentInset.left))) else { return }\n        let targetContentOffset = contentSize.width > frame.size.width ? contentOffsetForCell(withFrame: toFrame, andIndex: toIndex) : 0\n        setContentOffset(CGPoint(x: targetContentOffset, y: 0), animated: animated)\n    }\n\n    private func contentOffsetForCell(withFrame cellFrame: CGRect, andIndex index: Int) -> CGFloat {\n        let sectionInset = (collectionViewLayout as! UICollectionViewFlowLayout).sectionInset // swiftlint:disable:this force_cast\n        var alignmentOffset: CGFloat = 0.0\n\n        switch selectedBarAlignment {\n        case .left:\n            alignmentOffset = sectionInset.left\n        case .right:\n            alignmentOffset = frame.size.width - sectionInset.right - cellFrame.size.width\n        case .center:\n            alignmentOffset = (frame.size.width - cellFrame.size.width) * 0.5\n        case .progressive:\n            let cellHalfWidth = cellFrame.size.width * 0.5\n            let leftAlignmentOffset = sectionInset.left + cellHalfWidth\n            let rightAlignmentOffset = frame.size.width - sectionInset.right - cellHalfWidth\n            let numberOfItems = dataSource!.collectionView(self, numberOfItemsInSection: 0)\n            let progress = index / (numberOfItems - 1)\n            alignmentOffset = leftAlignmentOffset + (rightAlignmentOffset - leftAlignmentOffset) * CGFloat(progress) - cellHalfWidth\n        }\n\n        var contentOffset = cellFrame.origin.x - alignmentOffset\n        contentOffset = max(0, contentOffset)\n        contentOffset = min(contentSize.width - frame.size.width, contentOffset)\n        return contentOffset\n    }\n\n    private func updateSelectedBarYPosition() {\n        var selectedBarFrame = selectedBar.frame\n\n        switch selectedBarVerticalAlignment {\n        case .top:\n            selectedBarFrame.origin.y = 0\n        case .middle:\n            selectedBarFrame.origin.y = (frame.size.height - selectedBarHeight) / 2\n        case .bottom:\n            selectedBarFrame.origin.y = frame.size.height - selectedBarHeight\n        }\n\n        selectedBarFrame.size.height = selectedBarHeight\n        selectedBar.frame = selectedBarFrame\n    }\n\n    override open func layoutSubviews() {\n        super.layoutSubviews()\n        updateSelectedBarYPosition()\n    }\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/ButtonBarViewCell.swift",
    "content": "//  ButtonBarViewCell.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport UIKit\nimport Foundation\n\nopen class ButtonBarViewCell: UICollectionViewCell {\n\n    @IBOutlet open var imageView: UIImageView!\n    @IBOutlet open var label: UILabel!\n\n    public required init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        \n        isAccessibilityElement = true\n        accessibilityTraits.insert([.button, .header])\n    }\n    \n    open override var isSelected: Bool {\n        get {\n            return super.isSelected\n        }\n        set {\n            super.isSelected = newValue\n            if (newValue) {\n                accessibilityTraits.insert(.selected)\n            } else {\n                accessibilityTraits.remove(.selected)\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/IndicatorInfo.swift",
    "content": "//  IndicatorInfo.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n\npublic struct IndicatorInfo {\n\n    public var title: String?\n    public var image: UIImage?\n    public var highlightedImage: UIImage?\n    public var accessibilityLabel: String?\n    public var userInfo: Any?\n    \n    public init(title: String?) {\n        self.title = title\n        self.accessibilityLabel = title\n    }\n    \n    public init(image: UIImage?, highlightedImage: UIImage? = nil, userInfo: Any? = nil) {\n        self.image = image\n        self.highlightedImage = highlightedImage\n        self.userInfo = userInfo\n    }\n    \n    public init(title: String?, image: UIImage?, highlightedImage: UIImage? = nil, userInfo: Any? = nil) {\n        self.title = title\n        self.accessibilityLabel = title\n        self.image = image\n        self.highlightedImage = highlightedImage\n        self.userInfo = userInfo\n    }\n    \n    public init(title: String?, accessibilityLabel:String?, image: UIImage?, highlightedImage: UIImage? = nil, userInfo: Any? = nil) {\n        self.title = title\n        self.accessibilityLabel = accessibilityLabel\n        self.image = image\n        self.highlightedImage = highlightedImage\n        self.userInfo = userInfo\n    }\n\n}\n\nextension IndicatorInfo : ExpressibleByStringLiteral {\n\n    public init(stringLiteral value: String) {\n        title = value\n        accessibilityLabel = value\n    }\n\n    public init(extendedGraphemeClusterLiteral value: String) {\n        title = value\n        accessibilityLabel = value\n    }\n\n    public init(unicodeScalarLiteral value: String) {\n        title = value\n        accessibilityLabel = value\n    }\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/PagerTabStripBehaviour.swift",
    "content": "//  PagerTabStripOptions.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\n\npublic enum PagerTabStripBehaviour {\n\n    case common(skipIntermediateViewControllers: Bool)\n    case progressive(skipIntermediateViewControllers: Bool, elasticIndicatorLimit: Bool)\n\n    public var skipIntermediateViewControllers: Bool {\n        switch self {\n        case .common(let skipIntermediateViewControllers):\n            return skipIntermediateViewControllers\n        case .progressive(let skipIntermediateViewControllers, _):\n            return skipIntermediateViewControllers\n        }\n    }\n\n    public var isProgressiveIndicator: Bool {\n        switch self {\n        case .common:\n            return false\n        case .progressive:\n            return true\n        }\n    }\n\n    public var isElasticIndicatorLimit: Bool {\n        switch self {\n        case .common:\n            return false\n        case .progressive(_, let elasticIndicatorLimit):\n            return elasticIndicatorLimit\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/PagerTabStripError.swift",
    "content": "//  PagerTabStripError.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\n\npublic enum PagerTabStripError: Error {\n\n    case viewControllerOutOfBounds\n\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/PagerTabStripViewController.swift",
    "content": "//  PagerTabStripViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n\n// MARK: Protocols\n\npublic protocol IndicatorInfoProvider {\n\n    func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo\n\n}\n\npublic protocol PagerTabStripDelegate: AnyObject {\n\n    func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int)\n}\n\npublic protocol PagerTabStripIsProgressiveDelegate: PagerTabStripDelegate {\n\n    func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool)\n}\n\npublic protocol PagerTabStripDataSource: AnyObject {\n\n    func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController]\n}\n\n// MARK: PagerTabStripViewController\n\nopen class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {\n\n    @IBOutlet weak public var containerView: UIScrollView!\n\n    open weak var delegate: PagerTabStripDelegate?\n    open weak var datasource: PagerTabStripDataSource?\n\n    open var pagerBehaviour = PagerTabStripBehaviour.progressive(skipIntermediateViewControllers: true, elasticIndicatorLimit: true)\n\n    open private(set) var viewControllers = [UIViewController]()\n    open private(set) var currentIndex = 0\n    open private(set) var preCurrentIndex = 0 // used *only* to store the index to which move when the pager becomes visible\n\n    open var pageWidth: CGFloat {\n        return containerView.bounds.width\n    }\n\n    open var scrollPercentage: CGFloat {\n        if swipeDirection != .right {\n            let module = fmod(containerView.contentOffset.x, pageWidth)\n            return module == 0.0 ? 1.0 : module / pageWidth\n        }\n        return 1 - fmod(containerView.contentOffset.x >= 0 ? containerView.contentOffset.x : pageWidth + containerView.contentOffset.x, pageWidth) / pageWidth\n    }\n\n    open var swipeDirection: SwipeDirection {\n        if containerView.contentOffset.x > lastContentOffset {\n            return .left\n        } else if containerView.contentOffset.x < lastContentOffset {\n            return .right\n        }\n        return .none\n    }\n\n    override open func viewDidLoad() {\n        super.viewDidLoad()\n        let conteinerViewAux = containerView ?? {\n            let containerView = UIScrollView(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height))\n            containerView.autoresizingMask = [.flexibleWidth, .flexibleHeight]\n            return containerView\n        }()\n        containerView = conteinerViewAux\n        if containerView.superview == nil {\n            view.addSubview(containerView)\n        }\n        containerView.bounces = true\n        containerView.alwaysBounceHorizontal = true\n        containerView.alwaysBounceVertical = false\n        containerView.scrollsToTop = false\n        containerView.delegate = self\n        containerView.showsVerticalScrollIndicator = false\n        containerView.showsHorizontalScrollIndicator = false\n        containerView.isPagingEnabled = true\n        reloadViewControllers()\n\n        let childController = viewControllers[currentIndex]\n        addChild(childController)\n        childController.view.autoresizingMask = [.flexibleHeight, .flexibleWidth]\n        containerView.addSubview(childController.view)\n        childController.didMove(toParent: self)\n    }\n\n    open override func viewWillAppear(_ animated: Bool) {\n        super.viewWillAppear(animated)\n        isViewAppearing = true\n        children.forEach { $0.beginAppearanceTransition(true, animated: animated) }\n    }\n\n    override open func viewDidAppear(_ animated: Bool) {\n        super.viewDidAppear(animated)\n        lastSize = containerView.bounds.size\n        updateIfNeeded()\n        let needToUpdateCurrentChild = preCurrentIndex != currentIndex\n        if needToUpdateCurrentChild {\n            moveToViewController(at: preCurrentIndex)\n        }\n        isViewAppearing = false\n        children.forEach { $0.endAppearanceTransition() }\n    }\n\n    open override func viewWillDisappear(_ animated: Bool) {\n        super.viewWillDisappear(animated)\n        children.forEach { $0.beginAppearanceTransition(false, animated: animated) }\n    }\n\n    open override func viewDidDisappear(_ animated: Bool) {\n        super.viewDidDisappear(animated)\n        children.forEach { $0.endAppearanceTransition() }\n    }\n\n    override open func viewDidLayoutSubviews() {\n        super.viewDidLayoutSubviews()\n        updateIfNeeded()\n    }\n\n    open override var shouldAutomaticallyForwardAppearanceMethods: Bool {\n        return false\n    }\n\n    open func moveToViewController(at index: Int, animated: Bool = true) {\n        guard isViewLoaded && view.window != nil && currentIndex != index else {\n            preCurrentIndex = index\n            return\n        }\n\n        if animated && pagerBehaviour.skipIntermediateViewControllers && abs(currentIndex - index) > 1 {\n            var tmpViewControllers = viewControllers\n            let currentChildVC = viewControllers[currentIndex]\n            let fromIndex = currentIndex < index ? index - 1 : index + 1\n            let fromChildVC = viewControllers[fromIndex]\n            tmpViewControllers[currentIndex] = fromChildVC\n            tmpViewControllers[fromIndex] = currentChildVC\n            pagerTabStripChildViewControllersForScrolling = tmpViewControllers\n            containerView.setContentOffset(CGPoint(x: pageOffsetForChild(at: fromIndex), y: 0), animated: false)\n            (navigationController?.view ?? view).isUserInteractionEnabled = !animated\n            containerView.setContentOffset(CGPoint(x: pageOffsetForChild(at: index), y: 0), animated: true)\n        } else {\n            (navigationController?.view ?? view).isUserInteractionEnabled = !animated\n            containerView.setContentOffset(CGPoint(x: pageOffsetForChild(at: index), y: 0), animated: animated)\n        }\n    }\n\n    open func moveTo(viewController: UIViewController, animated: Bool = true) {\n        moveToViewController(at: viewControllers.firstIndex(of: viewController)!, animated: animated)\n    }\n\n    // MARK: - PagerTabStripDataSource\n\n    open func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {\n        assertionFailure(\"Sub-class must implement the PagerTabStripDataSource viewControllers(for:) method\")\n        return []\n    }\n\n    // MARK: - Helpers\n\n    open func updateIfNeeded() {\n        if isViewLoaded && !lastSize.equalTo(containerView.bounds.size) {\n            updateContent()\n        }\n    }\n\n    open func canMoveTo(index: Int) -> Bool {\n        return currentIndex != index && viewControllers.count > index\n    }\n\n    open func pageOffsetForChild(at index: Int) -> CGFloat {\n        return CGFloat(index) * containerView.bounds.width\n    }\n\n    open func offsetForChild(at index: Int) -> CGFloat {\n        return (CGFloat(index) * containerView.bounds.width) + ((containerView.bounds.width - view.bounds.width) * 0.5)\n    }\n\n    open func offsetForChild(viewController: UIViewController) throws -> CGFloat {\n        guard let index = viewControllers.firstIndex(of: viewController) else {\n            throw PagerTabStripError.viewControllerOutOfBounds\n        }\n        return offsetForChild(at: index)\n    }\n\n    open func pageFor(contentOffset: CGFloat) -> Int {\n        let result = virtualPageFor(contentOffset: contentOffset)\n        return pageFor(virtualPage: result)\n    }\n\n    open func virtualPageFor(contentOffset: CGFloat) -> Int {\n        return Int((contentOffset + 1.5 * pageWidth) / pageWidth) - 1\n    }\n\n    open func pageFor(virtualPage: Int) -> Int {\n        if virtualPage < 0 {\n            return 0\n        }\n        if virtualPage > viewControllers.count - 1 {\n            return viewControllers.count - 1\n        }\n        return virtualPage\n    }\n\n    open func updateContent() {\n        if lastSize.width != containerView.bounds.size.width {\n            lastSize = containerView.bounds.size\n            containerView.contentOffset = CGPoint(x: pageOffsetForChild(at: currentIndex), y: 0)\n        }\n        lastSize = containerView.bounds.size\n\n        let pagerViewControllers = pagerTabStripChildViewControllersForScrolling ?? viewControllers\n        containerView.contentSize = CGSize(width: containerView.bounds.width * CGFloat(pagerViewControllers.count), height: containerView.contentSize.height)\n\n        for (index, childController) in pagerViewControllers.enumerated() {\n            let pageOffsetForChild = self.pageOffsetForChild(at: index)\n            if abs(containerView.contentOffset.x - pageOffsetForChild) < containerView.bounds.width {\n                if childController.parent != nil {\n                    childController.view.frame = CGRect(x: offsetForChild(at: index), y: 0, width: view.bounds.width, height: containerView.bounds.height)\n                    childController.view.autoresizingMask = [.flexibleHeight, .flexibleWidth]\n                } else {\n                    childController.beginAppearanceTransition(true, animated: false)\n                    addChild(childController)\n                    childController.view.frame = CGRect(x: offsetForChild(at: index), y: 0, width: view.bounds.width, height: containerView.bounds.height)\n                    childController.view.autoresizingMask = [.flexibleHeight, .flexibleWidth]\n                    containerView.addSubview(childController.view)\n                    childController.didMove(toParent: self)\n                    childController.endAppearanceTransition()\n                }\n            } else {\n                if childController.parent != nil {\n                    childController.beginAppearanceTransition(false, animated: false)\n                    childController.willMove(toParent: nil)\n                    childController.view.removeFromSuperview()\n                    childController.removeFromParent()\n                    childController.endAppearanceTransition()\n                }\n            }\n        }\n\n        let oldCurrentIndex = currentIndex\n        let virtualPage = virtualPageFor(contentOffset: containerView.contentOffset.x)\n        let newCurrentIndex = pageFor(virtualPage: virtualPage)\n        currentIndex = newCurrentIndex\n        preCurrentIndex = currentIndex\n        let changeCurrentIndex = newCurrentIndex != oldCurrentIndex\n\n        if let progressiveDelegate = self as? PagerTabStripIsProgressiveDelegate, pagerBehaviour.isProgressiveIndicator {\n\n            let (fromIndex, toIndex, scrollPercentage) = progressiveIndicatorData(virtualPage)\n            progressiveDelegate.updateIndicator(for: self, fromIndex: fromIndex, toIndex: toIndex, withProgressPercentage: scrollPercentage, indexWasChanged: changeCurrentIndex)\n        } else {\n            delegate?.updateIndicator(for: self, fromIndex: min(oldCurrentIndex, pagerViewControllers.count - 1), toIndex: newCurrentIndex)\n        }\n    }\n\n    open func reloadPagerTabStripView() {\n        guard isViewLoaded else { return }\n        for childController in viewControllers where childController.parent != nil {\n            childController.beginAppearanceTransition(false, animated: false)\n            childController.willMove(toParent: nil)\n            childController.view.removeFromSuperview()\n            childController.removeFromParent()\n            childController.endAppearanceTransition()\n        }\n        reloadViewControllers()\n        containerView.contentSize = CGSize(width: containerView.bounds.width * CGFloat(viewControllers.count), height: containerView.contentSize.height)\n        if currentIndex >= viewControllers.count {\n            currentIndex = viewControllers.count - 1\n        }\n        preCurrentIndex = currentIndex\n        containerView.contentOffset = CGPoint(x: pageOffsetForChild(at: currentIndex), y: 0)\n        updateContent()\n    }\n\n    // MARK: - UIScrollViewDelegate\n\n    open func scrollViewDidScroll(_ scrollView: UIScrollView) {\n        if containerView == scrollView {\n            updateContent()\n            lastContentOffset = scrollView.contentOffset.x\n        }\n    }\n\n    open func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {\n        if containerView == scrollView {\n            lastPageNumber = pageFor(contentOffset: scrollView.contentOffset.x)\n        }\n    }\n\n    open func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {\n        if containerView == scrollView {\n            pagerTabStripChildViewControllersForScrolling = nil\n            (navigationController?.view ?? view).isUserInteractionEnabled = true\n            updateContent()\n        }\n    }\n\n    // MARK: - Orientation\n\n    open override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {\n        super.viewWillTransition(to: size, with: coordinator)\n        isViewRotating = true\n        pageBeforeRotate = currentIndex\n        coordinator.animate(alongsideTransition: nil) { [weak self] _ in\n            guard let me = self else { return }\n            me.isViewRotating = false\n            me.currentIndex = me.pageBeforeRotate\n            me.preCurrentIndex = me.currentIndex\n            me.updateIfNeeded()\n        }\n    }\n\n    // MARK: Private\n\n    private func progressiveIndicatorData(_ virtualPage: Int) -> (Int, Int, CGFloat) {\n        let count = viewControllers.count\n        var fromIndex = currentIndex\n        var toIndex = currentIndex\n        let direction = swipeDirection\n\n        if direction == .left {\n            if virtualPage > count - 1 {\n                fromIndex = count - 1\n                toIndex = count\n            } else {\n                if self.scrollPercentage >= 0.5 {\n                    fromIndex = max(toIndex - 1, 0)\n                } else {\n                    toIndex = fromIndex + 1\n                }\n            }\n        } else if direction == .right {\n            if virtualPage < 0 {\n                fromIndex = 0\n                toIndex = -1\n            } else {\n                if self.scrollPercentage > 0.5 {\n                    fromIndex = min(toIndex + 1, count - 1)\n                } else {\n                    toIndex = fromIndex - 1\n                }\n            }\n        }\n        let scrollPercentage = pagerBehaviour.isElasticIndicatorLimit ? self.scrollPercentage : ((toIndex < 0 || toIndex >= count) ? 0.0 : self.scrollPercentage)\n        return (fromIndex, toIndex, scrollPercentage)\n    }\n\n    private func reloadViewControllers() {\n        guard let dataSource = datasource else {\n            fatalError(\"dataSource must not be nil\")\n        }\n        viewControllers = dataSource.viewControllers(for: self)\n        // viewControllers\n        guard !viewControllers.isEmpty else {\n            fatalError(\"viewControllers(for:) should provide at least one child view controller\")\n        }\n        viewControllers.forEach { if !($0 is IndicatorInfoProvider) { fatalError(\"Every view controller provided by PagerTabStripDataSource's viewControllers(for:) method must conform to IndicatorInfoProvider\") }}\n\n    }\n\n    private var pagerTabStripChildViewControllersForScrolling: [UIViewController]?\n    private var lastPageNumber = 0\n    private var lastContentOffset: CGFloat = 0.0\n    private var pageBeforeRotate = 0\n    private var lastSize = CGSize(width: 0, height: 0)\n    internal var isViewRotating = false\n    internal var isViewAppearing = false\n\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/Resources/ButtonCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"21225\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\">\n    <device id=\"retina4_7\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"21207\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <collectionViewCell opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" id=\"zg4-fX-zUF\" customClass=\"ButtonBarViewCell\" customModule=\"XLPagerTabStrip\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"80\" height=\"40\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"80\" height=\"40\"/>\n                <autoresizingMask key=\"autoresizingMask\"/>\n                <subviews>\n                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"s7f-rk-sQl\">\n                        <rect key=\"frame\" x=\"21.5\" y=\"11.5\" width=\"37\" height=\"17\"/>\n                        <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"14\"/>\n                        <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                    <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"tFG-yJ-6Th\">\n                        <rect key=\"frame\" x=\"22.5\" y=\"2.5\" width=\"35\" height=\"35\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"width\" constant=\"35\" id=\"VRw-5F-5WY\"/>\n                            <constraint firstAttribute=\"height\" constant=\"35\" id=\"ojk-Ug-Lgh\"/>\n                        </constraints>\n                    </imageView>\n                </subviews>\n            </view>\n            <color key=\"backgroundColor\" red=\"0.027450980390000001\" green=\"0.72549019609999998\" blue=\"0.60784313729999995\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            <constraints>\n                <constraint firstItem=\"tFG-yJ-6Th\" firstAttribute=\"centerY\" secondItem=\"zg4-fX-zUF\" secondAttribute=\"centerY\" id=\"5so-ZP-gRs\"/>\n                <constraint firstItem=\"tFG-yJ-6Th\" firstAttribute=\"centerX\" secondItem=\"zg4-fX-zUF\" secondAttribute=\"centerX\" id=\"9em-NR-hoa\"/>\n                <constraint firstItem=\"s7f-rk-sQl\" firstAttribute=\"centerY\" secondItem=\"zg4-fX-zUF\" secondAttribute=\"centerY\" id=\"ZeP-6I-AXE\"/>\n                <constraint firstItem=\"s7f-rk-sQl\" firstAttribute=\"centerX\" secondItem=\"zg4-fX-zUF\" secondAttribute=\"centerX\" id=\"c15-bZ-hPG\"/>\n            </constraints>\n            <connections>\n                <outlet property=\"imageView\" destination=\"tFG-yJ-6Th\" id=\"Odb-dR-tf4\"/>\n                <outlet property=\"label\" destination=\"s7f-rk-sQl\" id=\"4gU-tb-BMB\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"307\" y=\"541\"/>\n        </collectionViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/SegmentedPagerTabStripViewController.swift",
    "content": "//  SegmentedPagerTabStripViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n\npublic struct SegmentedPagerTabStripSettings {\n\n    public struct Style {\n        public var segmentedControlColor: UIColor?\n    }\n\n    public var style = Style()\n}\n\nopen class SegmentedPagerTabStripViewController: PagerTabStripViewController, PagerTabStripDataSource, PagerTabStripDelegate {\n\n    @IBOutlet weak public var segmentedControl: UISegmentedControl!\n\n    open var settings = SegmentedPagerTabStripSettings()\n\n    public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {\n        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)\n        pagerBehaviour = PagerTabStripBehaviour.common(skipIntermediateViewControllers: true)\n        delegate = self\n        datasource = self\n    }\n\n    required public init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        pagerBehaviour = PagerTabStripBehaviour.common(skipIntermediateViewControllers: true)\n        delegate = self\n        datasource = self\n    }\n\n    private(set) var shouldUpdateSegmentedControl = true\n\n    open override func viewDidLoad() {\n        super.viewDidLoad()\n        let auxSegmentedControl = segmentedControl ?? UISegmentedControl()\n        segmentedControl = auxSegmentedControl\n        if segmentedControl.superview == nil {\n            navigationItem.titleView = segmentedControl\n        }\n        segmentedControl.tintColor = settings.style.segmentedControlColor ?? segmentedControl.tintColor\n        segmentedControl.addTarget(self, action: #selector(SegmentedPagerTabStripViewController.segmentedControlChanged(_:)), for: .valueChanged)\n        reloadSegmentedControl()\n    }\n\n    open override func reloadPagerTabStripView() {\n        super.reloadPagerTabStripView()\n        if isViewLoaded {\n            reloadSegmentedControl()\n        }\n    }\n\n    func reloadSegmentedControl() {\n        segmentedControl.removeAllSegments()\n        for (index, item) in viewControllers.enumerated() {\n            let child = item as! IndicatorInfoProvider // swiftlint:disable:this force_cast\n            if let image = child.indicatorInfo(for: self).image {\n                segmentedControl.insertSegment(with: image, at: index, animated: false)\n            } else {\n                segmentedControl.insertSegment(withTitle: child.indicatorInfo(for: self).title, at: index, animated: false)\n            }\n        }\n        segmentedControl.selectedSegmentIndex = currentIndex\n    }\n\n    @objc func segmentedControlChanged(_ sender: UISegmentedControl) {\n        let index = sender.selectedSegmentIndex\n        updateIndicator(for: self, fromIndex: currentIndex, toIndex: index)\n        shouldUpdateSegmentedControl = false\n        moveToViewController(at: index)\n    }\n\n    // MARK: - PagerTabStripDelegate\n\n    open func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int) {\n        if shouldUpdateSegmentedControl {\n            segmentedControl.selectedSegmentIndex = toIndex\n        }\n    }\n\n    // MARK: - UIScrollViewDelegate\n\n    open override func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {\n        super.scrollViewDidEndScrollingAnimation(scrollView)\n        shouldUpdateSegmentedControl = true\n    }\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/SwipeDirection.swift",
    "content": "//  SwipeDirection.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\n\npublic enum SwipeDirection {\n    case left\n    case right\n    case none\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/TwitterPagerTabStripViewController.swift",
    "content": "//  TwitterPagerTabStripViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n#if SWIFT_PACKAGE\nimport FXPageControl\n#endif\n\npublic struct TwitterPagerTabStripSettings {\n\n    public struct Style {\n        public var dotColor = UIColor(white: 1, alpha: 0.4)\n        public var selectedDotColor = UIColor.white\n        public var portraitTitleFont = UIFont.systemFont(ofSize: 18)\n        public var landscapeTitleFont = UIFont.systemFont(ofSize: 15)\n        public var titleColor = UIColor.white\n    }\n\n    public var style = Style()\n}\n\nopen class TwitterPagerTabStripViewController: PagerTabStripViewController, PagerTabStripDataSource, PagerTabStripIsProgressiveDelegate {\n\n    open var settings = TwitterPagerTabStripSettings()\n\n    public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {\n        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)\n        pagerBehaviour = .progressive(skipIntermediateViewControllers: true, elasticIndicatorLimit: true)\n        delegate = self\n        datasource = self\n    }\n\n    required public init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        pagerBehaviour = .progressive(skipIntermediateViewControllers: true, elasticIndicatorLimit: true)\n        delegate = self\n        datasource = self\n    }\n\n    open override func viewDidLoad() {\n        super.viewDidLoad()\n\n        if titleView.superview == nil {\n            navigationItem.titleView = titleView\n        }\n\n        // keep watching the frame of titleView\n        titleView.addObserver(self, forKeyPath: \"frame\", options: [.new, .old], context: nil)\n\n        guard let navigationController = navigationController  else {\n            fatalError(\"TwitterPagerTabStripViewController should be embedded in a UINavigationController\")\n        }\n        titleView.frame = CGRect(x: 0, y: 0, width: navigationController.navigationBar.frame.width, height: navigationController.navigationBar.frame.height)\n        titleView.addSubview(titleScrollView)\n        titleView.addSubview(pageControl)\n        reloadNavigationViewItems()\n    }\n\n    open override func reloadPagerTabStripView() {\n        super.reloadPagerTabStripView()\n        guard isViewLoaded else { return }\n\n        reloadNavigationViewItems()\n        setNavigationViewItemsPosition(updateAlpha: true)\n    }\n\n    // MARK: - PagerTabStripDelegate\n\n    open func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool) {\n\n        // move indicator scroll view\n        guard let distance = distanceValue else { return }\n        var xOffset: CGFloat = 0\n        if fromIndex < toIndex {\n            xOffset = distance * CGFloat(fromIndex) + distance * progressPercentage\n        } else if fromIndex > toIndex {\n            xOffset = distance * CGFloat(fromIndex) - distance * progressPercentage\n        } else {\n            xOffset = distance * CGFloat(fromIndex)\n        }\n\n        titleScrollView.contentOffset = CGPoint(x: xOffset, y: 0)\n\n        // update alpha of titles\n        setAlphaWith(offset: xOffset, andDistance: distance)\n\n        // update page control page\n        pageControl.currentPage = currentIndex\n    }\n\n    open func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int) {\n        fatalError()\n    }\n\n    open override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {\n        guard object as AnyObject === titleView && keyPath == \"frame\" && change?[NSKeyValueChangeKey.kindKey] as? UInt == NSKeyValueChange.setting.rawValue else { return }\n\n        let oldRect = (change![NSKeyValueChangeKey.oldKey]! as AnyObject).cgRectValue\n        let newRect = (change![NSKeyValueChangeKey.oldKey]! as AnyObject).cgRectValue\n        if (oldRect?.equalTo(newRect!))! {\n            titleScrollView.frame = CGRect(x: 0, y: 0, width: titleView.frame.width, height: titleScrollView.frame.height)\n            setNavigationViewItemsPosition(updateAlpha: true)\n        }\n    }\n\n    deinit {\n        if isViewLoaded {\n            titleView.removeObserver(self, forKeyPath: \"frame\")\n        }\n    }\n\n    open override func viewDidLayoutSubviews() {\n        super.viewDidLayoutSubviews()\n        setNavigationViewItemsPosition(updateAlpha: false)\n    }\n\n    // MARK: - Helpers\n\n    private lazy var titleView: UIView = {\n        let navigationView = UIView()\n        navigationView.autoresizingMask = [.flexibleWidth, .flexibleHeight]\n        return navigationView\n        }()\n\n    private lazy var titleScrollView: UIScrollView = { [unowned self] in\n        let titleScrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 44))\n        titleScrollView.autoresizingMask = [.flexibleWidth, .flexibleHeight]\n        titleScrollView.bounces = true\n        titleScrollView.scrollsToTop = false\n        titleScrollView.delegate = self\n        titleScrollView.showsVerticalScrollIndicator = false\n        titleScrollView.showsHorizontalScrollIndicator = false\n        titleScrollView.isPagingEnabled = true\n        titleScrollView.isUserInteractionEnabled = false\n        titleScrollView.alwaysBounceHorizontal = true\n        titleScrollView.alwaysBounceVertical = false\n        return titleScrollView\n    }()\n\n    private lazy var pageControl: FXPageControl = { [unowned self] in\n        let pageControl = FXPageControl()\n        pageControl.backgroundColor = .clear\n        pageControl.dotSize = 3.8\n        pageControl.dotSpacing = 4.0\n        pageControl.dotColor = self.settings.style.dotColor\n        pageControl.selectedDotColor = self.settings.style.selectedDotColor\n        pageControl.isUserInteractionEnabled = false\n        return pageControl\n    }()\n\n    private var childTitleLabels = [UILabel]()\n\n    private func reloadNavigationViewItems() {\n        // remove all child view controller header labels\n        childTitleLabels.forEach { $0.removeFromSuperview() }\n        childTitleLabels.removeAll()\n        for (index, item) in viewControllers.enumerated() {\n            let child = item as! IndicatorInfoProvider // swiftlint:disable:this force_cast\n            let indicatorInfo = child.indicatorInfo(for: self)\n            let navTitleLabel: UILabel = {\n                let label = UILabel()\n                label.text = indicatorInfo.title\n                label.font = UIWindow.isPortrait ? settings.style.portraitTitleFont : settings.style.landscapeTitleFont\n                label.textColor = settings.style.titleColor\n                label.alpha = 0\n                return label\n            }()\n            navTitleLabel.alpha = currentIndex == index ? 1 : 0\n            navTitleLabel.textColor = settings.style.titleColor\n            titleScrollView.addSubview(navTitleLabel)\n            childTitleLabels.append(navTitleLabel)\n        }\n    }\n\n    private func setNavigationViewItemsPosition(updateAlpha: Bool) {\n        guard let distance = distanceValue else { return }\n        let isPortrait = UIWindow.isPortrait\n        let navBarHeight: CGFloat = navigationController!.navigationBar.frame.size.height\n        for (index, label) in childTitleLabels.enumerated() {\n            if updateAlpha {\n                label.alpha = currentIndex == index ? 1 : 0\n            }\n            label.font = isPortrait ? settings.style.portraitTitleFont : settings.style.landscapeTitleFont\n            let viewSize = label.intrinsicContentSize\n            let originX = distance - viewSize.width/2 + CGFloat(index) * distance\n            let originY = (CGFloat(navBarHeight) - viewSize.height) / 2\n            label.frame = CGRect(x: originX, y: originY - 2, width: viewSize.width, height: viewSize.height)\n            label.tag = index\n        }\n\n        let xOffset = distance * CGFloat(currentIndex)\n        titleScrollView.contentOffset = CGPoint(x: xOffset, y: 0)\n\n        pageControl.numberOfPages = childTitleLabels.count\n        pageControl.currentPage = currentIndex\n        let viewSize = pageControl.sizeForNumber(ofPages: childTitleLabels.count)\n        let originX = distance - viewSize.width / 2\n        pageControl.frame = CGRect(x: originX, y: navBarHeight - 10, width: viewSize.width, height: viewSize.height)\n    }\n\n    private func setAlphaWith(offset: CGFloat, andDistance distance: CGFloat) {\n        for (index, label) in childTitleLabels.enumerated() {\n            label.alpha = {\n                if offset < distance * CGFloat(index) {\n                    return (offset - distance * CGFloat(index - 1)) / distance\n                } else {\n                    return 1 - ((offset - distance * CGFloat(index)) / distance)\n                }\n            }()\n        }\n    }\n\n    private var distanceValue: CGFloat? {\n        return navigationController.map { $0.navigationBar.convert($0.navigationBar.center, to: titleView) }?.x\n    }\n}\n"
  },
  {
    "path": "Sources/XLPagerTabStrip/UIWindow+Pager.swift",
    "content": "//  TwitterPagerTabStripViewController.swift\n//  XLPagerTabStrip ( https://github.com/xmartlabs/XLPagerTabStrip )\n//\n//  Copyright (c) 2017 Xmartlabs ( http://xmartlabs.com )\n//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Foundation\nimport UIKit\n\nextension UIWindow {\n    static var isLandscape: Bool {\n        if #available(iOS 13.0, *) {\n            return UIApplication.shared.windows\n                .first?\n                .windowScene?\n                .interfaceOrientation\n                .isLandscape ?? false\n        } else {\n            return UIApplication.shared.statusBarOrientation.isLandscape\n        }\n    }\n    static var isPortrait: Bool {\n        if #available(iOS 13.0, *) {\n            return UIApplication.shared.windows\n                .first?\n                .windowScene?\n                .interfaceOrientation\n                .isPortrait ?? false\n        } else {\n            return UIApplication.shared.statusBarOrientation.isPortrait\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/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>BNDL</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</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/XLPagerTabStripTests.swift",
    "content": "//\n//  XLPagerTabStripTests.swift\n//  XLPagerTabStripTests\n//\n//  Copyright © 2016 Xmartlabs SRL. All rights reserved.\n//\n\nimport XCTest\n@testable import XLPagerTabStrip\n\nclass XLPagerTabStripTests: XCTestCase {\n\n    override func setUp() {\n        super.setUp()\n        // Put setup code here. This method is called before the invocation of each test method in the class.\n    }\n\n    override func tearDown() {\n        // Put teardown code here. This method is called after the invocation of each test method in the class.\n        super.tearDown()\n    }\n\n    func testExample() {\n        // This is an example of a functional test case.\n        // Use XCTAssert and related functions to verify your tests produce the correct results.\n    }\n\n    func testPerformanceExample() {\n        // This is an example of a performance test case.\n        self.measure {\n            // Put the code you want to measure the time of here.\n        }\n    }\n\n}\n"
  },
  {
    "path": "XLPagerTabStrip/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>9.0.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</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": "XLPagerTabStrip/XLPagerTabStrip.h",
    "content": "//\n//  XLPagerTabStrip.h\n//  XLPagerTabStrip\n//\n//  Copyright © 2016 Xmartlabs SRL. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n//! Project version number for XLPagerTabStrip.\nFOUNDATION_EXPORT double XLPagerTabStripVersionNumber;\n\n//! Project version string for XLPagerTabStrip.\nFOUNDATION_EXPORT const unsigned char XLPagerTabStripVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <XLPagerTabStrip/PublicHeader.h>\n\n#import \"FXPageControl.h\"\n\n"
  },
  {
    "path": "XLPagerTabStrip.podspec",
    "content": "Pod::Spec.new do |s|\n  s.name             = \"XLPagerTabStrip\"\n  s.version          = \"9.1.0\"\n  s.summary          = \"Android PagerTabStrip for iOS and much more.\"\n  s.homepage         = \"https://github.com/xmartlabs/XLPagerTabStrip\"\n  s.license          = { type: 'MIT', file: 'LICENSE' }\n  s.author           = { \"Martin Barreto\" => \"martin@xmartlabs.com\" }\n  s.source           = { git: \"https://github.com/xmartlabs/XLPagerTabStrip.git\", tag: s.version.to_s }\n  s.social_media_url = 'https://twitter.com/xmartlabs'\n  s.ios.deployment_target = '11.0'\n  s.requires_arc = true\n  s.ios.source_files = 'Sources/**/*.{swift}', 'ObjC/*.{h,m}'\n  s.ios.frameworks = 'UIKit', 'Foundation'\n  s.resource_bundles = { 'XLPagerTabStrip' => ['Sources/**/ButtonCell.xib'] }\n  s.swift_version = \"5.0\"\nend\n"
  },
  {
    "path": "XLPagerTabStrip.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 48;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t281BFDC11C511C420090C26F /* IndicatorInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 281BFDC01C511C420090C26F /* IndicatorInfo.swift */; };\n\t\t281BFDC31C511F120090C26F /* PagerTabStripBehaviour.swift in Sources */ = {isa = PBXBuildFile; fileRef = 281BFDC21C511F120090C26F /* PagerTabStripBehaviour.swift */; };\n\t\t287D0A6E1C4B73BD004566D6 /* XLPagerTabStripTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 287D0A6D1C4B73BD004566D6 /* XLPagerTabStripTests.swift */; };\n\t\t28C83C841C54229A000B2902 /* BaseButtonBarPagerTabStripViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28C83C831C54229A000B2902 /* BaseButtonBarPagerTabStripViewController.swift */; };\n\t\t28E098BE1C5002D90083B788 /* PagerTabStripError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28E098BD1C5002D90083B788 /* PagerTabStripError.swift */; };\n\t\t28E098C01C5003130083B788 /* SwipeDirection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28E098BF1C5003130083B788 /* SwipeDirection.swift */; };\n\t\t28F828811C494B2C00330CF4 /* XLPagerTabStrip.h in Headers */ = {isa = PBXBuildFile; fileRef = 28F828801C494B2C00330CF4 /* XLPagerTabStrip.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t28F828881C494B2C00330CF4 /* XLPagerTabStrip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28F8287D1C494B2C00330CF4 /* XLPagerTabStrip.framework */; };\n\t\t3174BB1228E2B81700847CF0 /* FXPageControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 3174BB1028E2B81700847CF0 /* FXPageControl.m */; };\n\t\t3174BB1328E2B81700847CF0 /* FXPageControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3174BB1128E2B81700847CF0 /* FXPageControl.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3174BB1828E2C46A00847CF0 /* ButtonCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3174BB1728E2C46A00847CF0 /* ButtonCell.xib */; };\n\t\tCB0986C41C51391600DF7087 /* ButtonBarPagerTabStripViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB0986C31C51391600DF7087 /* ButtonBarPagerTabStripViewController.swift */; };\n\t\tCB0986C61C51395E00DF7087 /* ButtonBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB0986C51C51395E00DF7087 /* ButtonBarView.swift */; };\n\t\tCB0986C81C5158A000DF7087 /* ButtonBarViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB0986C71C5158A000DF7087 /* ButtonBarViewCell.swift */; };\n\t\tCB71C6EE1C4EB988008EC806 /* SegmentedPagerTabStripViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB71C6ED1C4EB988008EC806 /* SegmentedPagerTabStripViewController.swift */; };\n\t\tCB86ED6B1C4D6E6C00DA463B /* PagerTabStripViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB86ED6A1C4D6E6C00DA463B /* PagerTabStripViewController.swift */; };\n\t\tCBA0A1FC1C502DA300C5748C /* BarPagerTabStripViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBA0A1FA1C502DA300C5748C /* BarPagerTabStripViewController.swift */; };\n\t\tCBA0A1FD1C502DA300C5748C /* BarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBA0A1FB1C502DA300C5748C /* BarView.swift */; };\n\t\tCBBD43621C527E80001A748E /* TwitterPagerTabStripViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBBD43611C527E80001A748E /* TwitterPagerTabStripViewController.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t28F828891C494B2C00330CF4 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 28F828741C494B2C00330CF4 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 28F8287C1C494B2C00330CF4;\n\t\t\tremoteInfo = XLPagerTabStrip;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t281BFDC01C511C420090C26F /* IndicatorInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IndicatorInfo.swift; sourceTree = \"<group>\"; };\n\t\t281BFDC21C511F120090C26F /* PagerTabStripBehaviour.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PagerTabStripBehaviour.swift; sourceTree = \"<group>\"; };\n\t\t287D0A6D1C4B73BD004566D6 /* XLPagerTabStripTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = XLPagerTabStripTests.swift; path = Tests/XLPagerTabStripTests.swift; sourceTree = SOURCE_ROOT; };\n\t\t28C83C831C54229A000B2902 /* BaseButtonBarPagerTabStripViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseButtonBarPagerTabStripViewController.swift; sourceTree = \"<group>\"; };\n\t\t28E098BD1C5002D90083B788 /* PagerTabStripError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PagerTabStripError.swift; sourceTree = \"<group>\"; };\n\t\t28E098BF1C5003130083B788 /* SwipeDirection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwipeDirection.swift; sourceTree = \"<group>\"; };\n\t\t28F8287D1C494B2C00330CF4 /* XLPagerTabStrip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = XLPagerTabStrip.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t28F828801C494B2C00330CF4 /* XLPagerTabStrip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XLPagerTabStrip.h; sourceTree = \"<group>\"; };\n\t\t28F828821C494B2C00330CF4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t28F828871C494B2C00330CF4 /* XLPagerTabStripTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = XLPagerTabStripTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t28F8288E1C494B2C00330CF4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t28F8289B1C494BF100330CF4 /* Playground.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Playground.playground; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\t3174BB1028E2B81700847CF0 /* FXPageControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FXPageControl.m; sourceTree = \"<group>\"; };\n\t\t3174BB1128E2B81700847CF0 /* FXPageControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FXPageControl.h; sourceTree = \"<group>\"; };\n\t\t3174BB1728E2C46A00847CF0 /* ButtonCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ButtonCell.xib; sourceTree = \"<group>\"; };\n\t\tCB0986C31C51391600DF7087 /* ButtonBarPagerTabStripViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonBarPagerTabStripViewController.swift; sourceTree = \"<group>\"; };\n\t\tCB0986C51C51395E00DF7087 /* ButtonBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonBarView.swift; sourceTree = \"<group>\"; };\n\t\tCB0986C71C5158A000DF7087 /* ButtonBarViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonBarViewCell.swift; sourceTree = \"<group>\"; };\n\t\tCB71C6ED1C4EB988008EC806 /* SegmentedPagerTabStripViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SegmentedPagerTabStripViewController.swift; sourceTree = \"<group>\"; };\n\t\tCB86ED6A1C4D6E6C00DA463B /* PagerTabStripViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = PagerTabStripViewController.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tCBA0A1FA1C502DA300C5748C /* BarPagerTabStripViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BarPagerTabStripViewController.swift; sourceTree = \"<group>\"; };\n\t\tCBA0A1FB1C502DA300C5748C /* BarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BarView.swift; sourceTree = \"<group>\"; };\n\t\tCBBD43611C527E80001A748E /* TwitterPagerTabStripViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TwitterPagerTabStripViewController.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t28F828791C494B2C00330CF4 /* 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\t28F828841C494B2C00330CF4 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t28F828881C494B2C00330CF4 /* XLPagerTabStrip.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\t281BFDBE1C511B890090C26F /* Views */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCBA0A1FB1C502DA300C5748C /* BarView.swift */,\n\t\t\t\tCB0986C51C51395E00DF7087 /* ButtonBarView.swift */,\n\t\t\t\tCB0986C71C5158A000DF7087 /* ButtonBarViewCell.swift */,\n\t\t\t);\n\t\t\tname = Views;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t281BFDBF1C511B9A0090C26F /* Controllers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCBA0A1FA1C502DA300C5748C /* BarPagerTabStripViewController.swift */,\n\t\t\t\tCB86ED6A1C4D6E6C00DA463B /* PagerTabStripViewController.swift */,\n\t\t\t\tCB71C6ED1C4EB988008EC806 /* SegmentedPagerTabStripViewController.swift */,\n\t\t\t\tCB0986C31C51391600DF7087 /* ButtonBarPagerTabStripViewController.swift */,\n\t\t\t\tCBBD43611C527E80001A748E /* TwitterPagerTabStripViewController.swift */,\n\t\t\t\t28C83C831C54229A000B2902 /* BaseButtonBarPagerTabStripViewController.swift */,\n\t\t\t);\n\t\t\tname = Controllers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t28F828731C494B2C00330CF4 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t28F8289B1C494BF100330CF4 /* Playground.playground */,\n\t\t\t\t28F828971C494B4200330CF4 /* Sources */,\n\t\t\t\t28F8287F1C494B2C00330CF4 /* XLPagerTabStrip */,\n\t\t\t\t28F8288B1C494B2C00330CF4 /* Tests */,\n\t\t\t\t28F8287E1C494B2C00330CF4 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t28F8287E1C494B2C00330CF4 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t28F8287D1C494B2C00330CF4 /* XLPagerTabStrip.framework */,\n\t\t\t\t28F828871C494B2C00330CF4 /* XLPagerTabStripTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t28F8287F1C494B2C00330CF4 /* XLPagerTabStrip */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t28F828801C494B2C00330CF4 /* XLPagerTabStrip.h */,\n\t\t\t\t28F828821C494B2C00330CF4 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = XLPagerTabStrip;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t28F8288B1C494B2C00330CF4 /* Tests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t28F8288E1C494B2C00330CF4 /* Info.plist */,\n\t\t\t\t287D0A6D1C4B73BD004566D6 /* XLPagerTabStripTests.swift */,\n\t\t\t);\n\t\t\tpath = Tests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t28F828971C494B4200330CF4 /* Sources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3174BB0F28E2B81700847CF0 /* ObjC */,\n\t\t\t\t3174BB1628E2C46A00847CF0 /* Resources */,\n\t\t\t\t281BFDBF1C511B9A0090C26F /* Controllers */,\n\t\t\t\t281BFDBE1C511B890090C26F /* Views */,\n\t\t\t\t28E098BD1C5002D90083B788 /* PagerTabStripError.swift */,\n\t\t\t\t28E098BF1C5003130083B788 /* SwipeDirection.swift */,\n\t\t\t\t281BFDC01C511C420090C26F /* IndicatorInfo.swift */,\n\t\t\t\t281BFDC21C511F120090C26F /* PagerTabStripBehaviour.swift */,\n\t\t\t);\n\t\t\tname = Sources;\n\t\t\tpath = Sources/XLPagerTabStrip;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3174BB0F28E2B81700847CF0 /* ObjC */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3174BB1028E2B81700847CF0 /* FXPageControl.m */,\n\t\t\t\t3174BB1128E2B81700847CF0 /* FXPageControl.h */,\n\t\t\t);\n\t\t\tpath = ObjC;\n\t\t\tsourceTree = SOURCE_ROOT;\n\t\t};\n\t\t3174BB1628E2C46A00847CF0 /* Resources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3174BB1728E2C46A00847CF0 /* ButtonCell.xib */,\n\t\t\t);\n\t\t\tname = Resources;\n\t\t\tpath = Sources/XLPagerTabStrip/Resources;\n\t\t\tsourceTree = SOURCE_ROOT;\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\t28F8287A1C494B2C00330CF4 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t28F828811C494B2C00330CF4 /* XLPagerTabStrip.h in Headers */,\n\t\t\t\t3174BB1328E2B81700847CF0 /* FXPageControl.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\t28F8287C1C494B2C00330CF4 /* XLPagerTabStrip */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 28F828911C494B2C00330CF4 /* Build configuration list for PBXNativeTarget \"XLPagerTabStrip\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t28F828781C494B2C00330CF4 /* Sources */,\n\t\t\t\t28F828791C494B2C00330CF4 /* Frameworks */,\n\t\t\t\t28F8287A1C494B2C00330CF4 /* Headers */,\n\t\t\t\t28F8287B1C494B2C00330CF4 /* Resources */,\n\t\t\t\tCB25B8F81EBCF0CE00FEB0A2 /* SwiftLint */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = XLPagerTabStrip;\n\t\t\tproductName = XLPagerTabStrip;\n\t\t\tproductReference = 28F8287D1C494B2C00330CF4 /* XLPagerTabStrip.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t28F828861C494B2C00330CF4 /* XLPagerTabStripTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 28F828941C494B2C00330CF4 /* Build configuration list for PBXNativeTarget \"XLPagerTabStripTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t28F828831C494B2C00330CF4 /* Sources */,\n\t\t\t\t28F828841C494B2C00330CF4 /* Frameworks */,\n\t\t\t\t28F828851C494B2C00330CF4 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t28F8288A1C494B2C00330CF4 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = XLPagerTabStripTests;\n\t\t\tproductName = XLPagerTabStripTests;\n\t\t\tproductReference = 28F828871C494B2C00330CF4 /* XLPagerTabStripTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t28F828741C494B2C00330CF4 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0720;\n\t\t\t\tLastUpgradeCheck = 1020;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t28F8287C1C494B2C00330CF4 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.2;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t\tProvisioningStyle = Manual;\n\t\t\t\t\t};\n\t\t\t\t\t28F828861C494B2C00330CF4 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.2;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 28F828771C494B2C00330CF4 /* Build configuration list for PBXProject \"XLPagerTabStrip\" */;\n\t\t\tcompatibilityVersion = \"Xcode 8.0\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\tEnglish,\n\t\t\t\ten,\n\t\t\t);\n\t\t\tmainGroup = 28F828731C494B2C00330CF4;\n\t\t\tproductRefGroup = 28F8287E1C494B2C00330CF4 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t28F8287C1C494B2C00330CF4 /* XLPagerTabStrip */,\n\t\t\t\t28F828861C494B2C00330CF4 /* XLPagerTabStripTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t28F8287B1C494B2C00330CF4 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3174BB1828E2C46A00847CF0 /* ButtonCell.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t28F828851C494B2C00330CF4 /* 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\tCB25B8F81EBCF0CE00FEB0A2 /* SwiftLint */ = {\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\tname = SwiftLint;\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"if which swiftlint >/dev/null; then\\n    swiftlint\\nelse\\n    echo \\\"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\\\"\\nfi\\n\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t28F828781C494B2C00330CF4 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t28C83C841C54229A000B2902 /* BaseButtonBarPagerTabStripViewController.swift in Sources */,\n\t\t\t\tCB0986C61C51395E00DF7087 /* ButtonBarView.swift in Sources */,\n\t\t\t\tCBBD43621C527E80001A748E /* TwitterPagerTabStripViewController.swift in Sources */,\n\t\t\t\tCBA0A1FD1C502DA300C5748C /* BarView.swift in Sources */,\n\t\t\t\t3174BB1228E2B81700847CF0 /* FXPageControl.m in Sources */,\n\t\t\t\t281BFDC31C511F120090C26F /* PagerTabStripBehaviour.swift in Sources */,\n\t\t\t\tCBA0A1FC1C502DA300C5748C /* BarPagerTabStripViewController.swift in Sources */,\n\t\t\t\tCB71C6EE1C4EB988008EC806 /* SegmentedPagerTabStripViewController.swift in Sources */,\n\t\t\t\t28E098BE1C5002D90083B788 /* PagerTabStripError.swift in Sources */,\n\t\t\t\t281BFDC11C511C420090C26F /* IndicatorInfo.swift in Sources */,\n\t\t\t\tCB86ED6B1C4D6E6C00DA463B /* PagerTabStripViewController.swift in Sources */,\n\t\t\t\t28E098C01C5003130083B788 /* SwipeDirection.swift in Sources */,\n\t\t\t\tCB0986C81C5158A000DF7087 /* ButtonBarViewCell.swift in Sources */,\n\t\t\t\tCB0986C41C51391600DF7087 /* ButtonBarPagerTabStripViewController.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t28F828831C494B2C00330CF4 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t287D0A6E1C4B73BD004566D6 /* XLPagerTabStripTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t28F8288A1C494B2C00330CF4 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 28F8287C1C494B2C00330CF4 /* XLPagerTabStrip */;\n\t\t\ttargetProxy = 28F828891C494B2C00330CF4 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\t28F8288F1C494B2C00330CF4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\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_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\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\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\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_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_AGGRESSIVE;\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 = 9.3;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\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\t28F828901C494B2C00330CF4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\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_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\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\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\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_AGGRESSIVE;\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 = 9.3;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\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\t28F828921C494B2C00330CF4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBITCODE_GENERATION_MODE = marker;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\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\tINFOPLIST_FILE = XLPagerTabStrip/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.XLPagerTabStrip;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t28F828931C494B2C00330CF4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBITCODE_GENERATION_MODE = bitcode;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\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\tINFOPLIST_FILE = XLPagerTabStrip/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.XLPagerTabStrip;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t28F828951C494B2C00330CF4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.XLPagerTabStripTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t28F828961C494B2C00330CF4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.XLPagerTabStripTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t28F828771C494B2C00330CF4 /* Build configuration list for PBXProject \"XLPagerTabStrip\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t28F8288F1C494B2C00330CF4 /* Debug */,\n\t\t\t\t28F828901C494B2C00330CF4 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t28F828911C494B2C00330CF4 /* Build configuration list for PBXNativeTarget \"XLPagerTabStrip\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t28F828921C494B2C00330CF4 /* Debug */,\n\t\t\t\t28F828931C494B2C00330CF4 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t28F828941C494B2C00330CF4 /* Build configuration list for PBXNativeTarget \"XLPagerTabStripTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t28F828951C494B2C00330CF4 /* Debug */,\n\t\t\t\t28F828961C494B2C00330CF4 /* 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 = 28F828741C494B2C00330CF4 /* Project object */;\n}\n"
  },
  {
    "path": "XLPagerTabStrip.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:XLPagerTabStrip.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "XLPagerTabStrip.xcodeproj/project.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": "XLPagerTabStrip.xcodeproj/xcshareddata/xcschemes/XLPagerTabStrip.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1400\"\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 = \"28F8287C1C494B2C00330CF4\"\n               BuildableName = \"XLPagerTabStrip.framework\"\n               BlueprintName = \"XLPagerTabStrip\"\n               ReferencedContainer = \"container:XLPagerTabStrip.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      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"28F8287C1C494B2C00330CF4\"\n            BuildableName = \"XLPagerTabStrip.framework\"\n            BlueprintName = \"XLPagerTabStrip\"\n            ReferencedContainer = \"container:XLPagerTabStrip.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"28F828861C494B2C00330CF4\"\n               BuildableName = \"XLPagerTabStripTests.xctest\"\n               BlueprintName = \"XLPagerTabStripTests\"\n               ReferencedContainer = \"container:XLPagerTabStrip.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\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 = \"28F8287C1C494B2C00330CF4\"\n            BuildableName = \"XLPagerTabStrip.framework\"\n            BlueprintName = \"XLPagerTabStrip\"\n            ReferencedContainer = \"container:XLPagerTabStrip.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 = \"28F8287C1C494B2C00330CF4\"\n            BuildableName = \"XLPagerTabStrip.framework\"\n            BlueprintName = \"XLPagerTabStrip\"\n            ReferencedContainer = \"container:XLPagerTabStrip.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": "XLPagerTabStrip.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"container:XLPagerTabStrip.xcodeproj\">\n   </FileRef>\n   <FileRef\n      location = \"group:Example.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "XLPagerTabStrip.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"
  }
]