[
  {
    "path": ".gitignore",
    "content": "# Created by https://www.gitignore.io\n\n### OSX ###\n.DS_Store\n.AppleDouble\n.LSOverride\n\n# Icon must end with two \\r\nIcon\n\n\n# Thumbnails\n._*\n\n# Files that might appear on external disk\n.Spotlight-V100\n.Trashes\n\n# Directories potentially created on remote AFP share\n.AppleDB\n.AppleDesktop\nNetwork Trash Folder\nTemporary Items\n.apdisk\n\n\n### Xcode ###\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.xcuserstate\n\n\n### Objective-C ###\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\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# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control\n#\n*.xcworkspace/\nPods/"
  },
  {
    "path": "Podfile",
    "content": "# Uncomment this line to define a global platform for your project\n# platform :ios, '8.0'\ninhibit_all_warnings!\n\nsource 'https://github.com/danylokostyshyn/private-podspecs.git'\nsource 'https://github.com/CocoaPods/Specs'\n\ntarget 'PopcornTime' do\n\npod 'private-MobileVLCKit'\npod 'private-boost'\npod 'private-libtorrent'\npod 'private-openssl'\npod 'Reachability'\npod 'CocoaSecurity'\npod 'SDWebImage'\n\npod 'Crashlytics'\npod 'Fabric'\n\nend\n"
  },
  {
    "path": "PopcornTime/Controllers/AnimeDetailsViewController.swift",
    "content": "//\n//  ShowDetailsViewController.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/13/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass AnimeDetailsViewController: BaseDetailsViewController {\n    \n    var anime: Anime! {\n        get {\n            return self.item as! Anime\n        }\n    }\n    // MARK: - UIViewController\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        preferedOtherHeadersHeight = 0.0\n    }\n    \n    // MARK: - BaseDetailsViewController\n    \n    override func reloadData() {\n        PTAPIManager.shared().showInfo(with: .anime, withId: item.identifier, success: { (item) -> Void in\n            guard let item = item else { return }\n            self.anime.update(item)\n            self.collectionView?.reloadData()\n            }, failure: nil)\n    }\n    \n    // MARK: - DetailViewControllerDataSource\n    override func numberOfSeasons() -> Int {\n        return anime.seasons.count\n    }\n    \n    override func numberOfEpisodesInSeason(_ seasonsIndex: Int) -> Int {\n        return anime.seasons[seasonsIndex].episodes.count\n    }\n    \n    override func setupCell(_ cell: EpisodeCell, seasonIndex: Int, episodeIndex: Int) {\n        let episode = anime.seasons[seasonIndex].episodes[episodeIndex]\n        cell.titleLabel.text = \"\\(episode.episodeNumber)\"\n    }\n    \n    override func setupSeasonHeader(_ header: SeasonHeader, seasonIndex: Int) {\n        \n    }\n    \n    override func cellWasPressed(_ cell: UICollectionViewCell, seasonIndex: Int, episodeIndex: Int) {\n        let episode = anime.seasons[seasonIndex].episodes[episodeIndex]\n        showVideoPickerPopupForEpisode(episode, basicInfo: self.item, fromView: cell)\n    }\n    \n    override func cellWasLongPressed(_ cell: UICollectionViewCell, seasonIndex: Int, episodeIndex: Int) {\n//        let episode = anime.episodeFor(seasonIndex: seasonIndex, episodeIndex: episodeIndex)\n//        let seasonEpisodes = anime.episodesFor(seasonIndex: seasonIndex)\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Controllers/AnimeViewController.swift",
    "content": "//\n//  MoviesViewController.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/15/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass AnimeViewController: PagedViewController {\n\n    override var showType: PTItemType {\n        get {\n            return .anime\n        }\n    }\n\n    override func map(_ response: [AnyObject]) -> [BasicInfo] {\n        return response.map({ Anime(dictionary: $0 as! [AnyHashable: Any]) })\n    }\n\n    func collectionView(_ collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: IndexPath) {\n        \n        if let cell = collectionView.cellForItem(at: indexPath){\n            //Check if cell is MoreShowsCell\n            if let _ = cell as? MoreShowsCollectionViewCell{\n                loadMore()\n            } else {\n                performSegue(withIdentifier: \"showDetails\", sender: cell)\n            }\n        }\n    }\n    \n    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {\n        super.prepare(for: segue, sender: sender)\n        \n        if segue.identifier == \"showDetails\"{\n            if let episodesVC = segue.destination as? AnimeDetailsViewController{\n                if let senderCell = sender as? UICollectionViewCell{\n                    if let indexPath = collectionView!.indexPath(for: senderCell){\n                        var item: BasicInfo!\n                        if (searchController!.isActive) {\n                            item = searchResults[indexPath.row]\n                        } else {\n                            item = items[indexPath.row]\n                        }\n                        episodesVC.item = item as! Anime\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Controllers/BarHidingViewController.swift",
    "content": "//\n//  BarHidingViewController.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/13/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass BarHidingViewController: UIViewController {\n\n    fileprivate var barsVisible:Bool = true {\n        willSet {\n            self.tabBarController?.tabBar.isHidden = !newValue\n            self.navigationController?.navigationBar.isHidden = !newValue\n            UIApplication.shared.setStatusBarHidden(!newValue, with: .fade)\n        }\n    }\n    \n    override func viewWillLayoutSubviews() {\n        super.viewWillLayoutSubviews()\n        //Hide bars if needed\n        let sizeClass = (horizontal: self.view.traitCollection.horizontalSizeClass, vertical: self.view.traitCollection.verticalSizeClass)\n        switch sizeClass{\n        case (_,.compact):\n            self.barsVisible = false\n        default: self.barsVisible = true\n        }\n    }\n\n}\n"
  },
  {
    "path": "PopcornTime/Controllers/BaseCollectionViewController.swift",
    "content": "//\n//  ShowsCollectionViewController.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/8/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nlet reuseIdentifierShow = \"ShowCell\"\nlet reuseIdentifierMore = \"MoreShowsCell\"\n\n///Base class for displaying collection of shows, subclass MUST override reloadData() and set self.shows in it\nclass BaseCollectionViewController: BarHidingViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, UICollectionViewDelegate {\n    \n    fileprivate struct Constants{\n        static let desirediPadCellWidth = 160\n        static let desirediPadCellHeight = 205\n        static let numberOfLinesiPhonePortrait = 2\n        static let numberOfItemsiPhonePortrait = 2\n        static let numberOfLinesiPhoneLandscape = 2\n        static let numberOfItemsiPhoneLandscape = 5\n    }\n    \n    var items = [BasicInfo]()\n    var showLoadMoreCell = false\n    \n    \n    @IBOutlet weak var collectionView: UICollectionView!{\n        didSet{\n            collectionView.alwaysBounceVertical = true\n            collectionView.dataSource = self\n            collectionView.delegate = self\n        }\n    }\n    @IBOutlet weak var collectionViewLayout: UICollectionViewFlowLayout!\n    \n    // MARK: UIViewController\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        self.collectionView!.register(UINib(nibName: \"ShowCollectionViewCell\", bundle: nil), forCellWithReuseIdentifier: reuseIdentifierShow)\n        self.collectionView!.register(UINib(nibName: \"MoreShowsCollectionViewCell\", bundle: nil), forCellWithReuseIdentifier: reuseIdentifierMore)\n        self.collectionView?.delegate = self\n        self.collectionView?.collectionViewLayout.invalidateLayout()\n        \n        self.reloadData()\n    }\n    \n    // MARK: UICollectionViewDataSource\n    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {\n        let additionalCellsCount = self.showLoadMoreCell ? 1 : 0\n        return (items.count + additionalCellsCount)\n    }\n    \n    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {\n        \n        if (self.showLoadMoreCell && indexPath.row == items.count) {\n            //Last cell\n            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifierMore, for: indexPath) as! MoreShowsCollectionViewCell\n            return cell\n        } else {\n            //Ordinary show cell\n            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifierShow, for: indexPath) as! ShowCollectionViewCell\n            \n            let item = items[indexPath.row]\n            cell.title = item.title\n            \n            let imageItem = item.smallImage\n            switch imageItem?.status {\n            case .new?:\n                imageItem?.status = .downloading\n                ImageProvider.sharedInstance.imageFromURL(URL: imageItem?.URL) { (downloadedImage) -> () in\n                    imageItem?.image = downloadedImage\n                    imageItem?.status = .finished\n                    \n                    collectionView.reloadItems(at: [indexPath])\n                }\n            case .finished?:\n                cell.image = imageItem?.image\n            default: break\n            }\n\n            return cell\n        }\n    }\n\n    // MARK: UICollectionViewDelegateFlowLayout & UICollectionViewDelegate\n    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {\n        \n        let visibleAreaHeight = collectionView.bounds.height - navigationController!.navigationBar.bounds.height - UIApplication.shared.statusBarFrame.height - self.tabBarController!.tabBar.bounds.height\n        let visibleAreaWidth = collectionView.bounds.width\n        \n        //Set cell size based on size class.\n        let sizeClass = (horizontal: self.view.traitCollection.horizontalSizeClass, vertical: self.view.traitCollection.verticalSizeClass)\n        \n        if let flowLayout = collectionViewLayout as? UICollectionViewFlowLayout{\n            switch sizeClass{\n            case (.compact,.regular):\n                //iPhone portrait\n                let cellWidth = ((visibleAreaWidth - CGFloat(Constants.numberOfItemsiPhonePortrait - 1)*flowLayout.minimumInteritemSpacing - flowLayout.sectionInset.top - flowLayout.sectionInset.bottom)/CGFloat(Constants.numberOfItemsiPhonePortrait))\n                let cellHeight = ((visibleAreaHeight - CGFloat(Constants.numberOfLinesiPhonePortrait - 1)*flowLayout.minimumLineSpacing - flowLayout.sectionInset.left - flowLayout.sectionInset.right)/CGFloat(Constants.numberOfLinesiPhonePortrait))\n                return CGSize(width: cellWidth, height: cellHeight)\n            case (_,.compact):\n                //iPhone landscape\n                let cellWidth = ((collectionView.bounds.width - CGFloat(Constants.numberOfItemsiPhoneLandscape - 1)*flowLayout.minimumInteritemSpacing - flowLayout.sectionInset.top - flowLayout.sectionInset.bottom)/CGFloat(Constants.numberOfItemsiPhoneLandscape))\n                let cellHeight = ((collectionView.bounds.height - CGFloat(Constants.numberOfLinesiPhoneLandscape - 1)*flowLayout.minimumLineSpacing - flowLayout.sectionInset.left - flowLayout.sectionInset.right)/CGFloat(Constants.numberOfLinesiPhoneLandscape))\n                return CGSize(width: cellWidth, height: cellHeight)\n            case (_,_):\n                // iPad. Calculate cell size based on desired size\n                let numberOfLines = Int(visibleAreaHeight) / Constants.desirediPadCellHeight\n                let betweenLinesSpaceSum = CGFloat(numberOfLines - 1) * flowLayout.minimumLineSpacing\n                let sectionInsetsVerticalSum = flowLayout.sectionInset.top + flowLayout.sectionInset.bottom\n                \n                let adjustedHeight = (visibleAreaHeight - betweenLinesSpaceSum  - sectionInsetsVerticalSum)/CGFloat(numberOfLines)\n                let adjustedWidth = adjustedHeight * CGFloat(Constants.desirediPadCellWidth) / CGFloat(Constants.desirediPadCellHeight)\n                \n                return CGSize(width: adjustedWidth, height: adjustedHeight)\n            }\n        }\n        \n        return CGSize(width: 50, height: 50)\n    }\n    \n    // MARK: - ShowsCollectionViewController\n    func reloadData(){\n        assert(true, \"Sublcass MUST override this method\")\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Controllers/BaseDetailsViewController.swift",
    "content": "//\n//  BaseDetailsViewController.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/21/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\n/// With this protocol we encapsulate calls of collectionView indexPathes. For now we have one extra section at the top (empty one with stratchy header), this way if anything changes here we will change all logic here, and all users of this protocol will not have to hcange anything. So it's a good idea to use seasonIndex, episodeIndex instead of indexPathes.\nprotocol DetailViewControllerDataSource {\n    func numberOfSeasons() -> Int\n    func numberOfEpisodesInSeason(_ seasonsIndex: Int) -> Int\n    func setupCell(_ cell: EpisodeCell, seasonIndex: Int, episodeIndex: Int)\n    func setupSeasonHeader(_ header: SeasonHeader, seasonIndex: Int)\n    func cellWasPressed(_ cell: UICollectionViewCell, seasonIndex: Int, episodeIndex: Int)\n    func cellWasLongPressed(_ cell: UICollectionViewCell, seasonIndex: Int, episodeIndex: Int)\n}\n\nclass BaseDetailsViewController: BarHidingViewController, VDLPlaybackViewControllerDelegate, LoadingViewControllerDelegate, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, DetailViewControllerDataSource {\n    \n    // MARK: - Header related\n    let headerMinAspectRatio: CGFloat = 0.4\n    let headerWidthToCollectionWidthKoef: CGFloat = 0.3\n    var header: StratchyHeader?\n    \n    var preferedOtherHeadersHeight: CGFloat = 35\n    \n    var headerSize: CGSize {\n        let width = collectionView.bounds.size.width\n        let minHeight = width * headerMinAspectRatio\n        var height = collectionView.bounds.size.height * headerWidthToCollectionWidthKoef\n        height = max(height, minHeight)\n        return CGSize(width: width, height: height)\n    }\n    \n    // MARK: -\n    let cellReuseIdentifier = \"EpisodeCell\"\n    let firstHeaderReuseIdentifier = \"StratchyHeader\"\n    let otherHeadersReuseIdentifier = \"OtherHeader\"\n    let episodeCellReuseIdentifier = \"EpisodeCell\"\n    \n    var layout: StratchyHeaderLayout?\n\n    var item: BasicInfo! {\n        didSet {\n            navigationItem.title = item.title\n            reloadData()\n        }\n    }\n\n    @IBOutlet weak var collectionView: UICollectionView!{\n        didSet{\n            collectionView.alwaysBounceVertical = true\n            collectionView.dataSource = self\n            collectionView.delegate = self\n            collectionView.register(UINib(nibName: \"StratchyHeader\", bundle: nil), forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: firstHeaderReuseIdentifier)\n            collectionView.register(UINib(nibName: \"SeasonHeader\", bundle: nil), forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: otherHeadersReuseIdentifier)\n            collectionView.register(UINib(nibName: \"EpisodeCell\", bundle: nil), forCellWithReuseIdentifier: episodeCellReuseIdentifier)\n            layout = collectionView.collectionViewLayout as? StratchyHeaderLayout\n        }\n    }\n    \n    // MARK: - View Life Cycle\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        configureFavoriteBarButton()\n        \n        let longPress = UILongPressGestureRecognizer(target: self, action: #selector(BaseDetailsViewController.longPress(_:)))\n        longPress.minimumPressDuration = 0.5\n        longPress.delaysTouchesBegan = true\n        collectionView.addGestureRecognizer(longPress)\n    }\n    \n    final func longPress(_ gesture: UILongPressGestureRecognizer) {\n        if gesture.state == .ended {\n            return\n        }\n        let p = gesture.location(in: collectionView)\n        if let indexPath = collectionView.indexPathForItem(at: p) {\n            if let cell = collectionView.cellForItem(at: indexPath) {\n                cellWasLongPressed(cell, seasonIndex: indexPath.section - 1, episodeIndex: indexPath.item)\n            }\n        }\n    }\n    \n    func configureFavoriteBarButton() {\n        if (item.isFavorite) {\n            self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage.removeFromFavoritesImage(),\n                style: .done, target: self, action: #selector(BaseDetailsViewController.removeFromFavorites))\n        } else {\n            self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage.addToFavoritesImage(),\n                style: .done, target: self, action: #selector(BaseDetailsViewController.addToFavorites))\n        }\n    }\n    \n    override func viewDidLayoutSubviews() {\n        super.viewDidLayoutSubviews()\n        \n        // update header size\n        header?.headerSize = headerSize\n        layout?.headerSize = headerSize\n    }\n\n    // MARK: - Favorites\n    func addToFavorites() {\n        DataManager.sharedManager().addToFavorites(item)\n        configureFavoriteBarButton()\n    }\n    \n    func removeFromFavorites() {\n        DataManager.sharedManager().removeFromFavorites(item)\n        configureFavoriteBarButton()\n    }\n    \n    // MARK: - BaseDetailsViewController\n    func reloadData() {\n        \n    }\n    \n    func startPlayback(_ episode: Episode, basicInfo: BasicInfo, magnetLink: String, loadingTitle: String) {\n            \n        let loadingVC = self.storyboard?.instantiateViewController(withIdentifier: \"loadingViewController\") as! LoadingViewController\n        loadingVC.delegate = self\n        loadingVC.status = \"Downloading...\"\n        loadingVC.loadingTitle = loadingTitle\n        loadingVC.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext\n        self.tabBarController?.present(loadingVC, animated: true, completion: nil)\n        \n        PTTorrentStreamer.shared().startStreaming(fromFileOrMagnetLink: magnetLink, progress: { (status) -> Void in\n            \n            loadingVC.progress = status.bufferingProgress\n            loadingVC.speed = Int(status.downloadSpeed)\n            loadingVC.seeds = Int(status.seeds)\n            loadingVC.peers = Int(status.peers)\n            \n            }, readyToPlay: { (url) -> Void in\n                loadingVC.dismiss(animated: false, completion: nil)\n                \n                let vdl = VDLPlaybackViewController(nibName: \"VDLPlaybackViewController\", bundle: nil)\n                vdl.delegate = self\n                self.navigationController?.present(vdl, animated: true, completion: nil)\n                vdl.playMedia(from: url)\n                \n            }, failure: { (error) -> Void in\n                loadingVC.dismiss(animated: true, completion: nil)\n        })\n    }\n\n    // MARK: - VDLPlaybackViewControllerDelegate\n    \n    func playbackControllerDidFinishPlayback(_ playbackController: VDLPlaybackViewController!) {\n        self.navigationController?.dismiss(animated: true, completion: nil)\n        PTTorrentStreamer.shared().cancelStreaming()\n    }\n    \n    // MARK: - LoadingViewControllerDelegate\n    \n    func didCancelLoading(_ controller: LoadingViewController) {\n        PTTorrentStreamer.shared().cancelStreaming()\n        controller.dismiss(animated: true, completion: nil)\n    }\n    \n    // MARK: - UICollectionViewDataSource\n    \n    final func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {\n        switch section {\n        case 0: return 0\n        default:\n            let seasonIndex = section - 1\n            return self.numberOfEpisodesInSeason(seasonIndex)\n        }\n    }\n    \n    final func numberOfSections(in collectionView: UICollectionView) -> Int {\n        return self.numberOfSeasons() + 1 // extra section for header\n    }\n    \n    final func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {\n        let seasonIndex = indexPath.section - 1\n        let episode = indexPath.item\n        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellReuseIdentifier, for: indexPath) as! EpisodeCell\n        self.setupCell(cell, seasonIndex: seasonIndex, episodeIndex: episode)\n        return cell\n    }\n    \n    final func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {\n        switch section {\n        case 0: return headerSize\n        default : return CGSize(width: collectionView.bounds.width, height: preferedOtherHeadersHeight)\n        }\n    }\n    \n    func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {\n        if indexPath.section == 0 {\n            if (header == nil){\n                header = (collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: firstHeaderReuseIdentifier, for: indexPath) as! StratchyHeader)\n                header?.delegate = layout\n\n                if let image = item.bigImage?.image {\n                    header?.image = image\n                } else {\n                    ImageProvider.sharedInstance.imageFromURL(URL: item.bigImage?.URL) { (downloadedImage) -> () in\n                        self.item.bigImage?.image = downloadedImage\n                        self.header?.image = downloadedImage\n                    }\n                }\n                \n                if let image = item.smallImage?.image {\n                    header?.foregroundImage.image = image\n                } else {\n                    ImageProvider.sharedInstance.imageFromURL(URL: item.smallImage?.URL) { (downloadedImage) -> () in\n                        self.item.smallImage?.image = downloadedImage\n                        self.header?.foregroundImage.image = downloadedImage\n                    }\n                }\n            }\n            header!.synopsisTextView.text = item.synopsis\n            return header!\n        } else {\n            let otherHeader = (collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: otherHeadersReuseIdentifier, for: indexPath) as! SeasonHeader)\n            let seasonIndex = (indexPath.section - 1)\n            self.setupSeasonHeader(otherHeader, seasonIndex: seasonIndex)\n            return otherHeader\n        }\n    }\n    \n    // MARK: - UICollectionViewDelegate\n    \n    final func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {\n        if let cell = collectionView.cellForItem(at: indexPath) {\n            cellWasPressed(cell, seasonIndex: indexPath.section - 1, episodeIndex: indexPath.item)\n        }\n    }\n    \n    func showVideoPickerPopupForEpisode(_ episode: Episode, basicInfo: BasicInfo, fromView view: UIView) {\n        let videos = episode.videos\n        if (videos.count > 0) {\n            \n            let actionSheetController = UIAlertController(title: episode.title, message: episode.desc, preferredStyle: UIAlertControllerStyle.actionSheet)\n            \n            let cancelAction = UIAlertAction(title: \"Cancel\", style: .cancel, handler: nil)\n            actionSheetController.addAction(cancelAction)\n            \n            for video in videos {\n                var title = \"\"\n                if let subGroup = video.subGroup {\n                    title += \"[\\(subGroup)] \"\n                }\n                if let quality = video.quality {\n                    title += quality\n                }\n                \n                let action = UIAlertAction(title: title, style: UIAlertActionStyle.default, handler: { (action) -> Void in\n                    let magnetLink = video.magnetLink\n                    let episodeTitle = episode.title ?? \"\"\n                    let loadingTitle = \"\\(episodeTitle) - \\(title)\"\n                    self.startPlayback(episode, basicInfo: basicInfo , magnetLink: magnetLink, loadingTitle: loadingTitle)\n                })\n                \n                actionSheetController.addAction(action)\n            }\n            \n            let popOver = actionSheetController.popoverPresentationController\n            popOver?.sourceView  = view\n            popOver?.sourceRect = view.bounds\n            popOver?.permittedArrowDirections = UIPopoverArrowDirection.any\n          \n            self.present(actionSheetController, animated: true, completion: nil)\n        }\n    }\n    \n    // MARK: - DetailViewControllerDataSource\n    func numberOfSeasons() -> Int {\n        assertionFailure(\"Should be overriden by subclass\")\n        return 0\n    }\n    \n    func numberOfEpisodesInSeason(_ seasonsIndex: Int) -> Int {\n        assertionFailure(\"Should be overriden by subclass\")\n        return 0\n    }\n    \n    func setupCell(_ cell: EpisodeCell, seasonIndex: Int, episodeIndex: Int) {\n        assertionFailure(\"Should be overriden by subclass\")\n    }\n    \n    func setupSeasonHeader(_ header: SeasonHeader, seasonIndex: Int) {\n        assertionFailure(\"Should be overriden by subclass\")\n    }\n    \n    func cellWasPressed(_ cell: UICollectionViewCell, seasonIndex: Int, episodeIndex: Int) {\n        assertionFailure(\"Should be overriden by subclass\")\n    }\n    \n    func cellWasLongPressed(_ cell: UICollectionViewCell, seasonIndex: Int, episodeIndex: Int) {\n        \n    }\n}\n"
  },
  {
    "path": "PopcornTime/Controllers/ColorfullTabBarController.swift",
    "content": "//\n//  ColorfullTabBarController.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 4/10/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\n\nclass ColorfullTabBarController: UITabBarController, UITabBarControllerDelegate {\n    \n    fileprivate struct ColorConstants {\n        static let favoritesTintColor = UIColor(red: 235/255, green: 66/255, blue: 69/255, alpha: 1.0)\n        static let moviesTintColor = UIColor(red: 66/255, green: 166/255, blue: 235/255, alpha: 1.0)\n        static let showsTintColor = UIColor(red: 33/255, green: 181/255, blue: 42/255, alpha: 1.0)\n        static let animeTintColor = UIColor(red: 235/255, green: 66/255, blue: 164/255, alpha: 1.0)\n    }\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        self.delegate = self\n    }\n    \n    deinit {\n        NotificationCenter.default.removeObserver(self)\n    }\n    \n    override func viewWillAppear(_ animated: Bool) {\n        super.viewWillAppear(animated)\n        assignColors()\n    }\n    \n    override func viewDidAppear(_ animated: Bool) {\n        super.viewDidAppear(animated)\n        assignColors()\n    }\n    \n    fileprivate func assignColors() {\n        switch selectedIndex {\n        case 0: view.window?.tintColor = ColorConstants.favoritesTintColor\n        case 1: view.window?.tintColor = ColorConstants.moviesTintColor\n        case 2: view.window?.tintColor = ColorConstants.showsTintColor\n        case 3: view.window?.tintColor = ColorConstants.animeTintColor\n        default: break\n        }\n    }\n    \n    \n    // MARK: - UITabBarControllerDelegate\n    \n    func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {\n        self.assignColors()\n    }\n    \n    \n}\n"
  },
  {
    "path": "PopcornTime/Controllers/FavoritesViewController.swift",
    "content": "//\n//  FavoritesViewController.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/13/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass FavoritesViewController: PagedViewController {\n\n    override func reloadData() {\n        if let favoriteItems = DataManager.sharedManager().favorites {\n            self.items = favoriteItems\n            self.collectionView?.reloadData()\n        }\n        \n    }\n    \n    override func loadMore() {\n\n    }\n    \n    // MARK: View Life Cycle\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        // No search in favorites\n        self.searchController = nil\n        self.navigationItem.titleView = nil\n\n        NotificationCenter.default.addObserver(\n            self,\n            selector: #selector(FavoritesViewController.favoritesDidChange(_:)),\n            name: NSNotification.Name(rawValue: Notifications.FavoritesDidChangeNotification),\n            object: nil\n        )\n    }\n    \n    deinit {\n        NotificationCenter.default.removeObserver(self)\n    }\n    \n    \n    // MARK: - Navigation\n\n    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {\n        \n        if let item = sender as? BasicInfo {\n            \n            if let episodesVC = segue.destination as? BaseDetailsViewController {\n                switch item {\n                case item as Anime:\n                    episodesVC.item = item as! Anime\n                case item as Show:\n                    episodesVC.item = item as! Show\n                case item as Movie:\n                    episodesVC.item = item as! Movie\n                default:\n                    break\n                }\n            }\n        }\n    }\n    \n    // MARK: - Notifications\n    \n    func favoritesDidChange(_ notification: Notification) {\n        self.reloadData()\n    }\n    \n    // MARK: - UICollectionViewDelegate\n    \n    func collectionView(_ collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: IndexPath) {\n        \n        let item = self.items[indexPath.row]\n        \n        switch item {\n        case item as Anime:\n            performSegue(withIdentifier: \"showDetailsForFavoriteAnime\", sender: item)\n        case item as Show:\n            performSegue(withIdentifier: \"showDetailsForFavoriteShow\", sender: item)\n        case item as Movie:\n            performSegue(withIdentifier: \"showDetailsForFavoriteMovie\", sender: item)\n        default:\n            break\n        }\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Controllers/LoadingViewController.swift",
    "content": "//\n//  LoadingViewController.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/15/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nprotocol LoadingViewControllerDelegate {\n    func didCancelLoading(_ controller: LoadingViewController)\n}\n\nclass LoadingViewController: UIViewController {\n\n    var delegate: LoadingViewControllerDelegate?\n    \n    @IBOutlet fileprivate weak var statusLabel: UILabel!\n    @IBOutlet fileprivate weak var progressLabel: UILabel!\n    @IBOutlet fileprivate weak var progressView: UIProgressView!\n    @IBOutlet fileprivate weak var speedLabel: UILabel!\n    @IBOutlet fileprivate weak var seedsLabel: UILabel!\n    @IBOutlet fileprivate weak var peersLabel: UILabel!\n    @IBOutlet fileprivate weak var titleLabel: UILabel!\n    \n    var status: String? = nil {\n        didSet {\n            if let status = status {\n                statusLabel?.text = status\n            }\n        }\n    }\n    \n    var progress: Float = 0.0 {\n        didSet {\n            progressView.progress = progress\n            progressLabel.text = String(format: \"%.0f%%\", progress*100)\n        }\n    }\n    \n    var speed: Int = 0 { // bytes/s\n        didSet {\n            let formattedSpeed = ByteCountFormatter.string(fromByteCount: Int64(speed), countStyle: .binary) + \"/s\"\n            speedLabel.text = String(format:\"Speed: %@\", formattedSpeed)\n        }\n    }\n    \n    var seeds: Int = 0 {\n        didSet {\n            seedsLabel.text = String(format: \"Seeds: %d\", seeds)\n        }\n    }\n    \n    var peers: Int = 0 {\n        didSet {\n            peersLabel.text = String(format: \"Peers: %d\", peers)\n        }\n    }\n    \n    var loadingTitle: String? = nil {\n        didSet {\n            if let title = loadingTitle {\n                titleLabel?.text = title\n            }\n        }\n    }\n\n    // MARK: - View Life Cycle\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        titleLabel?.text = loadingTitle\n        status = \"Loading...\"\n        progress =  0.0\n        speed = 0\n        seeds = 0\n        peers = 0\n        \n        UIApplication.shared.isIdleTimerDisabled = true;\n    }\n    \n    override func viewDidDisappear(_ animated: Bool) {\n        super.viewDidLoad()\n        \n        UIApplication.shared.isIdleTimerDisabled = false;\n    }\n\n    // MARK: - Actions\n\n    @IBAction fileprivate func cancelButtonPressed(_ sender: AnyObject) {\n        delegate?.didCancelLoading(self)\n    }\n    \n}\n"
  },
  {
    "path": "PopcornTime/Controllers/MovieDetailsViewController.swift",
    "content": "//\n//  ShowDetailsViewController.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/13/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass MovieDetailsViewController: BaseDetailsViewController {\n    \n    var movie: Movie! {\n        get {\n            return self.item as! Movie\n        }\n    }\n    \n    // MARK: - UIViewController\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        preferedOtherHeadersHeight = 0.0\n    }\n    \n    // MARK: - BaseDetailsViewController\n    \n    override func reloadData() {\n        PTAPIManager.shared().showInfo(with: .movie, withId: item.identifier, success: { (item) -> Void in\n            guard let item = item else { return }\n            self.movie.update(item)\n            self.collectionView?.reloadData()\n            }, failure: nil)\n    }\n    \n    // MARK: - DetailViewControllerDataSource\n    override func numberOfSeasons() -> Int {\n        return 1\n    }\n    \n    override func numberOfEpisodesInSeason(_ seasonsIndex: Int) -> Int {\n        return movie.videos.count\n    }\n    \n    override func setupCell(_ cell: EpisodeCell, seasonIndex: Int, episodeIndex: Int) {\n        let video = movie.videos[episodeIndex]\n        var title = \"\"\n        if let quality = video.quality {\n            title += quality + \" \"\n        }\n        if let name = video.name {\n            title += name\n        }\n        cell.titleLabel.text = title\n    }\n    \n    override func setupSeasonHeader(_ header: SeasonHeader, seasonIndex: Int) {\n    }\n    \n    override func cellWasPressed(_ cell: UICollectionViewCell, seasonIndex: Int, episodeIndex: Int) {\n        let video = movie.videos[episodeIndex]\n        let magnetLink = video.magnetLink\n        let title = movie.title ?? \"\"\n        let fakeEpisode = Episode(title: title, desc: \"\", seasonNumber: 0, episodeNumber: 0, videos: [Video]())\n        startPlayback(fakeEpisode, basicInfo: movie, magnetLink: magnetLink, loadingTitle: title)\n    }\n    \n}\n"
  },
  {
    "path": "PopcornTime/Controllers/MoviesViewController.swift",
    "content": "//\n//  MoviesViewController.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/19/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass MoviesViewController: PagedViewController {\n    \n    override var showType: PTItemType {\n        get {\n            return .movie\n        }\n    }\n\n    override func map(_ response: [AnyObject]) -> [BasicInfo] {\n        let items = response.map({ Movie(dictionary: $0 as! [AnyHashable: Any]) }) as [BasicInfo]\n        return items\n    }\n\n    func collectionView(_ collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: IndexPath) {\n        \n        if let cell = collectionView.cellForItem(at: indexPath){\n            //Check if cell is MoreShowsCell\n            if let _ = cell as? MoreShowsCollectionViewCell{\n                loadMore()\n            } else {\n                performSegue(withIdentifier: \"showDetails\", sender: cell)\n            }\n        }\n    }\n    \n    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {\n        super.prepare(for: segue, sender: sender)\n        \n        if segue.identifier == \"showDetails\"{\n            if let episodesVC = segue.destination as? MovieDetailsViewController{\n                if let senderCell = sender as? UICollectionViewCell{\n                    if let indexPath = collectionView!.indexPath(for: senderCell) {\n                        var item: BasicInfo!\n                        if (searchController!.isActive) {\n                            item = searchResults[indexPath.row]\n                        } else {\n                            item = items[indexPath.row]\n                        }\n                        episodesVC.item = item as! Movie\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Controllers/OAuthViewController.swift",
    "content": "//\n//  WebViewController.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/15/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nprotocol OAuthViewControllerDelegate {\n    func oauthViewControllerDidFinish(_ controller: OAuthViewController, token: String?, error: NSError?)\n}\n\nclass OAuthViewController: UIViewController, UIWebViewDelegate {\n\n    @IBOutlet weak var webView: UIWebView!\n    @IBOutlet weak var navigationBar: UINavigationBar!\n    var delegate: OAuthViewControllerDelegate?\n    var URL: Foundation.URL?\n    \n    // MARK: - View Life Cycle\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        if let URL = URL {\n            webView.loadRequest(URLRequest(url: URL))\n        }\n    }\n    \n    // MARK: - UIWebViewDelegate\n    \n    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {\n        if let code = request.url?.lastPathComponent {\n            if code.characters.count == 64 {\n//                PTAPIManager.sharedManager().accessTokenWithAuthorizationCode(code, success: { (accessToken) -> Void in\n//                    println(\"OAuth access token: \\(accessToken)\")\n//                    self.delegate?.oauthViewControllerDidFinish(self, token: accessToken, error: nil)\n//                }, failure: { (error) -> Void in\n//                    println(\"\\(error)\")\n//                    self.delegate?.oauthViewControllerDidFinish(self, token: nil, error: error)\n//                })\n            }\n        }\n        return true;\n    }\n    \n    func webViewDidStartLoad(_ webView: UIWebView) {\n        \n    }\n    \n    func webViewDidFinishLoad(_ webView: UIWebView) {\n\n    }\n    \n    func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {\n        delegate?.oauthViewControllerDidFinish(self, token: nil, error: error as NSError?)\n    }\n    \n    // MARK: - Actions\n    \n    @IBAction func cancelButtonPressed(_ sender: AnyObject) {\n        delegate?.oauthViewControllerDidFinish(self, token: nil, error: nil)\n    }\n    \n}\n"
  },
  {
    "path": "PopcornTime/Controllers/PagedViewController.swift",
    "content": "//\n//  PagedViewController.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/19/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass PagedViewController: BaseCollectionViewController, UISearchBarDelegate, UISearchResultsUpdating  {\n   \n    fileprivate var contentPage: UInt = 0\n\n    var searchResults = [BasicInfo]()\n    var searchController: UISearchController?\n    var searchTimer: Timer?\n\n    var showType: PTItemType {\n        get {\n            assert(false, \"this must be overriden by subclass\")\n            return .movie\n        }\n    }\n    \n    // MARK: View Life Cycle\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        setupSearch()\n    }\n    \n    override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {\n        super.viewWillTransition(to: size, with: coordinator)\n        \n        collectionViewLayout?.invalidateLayout()\n    }\n    \n    fileprivate func setupSearch() {\n        \n        self.definesPresentationContext = true\n        \n        searchController = UISearchController(searchResultsController: nil)\n        searchController!.searchResultsUpdater = self\n        searchController!.hidesNavigationBarDuringPresentation = false\n        searchController!.dimsBackgroundDuringPresentation = false\n        \n        let searchBar = searchController!.searchBar\n        searchBar.delegate = self\n        searchBar.barStyle = .black\n        searchBar.backgroundImage = UIImage()\n        \n        \n        let searchBarContainer = UIView(frame: navigationController!.navigationBar.bounds)\n        searchBarContainer.addSubview(searchBar)\n        searchBar.translatesAutoresizingMaskIntoConstraints = false\n        navigationItem.titleView = searchBarContainer\n        \n        let views = [\"searchBar\" : searchBar]\n        searchBarContainer.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: \"H:|-0-[searchBar]-0-|\", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views))\n        searchBarContainer.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: \"V:|-0-[searchBar]-0-|\", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views))\n    }\n\n    // MARK:\n    \n    func map(_ response: [AnyObject]) -> [BasicInfo] {\n        return [BasicInfo]()\n    }\n    \n    override func reloadData() {\n        PTAPIManager.shared().topShows(with: showType, withPage: contentPage, success: { (items) -> Void in\n            self.showLoadMoreCell = true\n            if let items = items {\n                self.items = self.map(items as [AnyObject])\n                self.collectionView?.reloadData()\n            }\n            }, failure: nil)\n    }\n    \n    func loadMore() {\n        PTAPIManager.shared().topShows(with: showType, withPage: contentPage+1, success: { (items) -> Void in\n            if let items = items {\n                self.contentPage += 1\n                let newItems = self.map(items as [AnyObject])\n                let newShowsIndexPathes = newItems.enumerated().map({ (index, item) in\n                    return IndexPath(row: (self.items.count + index), section: 0)\n                })\n                self.items += newItems\n                \n                self.collectionView?.insertItems(at: newShowsIndexPathes)\n            }\n            }, failure: nil)\n    }\n    \n    func performSearch() {\n        let text = searchController!.searchBar.text\n        if text!.characters.count > 0 {\n            PTAPIManager.shared().searchForShow(with: showType, name: text, success: { (items) -> Void in\n                self.showLoadMoreCell = false\n                if let items = items {\n                    self.searchResults = self.map(items as [AnyObject])\n                } else {\n                    self.searchResults.removeAll(keepingCapacity: false)\n                }\n                self.collectionView?.reloadData()\n                }, failure: nil)\n        }\n    }\n\n    // MARK: UICollectionViewDataSource\n    \n    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {\n        if searchController != nil && searchController!.isActive {\n            return searchResults.count\n        }\n        return super.collectionView(collectionView, numberOfItemsInSection: section)\n    }\n    \n    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {\n        if searchController != nil && searchController!.isActive {\n            //Ordinary show cell\n            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifierShow, for: indexPath) as! ShowCollectionViewCell\n            \n            let item = searchResults[indexPath.row]\n            cell.title = item.title\n\n            let imageItem = item.smallImage\n            switch imageItem?.status {\n            case .new?:\n                imageItem?.status = .downloading\n                ImageProvider.sharedInstance.imageFromURL(URL: imageItem?.URL) { (downloadedImage) -> () in\n                    imageItem?.image = downloadedImage\n                    imageItem?.status = .finished\n                    \n                    collectionView.reloadItems(at: [indexPath])\n                }\n            case .finished?:\n                cell.image = imageItem?.image\n            default: break\n            }\n\n            return cell\n        }\n        return super.collectionView(collectionView, cellForItemAt: indexPath)\n    }\n    \n    // MARK: UICollectionViewDelegate\n    \n    func collectionView(_ collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: IndexPath) {\n        if indexPath.row == items.count {\n            loadMore()\n        }\n    }\n    \n    // MARK: UISearchBarDelegate\n    \n    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {\n        self.searchTimer?.invalidate()\n        self.searchTimer = nil\n        performSearch()\n    }\n    \n    func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {\n        \n        self.showLoadMoreCell = true\n        \n        self.searchTimer?.invalidate()\n        self.searchTimer = nil\n        \n        searchResults.removeAll(keepingCapacity: false)\n        self.collectionView.reloadData()\n    }\n    \n    // MARK: UISearchResultsUpdating\n    \n    func updateSearchResults(for searchController: UISearchController) {\n        self.searchTimer?.invalidate()\n        self.collectionView.reloadData()\n        self.searchTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(PagedViewController.performSearch), userInfo: nil, repeats: false)\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Controllers/ParseViewController.swift",
    "content": "//\n//  ParseViewController.swift\n//\n//\n//  Created by Andriy K. on 6/22/15.\n//\n//\n\nimport UIKit\n\nclass ParseViewController: UIViewController, PFLogInViewControllerDelegate {\n    \n    private var canPromptLogin = true\n    \n    // MARK: - UIViewController\n    \n    override func viewDidAppear(animated: Bool) {\n        super.viewDidAppear(animated)\n        promptLoginIfNeeded(true)\n    }\n    \n    // MARK: - Login\n    \n    func promptLoginIfNeeded(animated: Bool) {\n        \n        let currentUser = ParseManager.sharedInstance.user\n        if currentUser == nil {\n            // Show the signup or login screen\n            let logInController = PFLogInViewController()\n            logInController.delegate = self\n            logInController.fields =\n                [PFLogInFields.DismissButton, PFLogInFields.Facebook]\n            logInController.facebookPermissions = [\"public_profile\"]\n            self.presentViewController(logInController, animated:animated, completion: nil)\n        }\n    }\n    \n    // MARK: PFLogInViewControllerDelegate\n    \n    func logInViewController(logInController: PFLogInViewController, didLogInUser user: PFUser) {\n        dissmiss(nil)\n    }\n    \n    func logInViewController(logInController: PFLogInViewController, didFailToLogInWithError error: NSError?) {\n    }\n    \n    func logInViewControllerDidCancelLogIn(logInController: PFLogInViewController) {\n        dissmiss(nil)\n        dissmiss(nil)\n    }\n    \n    // MARK: - Actions\n    \n    @IBAction func dissmiss(sender: AnyObject?) {\n        canPromptLogin = false\n        self.dismissViewControllerAnimated(true, completion: nil)\n    }\n    \n    @IBAction func logOutPressed(sender: UIBarButtonItem) {\n        PFUser.logOut()\n        dissmiss(nil)\n    }\n    @IBAction func clearAllDataPressed(sender: UIBarButtonItem) {\n    }\n    \n}\n"
  },
  {
    "path": "PopcornTime/Controllers/SettingsViewController.swift",
    "content": "//\n//  SettingsViewController.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 4/4/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass SettingsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {\n\n    // MARK: - View Life Cycle\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n    }\n    \n    // MARK: - \n    \n    func appInfoString() -> String {\n        let displayName = Bundle.main.infoDictionary?[\"CFBundleDisplayName\"] as! String\n        let version = Bundle.main.infoDictionary?[\"CFBundleVersion\"] as! String\n        let shortVersion = Bundle.main.infoDictionary?[\"CFBundleShortVersionString\"] as! String\n        return \"\\(displayName) \\(shortVersion) (\\(version))\"\n    }\n    \n    // MARK: - UITableViewDataSource\n    \n    func numberOfSections(in tableView: UITableView) -> Int {\n        return 1\n    }\n    \n    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {\n        return 1\n    }\n    \n    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {\n        let identifier = \"SettingsCell\"\n        var cell: UITableViewCell! = tableView.dequeueReusableCell(withIdentifier: \"SettingsCell\") \n        if cell == nil {\n            cell = UITableViewCell(style: .default, reuseIdentifier: identifier)\n        }\n\n        cell.textLabel?.text = \"Hello, PopcornTime!\"\n        \n        return cell\n    }\n    \n    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {\n        let label = UILabel(frame: CGRect(x: 0.0, y: 0.0, width: tableView.bounds.width, height: 0.0))\n        label.backgroundColor = UIColor.clear\n        label.font = UIFont.systemFont(ofSize: 14.0)\n        label.text = appInfoString()\n        label.textAlignment = .center\n        return label\n    }\n    \n    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {\n        return 30.0\n    }\n    \n    // MARK: - UITableViewDelegate\n    \n    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {\n        tableView .deselectRow(at: indexPath, animated: true)\n    }\n    \n    @IBAction func doneButtonTapped(_ sender: AnyObject) {\n        self.dismiss(animated: true, completion: nil)\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Controllers/ShowDetailsViewController.swift",
    "content": "//\n//  ShowDetailsViewController.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/13/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass ShowDetailsViewController: BaseDetailsViewController {\n    \n    var show: Show! {\n        get {\n            return self.item as! Show\n        }\n    }\n    \n    // MARK: - BaseDetailsViewController\n    \n    override func reloadData() {\n        PTAPIManager.shared().showInfo(with: .show, withId: show.identifier, success: { (item) -> Void in\n            guard let item = item else { return }\n            self.show.update(item)\n            self.collectionView?.reloadData()\n            }, failure: nil)\n    }\n    \n    // MARK: - DetailViewControllerDataSource\n    override func numberOfSeasons() -> Int {\n        return show.seasons.count\n    }\n    \n    override func numberOfEpisodesInSeason(_ seasonsIndex: Int) -> Int {\n        return show.seasons[seasonsIndex].episodes.count\n    }\n    \n    override func setupCell(_ cell: EpisodeCell, seasonIndex: Int, episodeIndex: Int) {\n        let episode = show.seasons[seasonIndex].episodes[episodeIndex]\n        if let title = episode.title {\n            cell.titleLabel.text = \"S\\(episode.seasonNumber)E\\(episode.episodeNumber):  \\(title)\"\n        } else {\n            cell.titleLabel.text = \"S\\(episode.seasonNumber)E\\(episode.episodeNumber)\"\n        }\n    }\n    \n    override func setupSeasonHeader(_ header: SeasonHeader, seasonIndex: Int) {\n        let seasonNumber = self.show.seasons[seasonIndex].seasonNumber\n        header.titleLabel.text = \"Season \\(seasonNumber)\"\n    }\n    \n    override func cellWasPressed(_ cell: UICollectionViewCell, seasonIndex: Int, episodeIndex: Int) {\n        let episode = show.episodeFor(seasonIndex: seasonIndex, episodeIndex: episodeIndex)\n        showVideoPickerPopupForEpisode(episode, basicInfo: self.item, fromView: cell)\n    }\n    \n    override func cellWasLongPressed(_ cell: UICollectionViewCell, seasonIndex: Int, episodeIndex: Int) {\n//        let episode = show.episodeFor(seasonIndex: seasonIndex, episodeIndex: episodeIndex)\n//        let seasonEpisodes = show.episodesFor(seasonIndex: seasonIndex)\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Controllers/ShowsViewController.swift",
    "content": "//\n//  TVSeriesShowsViewController.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/9/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass ShowsViewController: PagedViewController {\n    \n    override var showType: PTItemType {\n        get {\n            return .show\n        }\n    }\n    \n    override func map(_ response: [AnyObject]) -> [BasicInfo] {\n        return response.map({ Show(dictionary: $0 as! [AnyHashable: Any]) })\n    }\n\n    func collectionView(_ collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: IndexPath) {\n        \n        if let cell = collectionView.cellForItem(at: indexPath){\n            //Check if cell is MoreShowsCell\n            if let _ = cell as? MoreShowsCollectionViewCell {\n                loadMore()\n            } else {\n                performSegue(withIdentifier: \"showDetails\", sender: cell)\n            }\n        }\n    }\n    \n    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {\n        super.prepare(for: segue, sender: sender)\n        \n        if segue.identifier == \"showDetails\" {\n            if let episodesVC = segue.destination as? ShowDetailsViewController {\n                if let senderCell = sender as? UICollectionViewCell {\n                    if let indexPath = collectionView!.indexPath(for: senderCell) {\n                        var item: BasicInfo!\n                        if (searchController!.isActive) {\n                            item = searchResults[indexPath.row]\n                        } else {\n                            item = items[indexPath.row]\n                        }\n                        episodesVC.item = item as! Show\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleDisplayName</key>\n\t<string>Popcorn Time</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>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n\t<key>Fabric</key>\n\t<dict>\n\t\t<key>APIKey</key>\n\t\t<string>API_KEY</string>\n\t\t<key>Kits</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>KitInfo</key>\n\t\t\t\t<dict/>\n\t\t\t\t<key>KitName</key>\n\t\t\t\t<string>Crashlytics</string>\n\t\t\t</dict>\n\t\t</array>\n\t</dict>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>NSAppTransportSecurity</key>\n\t<dict>\n\t\t<key>NSAllowsArbitraryLoads</key>\n\t\t<true/>\n\t</dict>\n\t<key>UILaunchStoryboardName</key>\n\t<string>Launch Screen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array/>\n\t<key>UIStatusBarHidden</key>\n\t<true/>\n\t<key>UIStatusBarStyle</key>\n\t<string>UIStatusBarStyleBlackOpaque</string>\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<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "PopcornTime/Models/APIManager.swift",
    "content": "//\n//  APIManager.swift\n//  popcornTime\n//\n//  Created by Danylo Kostyshyn on 3/13/15.\n//  Copyright (c) 2015 Danylo Kostyshyn. All rights reserved.\n//\n\n/*\nhttp://ytspt.re/api/list.json?limit=30&order=desc&sort=seeds\nhttp://ytspt.re/api/listimdb.json?imdb_id=tt2245084\nhttp://ytspt.re/api/list.json?limit=30&keywords=terminator&order=desc&sort=seeds&set=1\nhttp://www.yifysubtitles.com//subtitle-api/big-hero-6-yify-36523.zip\n\nhttp://eztvapi.re/shows/1?limit=30&order=desc&sort=seeds\nhttp://eztvapi.re/show/tt0898266\nhttp://eztvapi.re/shows/1?limit=30&keywords=the+big+bang&order=desc&sort=seeds\n\nhttp://ptp.haruhichan.com/list.php?\nhttp://ptp.haruhichan.com/anime.php?id=912\n*/\n\nimport Foundation\n\nclass APIManager {\n\n    typealias APIManagerFailure = (error: NSError?) -> ()\n    typealias APIManagerSuccessItems = (items: [AnyObject]?) -> ()\n    typealias APIManagerSuccessItem = (item: [String: AnyObject]?) -> ()\n    \n    private let APIManagerMoviesEndPoint = \"http://ytspt.re/api\"\n    private let APIManagerShowsEndPoint = \"http://eztvapi.re\"\n    private let APIManagerResultsLimit = 30\n    \n    class func sharedManager() -> APIManager {\n        struct Static { static let instance: APIManager = APIManager() }\n        return Static.instance\n    }\n    \n    private func data(url: NSURL, sucess: ((AnyObject?) -> ())?, failure: APIManagerFailure?) {\n        NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: {\n            (data, response, error) -> Void in\n            \n            var serializationError: NSError?\n            var JSONObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &serializationError)\n\n            if let serializationError = serializationError {\n                println(\"\\(serializationError)\")\n                \n                if let failure = failure {\n                    failure(error: serializationError)\n                }\n            }\n            \n            if let sucess = sucess {\n                sucess(JSONObject)\n            }\n            \n        }).resume()\n    }\n    \n    // MARK: Movies\n    \n    func topMovies(success: APIManagerSuccessItems?, failure: APIManagerFailure?) {\n        var path = String(format: \"list.json?limit=%d&order=desc&sort=seeds\", APIManagerResultsLimit)\n        var url = NSURL(string: APIManagerMoviesEndPoint.stringByAppendingPathComponent(path))\n        \n        data(url!, sucess: { (JSONObject) -> () in\n            if let success = success {\n                var dict = JSONObject as [String: AnyObject]\n                success(items: dict[\"MovieList\"] as [AnyObject]?)\n            }\n        }, failure: failure)\n    }\n    \n    func movieInfo(imdbId: String, success: APIManagerSuccessItems?, failure: APIManagerFailure?) {\n        var path = String(format: \"listimdb.json?imdb_id=%@\", imdbId)\n        var url = NSURL(string: APIManagerMoviesEndPoint.stringByAppendingPathComponent(path))\n        \n        data(url!, sucess: { (JSONObject) -> () in\n            if let success = success {\n                var dict = JSONObject as [String: AnyObject]\n                success(items: dict[\"MovieList\"] as [AnyObject]?)\n            }\n        }, failure: failure)\n    }\n    \n    func searchMovie(name: String, success: APIManagerSuccessItems?, failure: APIManagerFailure?) {\n        var path = String(format: \"list.json?limit=%lu&keywords=%@&order=desc&sort=seeds&set=1\", APIManagerResultsLimit, name)\n        var url = NSURL(string: APIManagerMoviesEndPoint.stringByAppendingPathComponent(path))\n        \n        data(url!, sucess: { (JSONObject) -> () in\n            if let success = success {\n                var dict = JSONObject as [String: AnyObject]\n                success(items: dict[\"MovieList\"] as [AnyObject]?)\n            }\n        }, failure: failure)\n    }\n    \n    // MARK: Shows    \n    \n    func topShows(page: UInt, success: APIManagerSuccessItems?, failure: APIManagerFailure?) {\n        var path = String(format: \"shows/%lu?limit=%lu&order=desc&sort=seeds\", (page + 1), APIManagerResultsLimit)\n        var url = NSURL(string: APIManagerShowsEndPoint.stringByAppendingPathComponent(path))\n        \n        data(url!, sucess: { (JSONObject) -> () in\n            if let success = success {\n                success(items: JSONObject as [AnyObject]?)\n            }\n        }, failure: failure)\n    }\n    \n    func showInfo(imdbId: String, success: APIManagerSuccessItem?, failure: APIManagerFailure?) {\n        var path = String(format: \"show/%@\", imdbId)\n        var url = NSURL(string: APIManagerShowsEndPoint.stringByAppendingPathComponent(path))\n        \n        data(url!, sucess: { (JSONObject) -> () in\n            if let success = success {\n                success(item: JSONObject as [String: AnyObject]?)\n            }\n        }, failure: failure)\n    }\n    \n    func searchShow(name: String, success: APIManagerSuccessItems?, failure: APIManagerFailure?) {\n        var path = String(format: \"shows/1?limit=%lu&keywords=%@&sort=seeds\", APIManagerResultsLimit, name)\n        var url = NSURL(string: APIManagerShowsEndPoint.stringByAppendingPathComponent(path))\n        \n        data(url!, sucess: { (JSONObject) -> () in\n            if let success = success {\n                success(items: JSONObject as [AnyObject]?)\n            }\n        }, failure: failure)\n    }\n    \n}"
  },
  {
    "path": "PopcornTime/Models/Anime.swift",
    "content": "//\n//  Anime.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/19/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport Foundation\n\nclass Anime: BasicInfo {\n    var seasons = [Season]()\n\n    required init(dictionary: [AnyHashable: Any]) {\n        super.init(dictionary: dictionary)\n        \n        let id = dictionary[\"id\"] as! Int\n        identifier = \"\\(id)\"\n        title = dictionary[\"name\"] as? String\n        year = dictionary[\"name\"] as? String\n\n        if let poster = dictionary[\"malimg\"] as? String {\n            images = [Image]()\n            \n            let URL = Foundation.URL(string: poster)\n            let image = Image(URL: URL!, type: .poster)\n            images.append(image)\n        }\n        \n        smallImage = images.filter({$0.type == ImageType.poster}).first\n        bigImage = smallImage\n    }\n\n    required init(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)!\n    }\n    \n    override func update(_ dictionary: [AnyHashable: Any]) {\n        seasons.removeAll(keepingCapacity: true)\n        \n        let episodesDicts = dictionary[\"episodes\"] as! [[AnyHashable: Any]]\n        let seasonNumber:UInt = 0\n        \n        var videosContainer = [Int: [Video]]()\n        var episodesContainer = [Int: Episode]()\n        synopsis = dictionary[\"synopsis\"] as? String\n        if let sps = synopsis {\n            synopsis = sps.replacingOccurrences(of: \"oatRightHeader\\\">EditSynopsis\\n\", with: \"\")\n        }\n\n        \n        for episodeDict in episodesDicts{\n            let title = episodeDict[\"name\"] as! String\n            let numbersFromTitle = numbersFromAnimeTitle(title)\n            let synopsis = episodeDict[\"overview\"] as? String\n            if numbersFromTitle.count > 0 {\n                if let quality = episodeDict[\"quality\"] as? String{\n                    // Get entry data\n                    let subGroup = episodeDict[\"subgroup\"] as? String\n                    let episodeNumber = numbersFromTitle.first!\n                    let magnetLink = episodeDict[\"magnet\"] as! String\n                    let video = Video(name: title, quality: quality, size: 0, duration: 0, subGroup: subGroup, magnetLink: magnetLink)\n                    \n                    var videos = videosContainer[episodeNumber]\n                    if (videos == nil) {\n                        videos = [Video]()\n                        videosContainer[episodeNumber] = videos\n                    }\n                    videosContainer[episodeNumber]!.append(video)\n                    \n                    \n                    var episode = episodesContainer[episodeNumber]\n                    if (episode == nil) {\n                        episode = Episode(title: title, desc: synopsis, seasonNumber: seasonNumber, episodeNumber: UInt(episodeNumber), videos: [Video]())\n                        episodesContainer[episodeNumber] = episode!\n                    }\n                }\n            }\n        }\n        \n        for entry in videosContainer {\n            let episodeNumber = entry.0\n            let videos = entry.1\n            \n            episodesContainer[episodeNumber]!.videos = videos\n        }\n        \n        \n        let episodes = Array(episodesContainer.values).sorted { (a, b) -> Bool in\n            return a.episodeNumber > b.episodeNumber\n        }\n        \n        let season = Season(seasonNumber: seasonNumber, episodes: episodes)\n        seasons.append(season)\n    }\n    \n    fileprivate func numbersFromAnimeTitle(_ title: String) -> [Int]{\n        let components = title.components(separatedBy: CharacterSet(charactersIn: \"[]_() \"))\n        var numbers = [Int]()\n        for component in components {\n            if let number = Int(component) {\n                if number < 10000 {\n                    numbers.append(number)\n                }\n            }\n        }\n        return numbers\n    }\n}\n\nextension Anime: ContainsEpisodes {\n    func episodeFor(seasonIndex: Int, episodeIndex: Int) -> Episode {\n        let episode = seasons[seasonIndex].episodes[episodeIndex]\n        return episode\n    }\n    \n    func episodesFor(seasonIndex: Int) -> [Episode] {\n        return seasons[seasonIndex].episodes\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Models/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/13/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\n#if RELEASE\nimport Fabric\nimport Crashlytics\n#endif\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n    \n    var window: UIWindow?\n\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {\n#if RELEASE\n        Fabric.with([Crashlytics()])\n#endif\n        return true\n    }\n    \n}\n"
  },
  {
    "path": "PopcornTime/Models/BaseStructures.swift",
    "content": "//\n//  Video.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/21/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nstruct Video {\n    let name: String?\n    let quality: String?\n    let size: UInt?\n    let duration: UInt?\n    let subGroup: String?\n    let magnetLink: String\n}\n\nstruct Episode {\n    let title: String?\n    let desc: String?\n    let seasonNumber: UInt\n    let episodeNumber: UInt\n    var videos = [Video]()\n}\n\nstruct Season {\n    let seasonNumber: UInt\n    let episodes: [Episode]\n}\n"
  },
  {
    "path": "PopcornTime/Models/BasicInfo.swift",
    "content": "//\n//  BasicInfo.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/19/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport Foundation\n\nprotocol ContainsEpisodes {\n    func episodeFor(seasonIndex: Int, episodeIndex: Int) -> Episode\n    func episodesFor(seasonIndex: Int) -> [Episode]\n}\n\nprotocol BasicInfoProtocol {\n    var identifier: String! {get}\n    var title: String? {get}\n    var year: String? {get}\n    var images: [Image]! {get}\n    var smallImage: Image? {get}\n    var bigImage: Image? {get}\n    var isFavorite: Bool {get}\n \n    init(dictionary: [AnyHashable: Any])\n    func update(_ dictionary: [AnyHashable: Any])\n}\n\nclass BasicInfo: NSObject, BasicInfoProtocol, NSCoding {\n    var identifier: String!\n    var title: String?\n    var year: String?\n    var images: [Image]!\n    var smallImage: Image?\n    var bigImage: Image?\n    var synopsis: String?\n\n    var isFavorite : Bool {\n        get {\n            return DataManager.sharedManager().isFavorite(self)\n        }\n        set {\n            if (isFavorite == true) {\n                return DataManager.sharedManager().addToFavorites(self)\n            } else {\n                return DataManager.sharedManager().removeFromFavorites(self)\n            }\n        }\n    }\n    \n    required init(dictionary: [AnyHashable: Any]) {\n//        fatalError(\"init(dictionary:) has not been implemented\")\n    }\n\n    func update(_ dictionary: [AnyHashable: Any]) {\n        fatalError(\"update(dictionary:) has not been implemented\")\n    }\n    \n    // MARK: - NSCoding\n    \n    required init?(coder aDecoder: NSCoder) {\n        guard\n            let identifier = aDecoder.decodeObject(forKey: \"identifier\") as? String\n            else { return nil }\n        \n        self.identifier = identifier\n        self.title = aDecoder.decodeObject(forKey: \"title\") as? String\n        self.year = aDecoder.decodeObject(forKey: \"year\") as? String\n        self.smallImage = aDecoder.decodeObject(forKey: \"smallImage\") as? Image\n        self.bigImage = aDecoder.decodeObject(forKey: \"bigImage\") as? Image\n    }\n    \n    func encode(with aCoder: NSCoder) {\n        aCoder.encode(identifier, forKey: \"identifier\")\n        aCoder.encode(title, forKey: \"title\")\n        aCoder.encode(year, forKey: \"year\")\n        aCoder.encode(smallImage, forKey: \"smallImage\")\n        aCoder.encode(bigImage, forKey: \"bigImage\")\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Models/DataManager.swift",
    "content": "//\n//  DataManager.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/24/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport Foundation\n\nstruct Notifications {\n    static let FavoritesDidChangeNotification = \"FavoritesDidChangeNotification\"\n}\n\nclass DataManager {\n    let documentsDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! as String\n    let fileName = \"Favorites.plist\"\n    var filePath: String {\n        get {\n            return fileURL.path\n        }\n    }\n    var fileURL: URL {\n        let url = URL(fileURLWithPath: documentsDirectory, isDirectory: true)\n        return url.appendingPathComponent(fileName)\n    }\n    var favorites: [BasicInfo]?\n\n    init() {\n        loadFavorites()\n    }\n    \n    class func sharedManager() -> DataManager {\n        struct Static { static let instance: DataManager = DataManager() }\n        return Static.instance\n    }\n\n    fileprivate func loadFavorites() -> [BasicInfo]? {\n        if FileManager.default.fileExists(atPath: filePath) {\n            let data = try? Data(contentsOf: URL(fileURLWithPath: filePath))\n            if let data = data {\n                self.favorites = NSKeyedUnarchiver.unarchiveObject(with: data) as! [BasicInfo]?\n                return self.favorites\n            }\n        }\n        return nil\n    }\n    \n    fileprivate func saveFavorites(_ items: [BasicInfo]) {\n        let data = NSKeyedArchiver.archivedData(withRootObject: items)\n        try? data.write(to: URL(fileURLWithPath: filePath), options: [.atomic])\n        self.favorites = items\n    }\n    \n    // MARK: -\n    \n    func isFavorite(_ item: BasicInfo) -> Bool {\n        let favoriteItem = self.favorites?.filter({ $0.identifier == item.identifier }).first\n        if favoriteItem != nil {\n            return true\n        }\n        return false\n    }\n    \n    func addToFavorites(_ item: BasicInfo) {\n        var items = [BasicInfo]()\n        if let favorites = loadFavorites() {\n            items += favorites\n        }\n        items.append(item)\n        saveFavorites(items)\n        \n        NotificationCenter.default.post(name: Notification.Name(rawValue: Notifications.FavoritesDidChangeNotification), object: nil)\n    }\n    \n    func removeFromFavorites(_ item: BasicInfo) {\n        let items = loadFavorites()\n            if var items = items {\n            let favoriteItem = items.filter({ $0.identifier == item.identifier }).first\n            if let favoriteItem = favoriteItem {\n                let idx = items.index(of: favoriteItem)\n                items.remove(at: idx!)\n                saveFavorites(items)\n\n                NotificationCenter.default.post(name: Notification.Name(rawValue: Notifications.FavoritesDidChangeNotification), object: nil)\n            }\n        }\n    }\n}\n\n    \n"
  },
  {
    "path": "PopcornTime/Models/Extensions.swift",
    "content": "//\n//  UIImage+PopcornTime.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/30/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nextension UIImage {\n    \n    class func addToFavoritesImage() -> UIImage? {\n        return UIImage(named: \"AddToFavoritesIcon\")\n    }\n    \n    class func removeFromFavoritesImage() -> UIImage? {\n        return UIImage(named: \"RemoveFromFavoritesIcon\")\n    }\n    \n}\n"
  },
  {
    "path": "PopcornTime/Models/Image.swift",
    "content": "//\n//  File.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/21/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nenum ImageType: Int {\n    case banner, poster, fanart\n}\n\nenum ImageStatus {\n    case new, downloading, finished\n}\n\nclass Image: NSObject, NSCoding {\n    let URL: Foundation.URL\n    var image: UIImage?\n    let type: ImageType\n    var status: ImageStatus = .new\n    \n    init(URL: Foundation.URL, type: ImageType) {\n        self.URL = URL\n        self.type = type\n    }\n    \n    // MARK: - NSCoding\n    \n    required init?(coder aDecoder: NSCoder) {\n        let typeRaw = aDecoder.decodeInteger(forKey: \"type\")\n        guard\n            let URL = aDecoder.decodeObject(forKey: \"URL\") as? Foundation.URL,\n            let type = ImageType(rawValue: typeRaw)\n            else { return nil }\n        \n        self.URL = URL\n        self.type = type\n    }\n    \n    func encode(with aCoder: NSCoder) {\n        aCoder.encode(URL, forKey: \"URL\")\n        aCoder.encode(type.rawValue, forKey: \"type\")\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Models/ImageProvider.swift",
    "content": "//\n//  ImageProvider.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/10/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass ImageProvider: NSObject {\n    \n    static let sharedInstance = ImageProvider()\n\n    func imageFromURL(URL: Foundation.URL?, completionBlock: @escaping (_ downloadedImage: UIImage?)->()) {\n        guard let URL = URL else { return }\n        \n        SDWebImageDownloader.shared().downloadImage(with: URL, options: [SDWebImageDownloaderOptions.useNSURLCache], progress: nil) {\n            (image, data, error, finished) -> Void in\n            if let _ = error { NSLog(\"\\(#function): \\(error)\") }\n\n            DispatchQueue.main.async(execute: {\n                completionBlock(image)\n            })\n        }\n    }\n    \n}\n"
  },
  {
    "path": "PopcornTime/Models/Movie.swift",
    "content": "//\n//  Movie.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/19/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport Foundation\n\nclass Movie: BasicInfo {\n    var videos = [Video]()\n\n    required init(dictionary: [AnyHashable: Any]) {\n        super.init(dictionary: dictionary)\n\n        let id = (dictionary[\"id\"] as! NSString).intValue\n        identifier = \"\\(id)\"\n        title = dictionary[\"title\"] as? String\n        year = String(describing: dictionary[\"year\"])\n        \n        images = [Image]()\n        if let cover = dictionary[\"poster_med\"] as? String {\n            let image = Image(URL: URL(string: cover)!, type: .poster)\n            images.append(image)\n        }\n        \n        if let cover = dictionary[\"poster_big\"] as? String {\n            let image = Image(URL: URL(string: cover)!, type: .banner)\n            images.append(image)\n        }\n\n        smallImage = self.images.filter({$0.type == ImageType.poster}).first\n        bigImage = self.images.filter({$0.type == ImageType.banner}).first\n        synopsis = dictionary[\"description\"] as? String\n    }\n\n    required init(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)!\n    }\n    \n    override func update(_ dictionary: [AnyHashable: Any]) {\n        videos.removeAll(keepingCapacity: true)\n        \n        let title = dictionary[\"title\"] as! String\n        \n        guard let movieList = dictionary[\"items\"] as? [[AnyHashable: Any]] else { return }\n        for movieDict in movieList {\n            let quality = movieDict[\"quality\"] as! String\n            let magnetLink = movieDict[\"torrent_magnet\"] as! String\n            let size = movieDict[\"size_bytes\"] as! UInt\n\n            let video = Video(name: title, quality: quality, size: size, duration: 0, subGroup: nil, magnetLink: magnetLink)\n            videos.append(video)\n        }\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Models/PTAPIManager.h",
    "content": "//\n//  PTAPIManager.h\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 2/25/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\ntypedef void (^PTAPIManagerFailure)(NSError *error);\ntypedef void (^PTAPIManagerSuccessItems)(NSArray *items);\ntypedef void (^PTAPIManagerSuccessItem)(NSDictionary *item);\ntypedef void (^PTAPIManagerSuccessNone)();\n\ntypedef NS_ENUM(NSInteger, PTItemType) {\n    PTItemTypeMovie,\n    PTItemTypeShow,\n    PTItemTypeAnime,\n};\n\n@interface PTAPIManager : NSObject\n\n+ (instancetype)sharedManager;\n\n- (void)showInfoWithType:(PTItemType)type\n                  withId:(NSString *)imdbId\n                 success:(PTAPIManagerSuccessItem)success\n                 failure:(PTAPIManagerFailure)failure;\n\n- (void)searchForShowWithType:(PTItemType)type\n                         name:(NSString *)name\n                      success:(PTAPIManagerSuccessItems)success\n                      failure:(PTAPIManagerFailure)failure;\n\n- (void)topShowsWithType:(PTItemType)type\n                withPage:(NSUInteger)page\n                 success:(PTAPIManagerSuccessItems)success\n                 failure:(PTAPIManagerFailure)failure;\n\n// Trakt.tv\n/*\n+ (NSString *)trakttvAccessToken;\n+ (void)updateTrakttvAccessToken:(NSString *)accessToken;\n+ (NSURL *)trakttvAuthorizationURL;\n- (void)accessTokenWithAuthorizationCode:(NSString *)authorizationCode\n                             success:(void(^)(NSString *accessToken))success\n                             failure:(PTAPIManagerFailure)failure;\n\n- (void)createListWithName:(NSString *)name\n                   success:(PTAPIManagerSuccessNone)success\n                   failure:(PTAPIManagerFailure)failure;\n*/\n\n@end\n"
  },
  {
    "path": "PopcornTime/Models/PTAPIManager.m",
    "content": "//\n//  PTAPIManager.m\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 2/25/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\n#import \"PTAPIManager.h\"\n\n#import <UIKit/UIKit.h>\n\nNSUInteger const PTAPIManagerResultsLimit = 30;\nNSString *const PTAPIManagerMoviesEndPoint = @\"http://api.torrentsapi.com/\";\nNSString *const PTAPIManagerShowsEndPoint = @\"https://api-fetch.website/tv/\";\nNSString *const PTAPIManagerAnimeEndPoint = @\"http://ptp.haruhichan.com\";\n\n@implementation PTAPIManager\n\nstatic NSDictionary *YTSHTTPHeaders;\n\n#pragma mark - Public API\n\n\n+ (void)initialize\n{\n    YTSHTTPHeaders = @{@\"Host\": @\"eqwww.image.yt\"};\n}\n\n+ (instancetype)sharedManager\n{\n    static dispatch_once_t onceToken;\n    static PTAPIManager *sharedManager;\n    dispatch_once(&onceToken, ^{\n        sharedManager = [[PTAPIManager alloc] init];\n    });\n    return sharedManager;\n}\n\n- (void)showInfoWithType:(PTItemType)type\n                  withId:(NSString *)imdbId\n                 success:(PTAPIManagerSuccessItem)success\n                 failure:(PTAPIManagerFailure)failure\n{\n    switch (type) {\n        case PTItemTypeMovie: { [self movieInfoWithId:imdbId success:success failure:failure]; break; }\n        case PTItemTypeShow: { [self tvSeriesInfoWithId:imdbId success:success failure:failure]; break; }\n        case PTItemTypeAnime: { [self animeInfoWithId:imdbId success:success failure:failure]; break; }\n        default: break;\n    }\n}\n\n- (void)searchForShowWithType:(PTItemType)type\n                        name:(NSString *)name\n                      success:(PTAPIManagerSuccessItems)success\n                      failure:(PTAPIManagerFailure)failure\n{\n    switch (type) {\n        case PTItemTypeMovie: { [self searchForMovieWithName:name success:success failure:failure]; break; }\n        case PTItemTypeShow: { [self searchForTVSeriesWithName:name success:success failure:failure]; break; }\n        case PTItemTypeAnime: { [self searchForAnimeWithName:name success:success failure:failure]; break; }\n        default: break;\n    }\n}\n\n- (void)topShowsWithType:(PTItemType)type\n                withPage:(NSUInteger)page\n                 success:(PTAPIManagerSuccessItems)success\n                 failure:(PTAPIManagerFailure)failure{\n    switch (type) {\n        case PTItemTypeMovie: { [self topMoviesWithPage:page success:success failure:failure]; break; }\n        case PTItemTypeShow: { [self topTVSeriesWithPage:page success:success failure:failure]; break; }\n        case PTItemTypeAnime: { [self topAnimeWithPage:page success:success failure:failure]; break; }\n        default: break;\n    }\n}\n\n#pragma mark - Private Methods\n\n- (void)dataFromURL:(NSURL *)URL\n            success:(void(^)(id JSONObject))success\n            failure:(PTAPIManagerFailure)failure\n{\n    return [self dataFromURL:URL HTTPheaders:nil success:success failure:failure];\n}\n\n- (void)dataFromURL:(NSURL *)URL\n            HTTPheaders:(NSDictionary *)HTTPheaders\n            success:(void(^)(id JSONObject))success\n            failure:(PTAPIManagerFailure)failure\n{\n    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;\n\n    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];\n    if (HTTPheaders) {\n        for (NSString *key in HTTPheaders.allKeys) {\n            [request addValue:HTTPheaders[key] forHTTPHeaderField:key];\n        }\n    }\n    \n    [[[NSURLSession sharedSession] dataTaskWithRequest:request\n                                     completionHandler:\n      ^(NSData *data, NSURLResponse *response, NSError *error) {\n          dispatch_async(dispatch_get_main_queue(), ^{\n\n            [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;\n              \n              void (^handleError)(NSError *) = ^(NSError *error) {\n                  if (error) { NSLog(@\"%@\", error); if (failure) { failure(error); } }\n              };\n              \n              if (error) { handleError(error); return; }\n              \n              NSError *JSONError;\n              id JSONObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&JSONError];\n              if (JSONError) { handleError(JSONError); return; }\n              \n              if (success) { success(JSONObject); };\n          });\n      }] resume];\n}\n\n#pragma mark Movies\n\n- (void)topMoviesWithPage:(NSUInteger)page\n                  success:(PTAPIManagerSuccessItems)success\n                  failure:(PTAPIManagerFailure)failure\n{\n    NSString *path = [NSString stringWithFormat:@\"list?\"\n                      \"page=%ld&limit=%ld&order_by=desc&sort_by=seeds&with_rt_ratings=true\", (long)page + 1, (long)PTAPIManagerResultsLimit];\n   \n    NSString *URLString = [PTAPIManagerMoviesEndPoint stringByAppendingPathComponent:path];\n    [self dataFromURL:[NSURL URLWithString:URLString] success:^(id JSONObject) {\n        if (success) {\n            NSArray *items = [((NSDictionary *)JSONObject) objectForKey:@\"MovieList\"];\n            success(items);\n            \n        }\n    } failure:failure];\n}\n- (void)movieInfoWithId:(NSString *)imdbId\n                success:(PTAPIManagerSuccessItem)success\n                failure:(PTAPIManagerFailure)failure\n{\n    NSString *path = [NSString stringWithFormat:@\"list?\"\n                      \"page=1&limit=5&order_by=desc&sort_by=seeds&with_rt_ratings=true\"];\n\n//    NSString *path = [NSString stringWithFormat:@\"list?id=%@\", imdbId];\n    NSString *URLString = [PTAPIManagerMoviesEndPoint stringByAppendingPathComponent:path];\n    [self dataFromURL:[NSURL URLWithString:URLString] success:^(id JSONObject) {\n        if (success) {\n            NSDictionary *items = [((NSDictionary *)JSONObject) objectForKey:@\"MovieList\"];\n            for(id key in items) {\n                NSString *id = [key objectForKey:@\"id\"];\n                if([id isEqualToString:imdbId]) {\n                    success(key);\n                    break;\n                }\n            }\n//            success(items);\n        }\n    } failure:failure];\n}\n\n- (void)searchForMovieWithName:(NSString *)name\n                       success:(PTAPIManagerSuccessItems)success\n                       failure:(PTAPIManagerFailure)failure\n{\n    NSString *path = [[NSString stringWithFormat:@\"list?sort_by=seeds&limit=%ld&with_rt_ratings=true&page=1&keywords=%@\", (long)PTAPIManagerResultsLimit, name]\n                      stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];\n    NSString *URLString = [PTAPIManagerMoviesEndPoint stringByAppendingPathComponent:path];\n    [self dataFromURL:[NSURL URLWithString:URLString] success:^(id JSONObject) {\n        if (success) {\n            NSArray *items = [((NSDictionary *)JSONObject) objectForKey:@\"MovieList\"];\n            success(items);\n        }\n    } failure:failure];\n}\n\n#pragma mark TVSeries\n\n- (void)topTVSeriesWithPage:(NSUInteger)page\n                 success:(PTAPIManagerSuccessItems)success\n                 failure:(PTAPIManagerFailure)failure\n{\n    NSString *path = [NSString stringWithFormat:@\"shows/%ld?limit=%lu\", (long)page + 1, (long)PTAPIManagerResultsLimit];\n    NSString *URLString = [PTAPIManagerShowsEndPoint stringByAppendingPathComponent:path];\n    [self dataFromURL:[NSURL URLWithString:URLString] success:^(id JSONObject) {\n        if (success) {\n            success((NSArray *)JSONObject);\n        }\n    } failure:failure];\n}\n\n- (void)tvSeriesInfoWithId:(NSString *)imdbId\n                   success:(PTAPIManagerSuccessItem)success\n                   failure:(PTAPIManagerFailure)failure\n{\n    NSString *path = [NSString stringWithFormat:@\"show/%@\", imdbId];\n    NSString *URLString = [PTAPIManagerShowsEndPoint stringByAppendingPathComponent:path];\n    [self dataFromURL:[NSURL URLWithString:URLString] success:^(id JSONObject) {\n        if (success) {\n            success((NSDictionary *)JSONObject);\n        }\n    } failure:failure];\n}\n\n- (void)searchForTVSeriesWithName:(NSString *)name\n                      success:(PTAPIManagerSuccessItems)success\n                      failure:(PTAPIManagerFailure)failure\n{\n    NSString *path = [[NSString stringWithFormat:@\"shows/1?limit=%ld&keywords=%@&sort=seeds\", (long)PTAPIManagerResultsLimit, name]\n                      stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];\n    NSString *URLString = [PTAPIManagerShowsEndPoint stringByAppendingPathComponent:path];\n    [self dataFromURL:[NSURL URLWithString:URLString] success:^(id JSONObject) {\n        if (success) {\n            success((NSArray *)JSONObject);\n        }\n    } failure:failure];\n}\n\n#pragma mark Anime\n\n- (void)topAnimeWithPage:(NSUInteger)page\n                 success:(PTAPIManagerSuccessItems)success\n                 failure:(PTAPIManagerFailure)failure\n{\n    NSString *path = [[NSString stringWithFormat:@\"list.php?page=%ld&limit=%ld&sort=popularity&type=All\", (long)page, (long)PTAPIManagerResultsLimit]\n                      stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];\n    NSString *URLString = [PTAPIManagerAnimeEndPoint stringByAppendingPathComponent:path];\n\n    [self dataFromURL:[NSURL URLWithString:URLString] success:^(id JSONObject) {\n        if (success) {\n            success((NSArray *)JSONObject);\n        }\n    } failure:failure];\n}\n\n- (void)animeInfoWithId:(NSString *)imdbId\n                success:(PTAPIManagerSuccessItem)success\n                failure:(PTAPIManagerFailure)failure\n{\n    NSString *path = [NSString stringWithFormat:@\"anime.php?id=%@\", imdbId];\n    NSString *URLString = [PTAPIManagerAnimeEndPoint stringByAppendingPathComponent:path];\n    [self dataFromURL:[NSURL URLWithString:URLString] success:^(id JSONObject) {\n        if (success) {\n            success((NSDictionary *)JSONObject);\n        }\n    } failure:failure];\n}\n\n- (void)searchForAnimeWithName:(NSString *)name\n                       success:(PTAPIManagerSuccessItems)success\n                       failure:(PTAPIManagerFailure)failure {\n    \n    NSString *path = [[NSString stringWithFormat:@\"/list.php?search=%@&limit=%ld&sort=popularity&type=All\",\n                       [name stringByReplacingOccurrencesOfString:@\" \" withString:@\"+\"], (long)PTAPIManagerResultsLimit]\n                      stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];\n    NSString *URLString = [PTAPIManagerAnimeEndPoint stringByAppendingPathComponent:path];\n    \n    [self dataFromURL:[NSURL URLWithString:URLString] success:^(id JSONObject) {\n        if (success) {\n            success((NSArray *)JSONObject);\n        }\n    } failure:failure];\n}\n\n#pragma mark - Trakt.tv\n\n/*\n\nNSString *const PTAPIManagerTrakttvAccessTokenKey = @\"TrakttvAccessToken\";\n\nNSString *const PTAPIManagerTrakttvAPIEndPoint = @\"http://api.trakt.tv\";\nNSString *const PTAPIManagerTrakttvAPIKey = @\"df8d400233727be104e5caf40e07d785b6963c0e194dcbd24f806e8a4e243167\";\nNSString *const PTAPIManagerTrakttvAPIVersion = @\"2\";\n\nNSString *const PTAPIManagerTrakttvClientId = @\"df8d400233727be104e5caf40e07d785b6963c0e194dcbd24f806e8a4e243167\";\nNSString *const PTAPIManagerTrakttvClientSecret = @\"1a98885c5271f7162ac51b2c1dd09decc55df127f5e1b29af533d35eee5df9b2\";\nNSString *const PTAPIManagerTrakttvRedirectURL = @\"urn:ietf:wg:oauth:2.0:oob\";\n\n+ (NSString *)trakttvAccessToken\n{\n    return [[NSUserDefaults standardUserDefaults] objectForKey:PTAPIManagerTrakttvAccessTokenKey];\n}\n\n+ (void)updateTrakttvAccessToken:(NSString *)accessToken\n{\n    [[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:PTAPIManagerTrakttvAccessTokenKey];\n    [[NSUserDefaults standardUserDefaults] synchronize];\n}\n\n+ (NSURL *)trakttvAuthorizationURL\n{\n    NSString *authPath = [NSString stringWithFormat:@\"http://trakt.tv/oauth/authorize?client_id=%@&redirect_uri=%@&response_type=code\",\n                          PTAPIManagerTrakttvClientId,\n                          PTAPIManagerTrakttvRedirectURL];\n    return [NSURL URLWithString:authPath];\n}\n\n- (void)trakttvPerformRequestWithAPIMethod:(NSString *)APIMethod\n                                HTTPMethod:(NSString *)HTTPMethod\n                           HTTPBodyPayload:(NSDictionary *)HTTPBodyPayload\n                             OAuthRequired:(BOOL)OAuthRequired\n                                   success:(void(^)(id JSONObject))success\n                                   failure:(PTAPIManagerFailure)failure\n{\n    NSString *path = [PTAPIManagerTrakttvAPIEndPoint stringByAppendingPathComponent:APIMethod];\n    NSURL *URL = [NSURL URLWithString:path];\n    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];\n    request.HTTPMethod = HTTPMethod;\n    \n    // Configure headers\n    [request addValue:@\"application/json\" forHTTPHeaderField:@\"Content-type\"];\n    [request addValue:PTAPIManagerTrakttvAPIKey forHTTPHeaderField:@\"trakt-api-key\"];\n    [request addValue:PTAPIManagerTrakttvAPIVersion forHTTPHeaderField:@\"trakt-api-version\"];\n    \n    if (OAuthRequired) {\n        NSString *bearerToken = [NSString stringWithFormat:@\"Bearer [%@]\", [PTAPIManager trakttvAccessToken]];\n        [request addValue:bearerToken forHTTPHeaderField:@\"Authorization\"];\n    }\n\n    void (^handleError)(NSError *) = ^(NSError *error) {\n        if (error) { NSLog(@\"%@\", error); if (failure) { failure(error); } }\n    };\n    \n    // Configure body\n    NSError *JSONError;\n    NSData *JSONBody = [NSJSONSerialization dataWithJSONObject:HTTPBodyPayload options:0 error:&JSONError];\n    handleError(JSONError);\n    request.HTTPBody = JSONBody;\n    \n    [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:\n      ^(NSData *data, NSURLResponse *response, NSError *error) {\n          dispatch_async(dispatch_get_main_queue(), ^{\n              if (error) { handleError(error); return; }\n              \n              NSError *JSONError;\n              id JSONObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&JSONError];\n              if (JSONError) { handleError(JSONError); return; }\n              \n              if (success) { success(JSONObject); }\n          });\n      }] resume];\n}\n\n- (void)accessTokenWithAuthorizationCode:(NSString *)authorizationCode\n                                 success:(void(^)(NSString *accessToken))success\n                                 failure:(PTAPIManagerFailure)failure\n{\n    NSString *APIMethod = @\"oauth/token\";\n    NSDictionary *HTTPBodyPayload = @{@\"code\": authorizationCode,\n                                      @\"client_id\": PTAPIManagerTrakttvClientId,\n                                      @\"client_secret\": PTAPIManagerTrakttvClientSecret,\n                                      @\"redirect_uri\": PTAPIManagerTrakttvRedirectURL,\n                                      @\"grant_type\": @\"authorization_code\"};\n    \n    [self trakttvPerformRequestWithAPIMethod:APIMethod\n                                  HTTPMethod:@\"POST\"\n                             HTTPBodyPayload:HTTPBodyPayload\n                               OAuthRequired:NO\n                                     success:^(id JSONObject) {\n                                         if (success) {\n                                             success([((NSDictionary *)JSONObject) objectForKey:@\"access_token\"]);\n                                         }\n                                     }\n                                     failure:failure];\n}\n\n- (void)createListWithName:(NSString *)name\n                   success:(PTAPIManagerSuccessNone)success\n                   failure:(PTAPIManagerFailure)failure\n{\n    NSString *APIMethod = @\"users/me/lists\";\n    NSDictionary *HTTPBodyPayload = @{@\"name\": @\"ololo\",\n                                      @\"description\": @\"ololo\",\n                                      @\"privacy\": @\"private\",\n                                      @\"display_numbers\": @\"false\",\n                                      @\"allow_comments\": @\"true\"};\n\n    [self trakttvPerformRequestWithAPIMethod:APIMethod\n                                  HTTPMethod:@\"POST\"\n                             HTTPBodyPayload:HTTPBodyPayload\n                               OAuthRequired:YES\n    success:nil failure:failure];\n}\n\n */\n \n@end\n"
  },
  {
    "path": "PopcornTime/Models/PTTorrentStreamer.h",
    "content": "//\n//  PTTorrentStreamer.h\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 2/23/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\ntypedef struct {\n    float bufferingProgress;\n    float totalProgreess;\n    int downloadSpeed;\n    int upoadSpeed;\n    int seeds;\n    int peers;\n} PTTorrentStatus;\n\ntypedef void (^PTTorrentStreamerProgress)(PTTorrentStatus status);\ntypedef void (^PTTorrentStreamerReadyToPlay)(NSURL *videoFileURL);\ntypedef void (^PTTorrentStreamerFailure)(NSError *error);\n\n@interface PTTorrentStreamer : NSObject\n\n+ (instancetype)sharedStreamer;\n\n- (void)startStreamingFromFileOrMagnetLink:(NSString *)filePathOrMagnetLink\n                                  progress:(PTTorrentStreamerProgress)progreess\n                               readyToPlay:(PTTorrentStreamerReadyToPlay)readyToPlay\n                                   failure:(PTTorrentStreamerFailure)failure;\n\n- (void)cancelStreaming;\n\n@end\n"
  },
  {
    "path": "PopcornTime/Models/PTTorrentStreamer.mm",
    "content": "//\n//  PTTorrentStreamer.m\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 2/23/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\n#import \"PTTorrentStreamer.h\"\n\n#import <UIKit/UIKit.h>\n\n#import <string>\n#import <libtorrent/session.hpp>\n#import <libtorrent/alert.hpp>\n#import <libtorrent/alert_types.hpp>\n\n#import <CocoaSecurity/CocoaSecurity.h>\n\nusing namespace libtorrent;\n\n@interface PTTorrentStreamer()\n@property (nonatomic, strong) dispatch_queue_t alertsQueue;\n@property (nonatomic, getter=isAlertsLoopActive) BOOL alertsLoopActive;\n@property (nonatomic, strong) NSString *savePath;\n@property (nonatomic, getter=isDownloading) BOOL downloading;\n@property (nonatomic, getter=isStreaming) BOOL streaming;\n\n@property (nonatomic, copy) PTTorrentStreamerProgress progressBlock;\n@property (nonatomic, copy) PTTorrentStreamerReadyToPlay readyToPlayBlock;\n@property (nonatomic, copy) PTTorrentStreamerFailure failureBlock;\n@end\n\n@implementation PTTorrentStreamer\n{\n    session *_session;\n    std::vector<int> required_pieces;\n}\n\n+ (instancetype)sharedStreamer\n{\n    static dispatch_once_t onceToken;\n    static PTTorrentStreamer *sharedStreamer;\n    dispatch_once(&onceToken, ^{\n        sharedStreamer = [[PTTorrentStreamer alloc] init];\n    });\n    return sharedStreamer;\n}\n\n- (instancetype)init\n{\n    self = [super init];\n    if (self) {\n        [self setupSession];\n    }\n    return self;\n}\n\n#pragma mark - \n\n+ (NSString *)downloadsDirectory\n{\n    NSString *downloadsDirectoryPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@\"Downloads\"];\n    if (![[NSFileManager defaultManager] fileExistsAtPath:downloadsDirectoryPath]) {\n        NSError *error;\n        [[NSFileManager defaultManager] createDirectoryAtPath:downloadsDirectoryPath\n                                  withIntermediateDirectories:YES\n                                                   attributes:nil\n                                                        error:&error];\n        if (error) {\n            NSLog(@\"%@\", error);\n            return nil;\n        }\n    }\n    return downloadsDirectoryPath;\n}\n\n- (void)setupSession\n{\n//    _session = new session(fingerprint(\"PopcornTime\", 1, 0, 0, 0),\n//                           std::make_pair(6881, 6889),\n//                           0,\n//                           session::start_default_features | session::add_default_plugins,\n//                           alert::all_categories);\n\n    error_code ec;\n\n    _session = new session();\n    _session->set_alert_mask(alert::all_categories);\n    _session->listen_on(std::make_pair(6881, 6889), ec);\n    if (ec) {\n        NSLog(@\"failed to open listen socket: %s\", ec.message().c_str());\n    }\n    \n    session_settings settings = _session->settings();\n    settings.announce_to_all_tiers = true;\n    settings.announce_to_all_trackers = true;\n    settings.prefer_udp_trackers = false;\n    settings.max_peerlist_size = 0;\n    _session->set_settings(settings);\n}\n\n- (void)startStreamingFromFileOrMagnetLink:(NSString *)filePathOrMagnetLink\n                                  progress:(PTTorrentStreamerProgress)progreess\n                               readyToPlay:(PTTorrentStreamerReadyToPlay)readyToPlay\n                                   failure:(PTTorrentStreamerFailure)failure;\n{\n    self.progressBlock = progreess;\n    self.readyToPlayBlock = readyToPlay;\n    self.failureBlock = failure;\n\n    self.alertsQueue = dispatch_queue_create(\"com.popcorntime.ios.torrentstreamer.alerts\", DISPATCH_QUEUE_SERIAL);\n    self.alertsLoopActive = YES;\n    dispatch_async(self.alertsQueue, ^{\n        [self alertsLoop];\n    });\n    \n    error_code ec;\n    add_torrent_params tp;\n    \n    NSString *MD5String = nil;\n    \n    if ([filePathOrMagnetLink hasPrefix:@\"magnet\"]) {\n        NSString *magnetLink = filePathOrMagnetLink;\n        magnetLink = [magnetLink stringByAppendingString:@\"&tr=udp://open.demonii.com:1337\"\n                                                          \"&tr=udp://tracker.coppersurfer.tk:6969\"];\n        tp.url = std::string([magnetLink UTF8String]);\n        \n        MD5String = [CocoaSecurity md5:magnetLink].hexLower;\n    } else {\n        NSString *filePath = filePathOrMagnetLink;\n        if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {\n            NSData *fileData = [NSData dataWithContentsOfFile:filePath];\n            MD5String = [CocoaSecurity md5WithData:fileData].hexLower;\n            \n            tp.ti = new torrent_info([filePathOrMagnetLink UTF8String], ec);\n            if (ec) {\n                NSLog(@\"%s\", ec.message().c_str());\n                return;\n            }\n        } else {\n            NSLog(@\"File doesn't exists at path: %@\", filePath);\n            return;\n        }\n    }\n\n    NSString *halfMD5String = [MD5String substringToIndex:16];\n    self.savePath = [[PTTorrentStreamer downloadsDirectory] stringByAppendingPathComponent:halfMD5String];\n    \n    NSError *error;\n    [[NSFileManager defaultManager] createDirectoryAtPath:self.savePath\n                              withIntermediateDirectories:YES\n                                               attributes:nil\n                                                    error:&error];\n    if (error) {\n        NSLog(@\"Can't create directory at path: %@\", self.savePath);\n        return;\n    }\n\n    tp.save_path = std::string([self.savePath UTF8String]);\n    tp.storage_mode = storage_mode_allocate;\n    \n    torrent_handle th = _session->add_torrent(tp, ec);\n    th.set_sequential_download(true);\n    \n    if (ec) {\n        NSLog(@\"%s\", ec.message().c_str());\n        return;\n    }\n    \n    self.downloading = YES;\n    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;\n}\n\n- (void)cancelStreaming\n{\n    if ([self isDownloading]) {\n        self.alertsQueue = nil;\n        self.alertsLoopActive = NO;\n\n        std::vector<torrent_handle> ths = _session->get_torrents();\n        for(std::vector<torrent_handle>::size_type i = 0; i != ths.size(); i++) {\n            _session->remove_torrent(ths[i], session::delete_files);\n        }\n        \n        required_pieces.clear();\n        \n        self.progressBlock = nil;\n        self.readyToPlayBlock = nil;\n        self.failureBlock = nil;\n\n        NSError *error;\n        [[NSFileManager defaultManager] removeItemAtPath:self.savePath error:&error];\n        if (error) NSLog(@\"%@\", error);\n        \n        self.savePath = nil;\n        \n        self.streaming = NO;\n        self.downloading = NO;\n        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;\n    }\n}\n\n#pragma mark - Alerts Loop\n\n#define ALERTS_LOOP_WAIT_MILLIS 500\n#define MIN_PIECES 15\n#define PIECE_DEADLINE_MILLIS 100\n#define LIBTORRENT_PRIORITY_SKIP 0\n#define LIBTORRENT_PRIORITY_MAXIMUM 7\n\n- (void)alertsLoop\n{\n    std::deque<alert *> deque;\n    time_duration max_wait = milliseconds(ALERTS_LOOP_WAIT_MILLIS);\n    \n    while ([self isAlertsLoopActive])\n    {\n        const alert *ptr = _session->wait_for_alert(max_wait);\n        if (ptr != nullptr) {\n            _session->pop_alerts(&deque);\n            for (std::deque<alert *>::iterator it=deque.begin(); it != deque.end(); ++it) {\n                std::unique_ptr<alert> alert(*it);\n//                NSLog(@\"type:%d msg:%s\", alert->type(), alert->message().c_str());\n                switch (alert->type()) {\n                    case metadata_received_alert::alert_type:\n                        [self metadataReceivedAlert:(metadata_received_alert *)alert.get()];\n                        break;\n                    case block_finished_alert::alert_type:\n                        [self pieceFinishedAlert:(piece_finished_alert *)alert.get()];\n                        break;\n                    // In case the video file is already fully downloaded\n                    case torrent_finished_alert::alert_type:\n                        [self torrentFinishedAlert:(torrent_finished_alert *)alert.get()];\n                        break;\n                    default: break;\n                }\n            }\n            deque.clear();\n        }\n    }\n}\n\n- (void)prioritizeNextPieces:(torrent_handle)th\n{\n    int next_required_piece = required_pieces[MIN_PIECES-1]+1;\n    required_pieces.clear();\n    \n    boost::intrusive_ptr<const torrent_info> ti = th.torrent_file();\n    \n    for (int i=next_required_piece; i<next_required_piece+MIN_PIECES; i++) {\n        if (i < ti->num_pieces()) {\n            th.piece_priority(i, LIBTORRENT_PRIORITY_MAXIMUM);\n            th.set_piece_deadline(i, PIECE_DEADLINE_MILLIS, torrent_handle::alert_when_available);\n            required_pieces.push_back(i);\n        }\n    }\n}\n\n- (void)processTorrent:(torrent_handle)th\n{\n    if (![self isStreaming]) {\n        self.streaming = YES;\n        if (self.readyToPlayBlock) {\n            boost::intrusive_ptr<const torrent_info> ti = th.torrent_file();\n            int file_index = [self indexOfLargestFileInTorrent:th];\n            file_entry fe = ti->file_at(file_index);\n            std::string path = fe.path;\n            \n            NSString *fileName = [NSString stringWithCString:path.c_str() encoding:NSUTF8StringEncoding];\n            NSURL *fileURL = [NSURL fileURLWithPath:[self.savePath stringByAppendingPathComponent:fileName]];\n            \n            dispatch_async(dispatch_get_main_queue(), ^{\n                self.readyToPlayBlock(fileURL);\n            });\n        }\n    }\n}\n\n- (int)indexOfLargestFileInTorrent:(torrent_handle)th\n{\n    boost::intrusive_ptr<const torrent_info> ti = th.torrent_file();\n    int files_count = ti->num_files();\n    if (files_count > 1) {\n        size_type largest_size = -1;\n        int largest_file_index = -1;\n        for (int i=0; i<files_count; i++) {\n            file_entry fe = ti->file_at(i);\n            if (fe.size > largest_size) {\n                largest_size = fe.size;\n                largest_file_index = i;\n            }\n        }\n        return largest_file_index;\n    }\n    return 0;\n}\n\n#pragma mark - Logging\n\n- (void)logPiecesStatus:(torrent_handle)th\n{\n    NSString *pieceStatus = @\"\";\n    boost::intrusive_ptr<const torrent_info> ti = th.torrent_file();\n    for(std::vector<int>::size_type i=0; i!=required_pieces.size(); i++) {\n        int piece = required_pieces[i];\n        pieceStatus = [pieceStatus stringByAppendingFormat:@\"%d:%d \", piece, th.have_piece(piece)];\n    }\n    NSLog(@\"%@\", pieceStatus);\n}\n\n- (void)logTorrentStatus:(PTTorrentStatus)status\n{\n    NSString *speedString = [NSByteCountFormatter stringFromByteCount:status.downloadSpeed\n                                                           countStyle:NSByteCountFormatterCountStyleBinary];\n    NSLog(@\"%.0f%%, %.0f%%, %@/s, %d, %d\",\n          status.bufferingProgress*100, status.totalProgreess*100,\n          speedString, status.seeds, status.peers);\n}\n\n#pragma mark - Alerts\n\n- (void)metadataReceivedAlert:(metadata_received_alert *)alert\n{\n    torrent_handle th = alert->handle;\n    int file_index = [self indexOfLargestFileInTorrent:th];\n\n    std::vector<int> file_priorities = th.file_priorities();\n    std::fill(file_priorities.begin(), file_priorities.end(), LIBTORRENT_PRIORITY_SKIP);\n    file_priorities[file_index] = LIBTORRENT_PRIORITY_MAXIMUM;\n    th.prioritize_files(file_priorities);\n    \n    boost::intrusive_ptr<const torrent_info> ti = th.torrent_file();\n    int first_piece = ti->map_file(file_index, 0, 0).piece;\n    for (int i=first_piece; i<first_piece+MIN_PIECES; i++) {\n        required_pieces.push_back(i);\n    }\n\n    size_type file_size = ti->file_at(file_index).size;\n    int last_piece = ti->map_file(file_index, file_size-1, 0).piece;\n    required_pieces.push_back(last_piece);\n    \n    for (int i=1; i<10; i++) {\n        required_pieces.push_back(last_piece-i);\n    }\n    \n    for(std::vector<int>::size_type i=0; i!=required_pieces.size(); i++) {\n        int piece = required_pieces[i];\n        th.piece_priority(piece, LIBTORRENT_PRIORITY_MAXIMUM);\n        th.set_piece_deadline(piece, PIECE_DEADLINE_MILLIS, torrent_handle::alert_when_available);\n    }\n}\n\n- (void)pieceFinishedAlert:(piece_finished_alert *)alert\n{\n    torrent_handle th = alert->handle;\n    torrent_status status = th.status();\n    \n    int requiredPiecesDownloaded = 0;\n    BOOL allRequiredPiecesDownloaded = YES;\n    for(std::vector<int>::size_type i=0; i!=required_pieces.size(); i++) {\n        int piece = required_pieces[i];\n        if (th.have_piece(piece)) {\n            requiredPiecesDownloaded++;\n        } else {\n            allRequiredPiecesDownloaded = NO;            \n        }\n    }\n    \n    [self logPiecesStatus:th];\n    \n    int requiredPieces = (int)required_pieces.size();\n    float bufferingProgress = 1.0 - (requiredPieces-requiredPiecesDownloaded)/(float)requiredPieces;\n    \n    PTTorrentStatus torrentStatus = {bufferingProgress,\n                                    status.progress,\n                                    status.download_rate,\n                                    status.upload_rate,\n                                    status.num_seeds,\n                                    status.num_peers};\n    [self logTorrentStatus:torrentStatus];\n    \n    if (self.progressBlock) {\n        dispatch_async(dispatch_get_main_queue(), ^{\n            self.progressBlock(torrentStatus);\n        });\n    }\n    \n    if (allRequiredPiecesDownloaded) {\n        [self prioritizeNextPieces:th];\n        [self processTorrent:th];\n    }\n}\n\n- (void)torrentFinishedAlert:(torrent_finished_alert *)alert\n{\n    [self processTorrent:alert->handle];\n}\n\n@end\n"
  },
  {
    "path": "PopcornTime/Models/ParseManager.swift",
    "content": "//\n//  ParseManager.swift\n//  \n//\n//  Created by Andriy K. on 6/23/15.\n//\n//\n\nimport UIKit\n\nclass ParseShowData: NSObject {\n    \n    private var collection = [String : PFObject]()\n    \n    convenience init(episodesFromParse: [PFObject]) {\n        self.init()\n        for episode in episodesFromParse {\n            let seasonIndex = episode.objectForKey(ParseManager.sharedInstance.seasonKey) as! Int\n            let episodeIndex = episode.objectForKey(ParseManager.sharedInstance.episodeKey) as! Int\n            let key = dictKey(seasonIndex, episode: episodeIndex)\n            collection[key] = episode\n        }\n    }\n    \n    func isEpisodeWatched(season: Int, episode: Int) -> Bool {\n        let key = dictKey(season, episode: episode)\n        if let episode = collection[key] {\n            if let isWatched = episode.objectForKey(ParseManager.sharedInstance.watchedKey) as? Bool {\n                return isWatched\n            }\n        }\n        return false\n    }\n    \n    private func dictKey(season: Int, episode: Int) -> String {\n        return \"\\(season)_\\(episode)\"\n    }\n    \n}\n\nclass ParseManager: NSObject {\n    \n    static let sharedInstance = ParseManager()\n    \n    let showClassName = \"Show\"\n    let episodeClassName = \"Episode\"\n    let showIdKey = \"showId\"\n    let userKey = \"user\"\n    let titleKey = \"title\"\n    let seasonKey = \"season\"\n    let episodeKey = \"episodeNumber\"\n    let showKey = \"show\"\n    let watchedKey = \"watched\"\n    \n    private override init() {\n    }\n    \n    // MARK: - Public API\n    \n    var user: PFUser? {\n        return PFUser.currentUser()\n    }\n    \n    func markEpisode(episodeInfo: Episode, basicInfo: BasicInfo) {\n        if let user = user {\n            let query = PFQuery(className:showClassName)\n            query.whereKey(userKey, equalTo:user)\n            query.whereKey(showIdKey, equalTo:basicInfo.identifier)\n            query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in\n                \n                var show: PFObject\n                \n                if let object = objects?.first as PFObject? {\n                    show = object\n                } else {\n                    show = PFObject(className: self.showClassName)\n                    show.setObject(basicInfo.identifier, forKey: self.showIdKey)\n                    if let title = basicInfo.title {\n                        show.setObject(title, forKey: self.titleKey)\n                    }\n                    let relation = show.relationForKey(self.userKey)\n                    relation.addObject(user)\n                }\n                \n                show.saveInBackgroundWithBlock({ (success, error) -> Void in\n\n                    let queryEpisode = PFQuery(className:self.episodeClassName)\n                    queryEpisode.whereKey(self.seasonKey, equalTo:episodeInfo.seasonNumber)\n                    queryEpisode.whereKey(self.episodeKey, equalTo:episodeInfo.episodeNumber)\n                    queryEpisode.whereKey(self.showKey, equalTo: show)\n                    \n                    queryEpisode.findObjectsInBackgroundWithBlock { (episodes, episodeError) -> Void in\n\n                        var episode: PFObject\n                        \n                        if let ep = episodes?.first as PFObject? {\n                            episode = ep\n                        } else {\n                            let newEpisode = PFObject(className: self.episodeClassName)\n                            let relationShow = newEpisode.relationForKey(self.showKey)\n                            relationShow.addObject(show)\n                            newEpisode.setObject(episodeInfo.seasonNumber, forKey: self.seasonKey)\n                            newEpisode.setObject(episodeInfo.episodeNumber, forKey: self.episodeKey)\n                            episode = newEpisode\n                        }\n                        episode.setObject(true, forKey: self.watchedKey)\n                        \n                        episode.saveInBackgroundWithBlock(nil)\n                    }\n                })\n            }\n        }\n    }\n    \n    /// Mark  [Episode] as watched on Parse.\n    func markEpisodes(episodesInfo: [Episode], basicInfo: BasicInfo, completionHandler: PFBooleanResultBlock?) {\n        \n        if episodesInfo.count == 0 {\n            return\n        }\n\n        let episodeNumbers = episodesInfo.map(){ episode in\n            return episode.episodeNumber\n        }\n        let seasonNumber = episodesInfo.first!.seasonNumber\n\n        \n        if let user = user {\n            let query = PFQuery(className:showClassName)\n            query.whereKey(userKey, equalTo:user)\n            query.whereKey(showIdKey, equalTo:basicInfo.identifier)\n            query.findObjectsInBackgroundWithBlock {\n                (objects, error) -> Void in\n\n                var show: PFObject\n\n                if let object = objects?.first as PFObject? {\n                    show = object\n                } else {\n                    show = PFObject(className: self.showClassName)\n                    show.setObject(basicInfo.identifier, forKey: self.showIdKey)\n                    if let title = basicInfo.title {\n                        show.setObject(title, forKey: self.titleKey)\n                    }\n                    let relation = show.relationForKey(self.userKey)\n                    relation.addObject(user)\n                }\n\n                show.saveInBackgroundWithBlock({ (success, error) -> Void in\n                    let queryEpisode = PFQuery(className:self.episodeClassName)\n                    queryEpisode.whereKey(self.seasonKey, equalTo: seasonNumber)\n                    queryEpisode.whereKey(self.episodeKey, containedIn: episodeNumbers)\n                    queryEpisode.whereKey(self.showKey, equalTo: show)\n                    \n                    queryEpisode.findObjectsInBackgroundWithBlock { (results, episodeError) -> Void in\n                        \n                        var marked = [UInt]()\n                        var pfObjects = [PFObject]()\n                        \n                        if let parseEpisodes = results as [PFObject]? {\n                            print(\"\\(parseEpisodes.count): episodes already on Parse\")\n                            for parseEp in parseEpisodes {\n                                parseEp.setObject(true, forKey: self.watchedKey)\n                                if let parseEpNumber = parseEp.objectForKey(self.episodeKey) as? UInt {\n                                    marked.append(parseEpNumber)\n                                    pfObjects.append(parseEp)\n                                    print(\"parse ep:\\(parseEpNumber) marked\")\n                                }\n                            }\n                        }\n            \n                        \n                        for ep in episodesInfo {\n                            if marked.contains(ep.episodeNumber) == false {\n                                let newEpisode = PFObject(className: self.episodeClassName)\n                                let relationShow = newEpisode.relationForKey(self.showKey)\n                                relationShow.addObject(show)\n                                newEpisode.setObject(ep.seasonNumber, forKey: self.seasonKey)\n                                newEpisode.setObject(ep.episodeNumber, forKey: self.episodeKey)\n                                newEpisode.setObject(true, forKey: self.watchedKey)\n                                marked.append(ep.episodeNumber)\n                                pfObjects.append(newEpisode)\n                                print(\"ep:\\(ep.episodeNumber) marked\")\n                            }\n                        }\n                        \n                        PFObject.saveAllInBackground(pfObjects, block: completionHandler)\n                    }\n                })\n            }\n        }\n    }\n    \n    func parseEpisodesData(basicInfo: BasicInfo, handler: (ParseShowData) -> Void) {\n        if let user = user {\n            let query = PFQuery(className: showClassName)\n            query.whereKey(userKey, equalTo: user)\n            query.whereKey(showIdKey, equalTo:basicInfo.identifier)\n            query.findObjectsInBackgroundWithBlock({ (results, error) -> Void in\n                if let show = results?.first as PFObject? {\n                    let queryEpisode = PFQuery(className: self.episodeClassName)\n                    queryEpisode.whereKey(self.showKey, equalTo: show)\n                    do {\n                        let episodes = try queryEpisode.findObjects() as [PFObject]\n                        let parserData = ParseShowData(episodesFromParse: episodes)\n                        handler(parserData)\n                    } catch let error as  NSError {\n                        print(error)\n                    }\n                }\n            })\n        }\n    }\n    \n}\n"
  },
  {
    "path": "PopcornTime/Models/Show.swift",
    "content": "//\n//  Show.swift\n//  PopcornTime\n//\n//  Created by Danylo Kostyshyn on 3/19/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport Foundation\n\nclass Show: BasicInfo {\n    var seasons = [Season]()\n\n    func thumbnail(_ original: String) -> String {\n        return original.replacingOccurrences(of: \"original\", with: \"thumb\",\n            options: NSString.CompareOptions.caseInsensitive, range: nil)\n    }\n    \n    required init(dictionary: [AnyHashable: Any]) {\n        super.init(dictionary: dictionary)\n        \n        identifier = dictionary[\"imdb_id\"] as! String\n        title = dictionary[\"title\"] as? String\n        year = dictionary[\"year\"] as? String\n        \n        if let imagesDict = dictionary[\"images\"] as? NSDictionary {\n            images = [Image]()\n            if let banner = imagesDict[\"banner\"] as? String {\n                let URL = Foundation.URL(string: thumbnail(banner))\n                let image = Image(URL: URL!, type: .banner)\n                images.append(image)\n            }\n            if let fanart = imagesDict[\"fanart\"] as? String {\n                let URL = Foundation.URL(string: thumbnail(fanart))\n                let image = Image(URL: URL!, type: .fanart)\n                images.append(image)\n            }\n            if let poster = imagesDict[\"poster\"] as? String {\n                let URL = Foundation.URL(string: thumbnail(poster))\n                let image = Image(URL: URL!, type: .poster)\n                images.append(image)\n            }\n            \n            smallImage = images.filter({$0.type == ImageType.poster}).first\n            bigImage = images.filter({$0.type == ImageType.fanart}).first\n        }\n    }\n\n    required init(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)!\n    }\n\n    override func update(_ dictionary: [AnyHashable: Any]) {\n        synopsis = dictionary[\"synopsis\"] as? String\n        \n        seasons.removeAll(keepingCapacity: true)\n        var allEpisodes = [Episode]()\n        var allSeasonsNumbers = [UInt:Bool]()\n        \n        guard let episodesDicts = dictionary[\"episodes\"] as? [[AnyHashable: Any]] else { return }\n        for episodeDict in episodesDicts {\n\n            var videos = [Video]()\n\n            if let torrents = episodeDict[\"torrents\"] as? [String : NSDictionary] {\n                for torrent in torrents {\n                    let quality = torrent.0\n                    if quality == \"0\" {\n                        continue\n                    }\n                    \n                    let url = torrent.1[\"url\"] as! String\n                    \n                    let video = Video(name: nil, quality: quality, size: 0, duration: 0, subGroup: nil, magnetLink: url)\n                    videos.append(video)\n                }\n            }\n            \n            videos = videos.sorted(by: { (a, b) -> Bool in\n                var aQuality: Int = 0\n                Scanner(string: a.quality!).scanInt(&aQuality)\n\n                var bQuality: Int = 0\n                Scanner(string: b.quality!).scanInt(&bQuality)\n                \n                return aQuality < bQuality\n            })\n\n            let seasonNumber = (episodeDict[\"season\"] as! UInt)\n            if (allSeasonsNumbers[seasonNumber] == nil) {\n                allSeasonsNumbers[seasonNumber] = true\n            }\n            \n            let title = episodeDict[\"title\"] as? String\n            let episodeNumber = (episodeDict[\"episode\"] as! UInt)\n\n            let synopsis = episodeDict[\"overview\"] as? String\n            let episode = Episode(title: title, desc: synopsis, seasonNumber: seasonNumber, episodeNumber: episodeNumber, videos: videos)\n            allEpisodes.append(episode)\n        }\n        \n        var seasonsNumbers = Array(allSeasonsNumbers.keys)\n        seasonsNumbers.sort(by: { (a, b) -> Bool in\n            return a < b\n        })\n        \n        for seasonNumber in seasonsNumbers {\n            let seasonEpisodes = allEpisodes.filter({ (episode) -> Bool in\n                return episode.seasonNumber == seasonNumber\n            })\n            \n            if seasonEpisodes.count > 0{\n                let season = Season(seasonNumber: seasonNumber, episodes: seasonEpisodes)\n                seasons.append(season)\n            }\n        }\n    }\n}\n\nextension Show: ContainsEpisodes {\n    func episodeFor(seasonIndex: Int, episodeIndex: Int) -> Episode {\n        let episode = seasons[seasonIndex].episodes[episodeIndex]\n        return episode\n    }\n    \n    func episodesFor(seasonIndex: Int) -> [Episode] {\n        return seasons[seasonIndex].episodes\n    }\n}\n"
  },
  {
    "path": "PopcornTime/PopcornTime-Bridging-Header.h",
    "content": "//\n//  Use this file to import your target's public headers that you would like to expose to Swift.\n//\n\n#import \"PTAPIManager.h\"\n#import \"PTTorrentStreamer.h\"\n#import \"VDLPlaybackViewController.h\"\n#import <CocoaSecurity/CocoaSecurity.h>\n#import <SDWebImage/UIImageView+WebCache.h>\n#import <SDWebImage/SDWebImageDownloader.h>\n"
  },
  {
    "path": "PopcornTime/Resources/Images.xcassets/AnimeIcon.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\",\n      \"filename\" : \"anime.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "PopcornTime/Resources/Images.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      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"AppIcon60@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"AppIcon76.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"AppIcon76@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"83.5x83.5\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "PopcornTime/Resources/Images.xcassets/BigLogo.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\",\n      \"filename\" : \"popcorn-time-logo.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "PopcornTime/Resources/Images.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "PopcornTime/Resources/Images.xcassets/SubwayIconSet/AddToFavoritesIcon.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\",\n      \"filename\" : \"icon_087@2x.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "PopcornTime/Resources/Images.xcassets/SubwayIconSet/FavoritesIcon.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\",\n      \"filename\" : \"icon_086@2x.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "PopcornTime/Resources/Images.xcassets/SubwayIconSet/MoviesIcon.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\",\n      \"filename\" : \"icon_0281@2x.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "PopcornTime/Resources/Images.xcassets/SubwayIconSet/RemoveFromFavoritesIcon.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\",\n      \"filename\" : \"icon_088@2x.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "PopcornTime/Resources/Images.xcassets/SubwayIconSet/SettingsIcon.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\",\n      \"filename\" : \"icon_0186@2x.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "PopcornTime/Resources/Images.xcassets/SubwayIconSet/ShowsIcon.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\",\n      \"filename\" : \"icon_0304@2x.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "PopcornTime/Resources/Launch Screen.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"7702\" systemVersion=\"14D136\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"7701\"/>\n        <capability name=\"Aspect ratio constraints\" minToolsVersion=\"5.1\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"iN0-l3-epB\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"480\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2Lc-RQ-qUE\" userLabel=\"container\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"480\"/>\n                    <subviews>\n                        <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" image=\"BigLogo\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"bs5-NJ-V6F\">\n                            <rect key=\"frame\" x=\"96\" y=\"92\" width=\"288\" height=\"296\"/>\n                            <constraints>\n                                <constraint firstAttribute=\"width\" secondItem=\"bs5-NJ-V6F\" secondAttribute=\"height\" multiplier=\"245:251\" id=\"Gm1-O8-hkp\"/>\n                            </constraints>\n                        </imageView>\n                    </subviews>\n                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                    <constraints>\n                        <constraint firstItem=\"bs5-NJ-V6F\" firstAttribute=\"width\" secondItem=\"2Lc-RQ-qUE\" secondAttribute=\"width\" multiplier=\"0.6\" id=\"36t-4H-fXB\"/>\n                        <constraint firstAttribute=\"centerY\" secondItem=\"bs5-NJ-V6F\" secondAttribute=\"centerY\" id=\"74X-ZS-r3g\"/>\n                        <constraint firstAttribute=\"centerX\" secondItem=\"bs5-NJ-V6F\" secondAttribute=\"centerX\" id=\"wqp-gX-LAI\"/>\n                    </constraints>\n                </view>\n            </subviews>\n            <color key=\"backgroundColor\" red=\"0.066666666669999999\" green=\"0.070588235289999995\" blue=\"0.078431372550000003\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n            <constraints>\n                <constraint firstAttribute=\"trailing\" secondItem=\"2Lc-RQ-qUE\" secondAttribute=\"trailing\" id=\"2Bj-4U-BT4\"/>\n                <constraint firstItem=\"2Lc-RQ-qUE\" firstAttribute=\"top\" secondItem=\"iN0-l3-epB\" secondAttribute=\"top\" id=\"JNM-Yd-jIm\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"2Lc-RQ-qUE\" secondAttribute=\"bottom\" id=\"JOE-UV-868\"/>\n                <constraint firstItem=\"2Lc-RQ-qUE\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" id=\"xnf-ZZ-Dah\"/>\n            </constraints>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n            <point key=\"canvasLocation\" x=\"404\" y=\"445\"/>\n        </view>\n    </objects>\n    <resources>\n        <image name=\"BigLogo\" width=\"490\" height=\"502\"/>\n    </resources>\n</document>\n"
  },
  {
    "path": "PopcornTime/Resources/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"9532\" systemVersion=\"15D21\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" initialViewController=\"dfX-fY-8T0\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"9530\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Colorfull Tab Bar Controller-->\n        <scene sceneID=\"go6-cJ-rM0\">\n            <objects>\n                <tabBarController id=\"dfX-fY-8T0\" customClass=\"ColorfullTabBarController\" customModule=\"PopcornTime\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <nil key=\"simulatedBottomBarMetrics\"/>\n                    <tabBar key=\"tabBar\" contentMode=\"scaleToFill\" barStyle=\"black\" id=\"FiG-nQ-Gwx\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"49\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                    </tabBar>\n                    <connections>\n                        <segue destination=\"ZTe-Ju-nKb\" kind=\"relationship\" relationship=\"viewControllers\" id=\"sbB-u7-VOB\"/>\n                        <segue destination=\"laf-Ml-R54\" kind=\"relationship\" relationship=\"viewControllers\" id=\"tEU-Ig-sn6\"/>\n                        <segue destination=\"Q7f-F1-kvd\" kind=\"relationship\" relationship=\"viewControllers\" id=\"n73-1d-JO5\"/>\n                        <segue destination=\"3CV-c3-dhf\" kind=\"relationship\" relationship=\"viewControllers\" id=\"2PJ-Zl-Jde\"/>\n                    </connections>\n                </tabBarController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"mBP-kZ-5Xx\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"112\" y=\"245\"/>\n        </scene>\n        <!--Anime View Controller-->\n        <scene sceneID=\"L5L-Yx-H6c\">\n            <objects>\n                <viewController id=\"ADj-go-OwF\" customClass=\"AnimeViewController\" customModule=\"PopcornTime\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"AUE-h9-rJL\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"i2R-TO-heN\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"yYN-t5-Uth\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"N8O-87-354\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"RCM-ag-Wek\">\n                                    <size key=\"itemSize\" width=\"50\" height=\"50\"/>\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\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstItem=\"N8O-87-354\" firstAttribute=\"top\" secondItem=\"yYN-t5-Uth\" secondAttribute=\"topMargin\" id=\"Cxr-Mw-YDd\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"N8O-87-354\" secondAttribute=\"bottom\" id=\"NZx-Vo-Vo3\"/>\n                            <constraint firstItem=\"i2R-TO-heN\" firstAttribute=\"top\" secondItem=\"N8O-87-354\" secondAttribute=\"bottom\" id=\"OUd-9y-xga\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"N8O-87-354\" secondAttribute=\"trailing\" id=\"OgF-Q6-JQm\"/>\n                            <constraint firstItem=\"N8O-87-354\" firstAttribute=\"leading\" secondItem=\"yYN-t5-Uth\" secondAttribute=\"leading\" id=\"TdS-vL-frL\"/>\n                        </constraints>\n                        <variation key=\"default\">\n                            <mask key=\"constraints\">\n                                <exclude reference=\"OUd-9y-xga\"/>\n                            </mask>\n                        </variation>\n                    </view>\n                    <navigationItem key=\"navigationItem\" id=\"jQM-dh-vnA\"/>\n                    <connections>\n                        <outlet property=\"collectionView\" destination=\"N8O-87-354\" id=\"r49-VW-vZu\"/>\n                        <outlet property=\"collectionViewLayout\" destination=\"RCM-ag-Wek\" id=\"x5y-ZA-Aax\"/>\n                        <segue destination=\"nkV-Ie-GtD\" kind=\"show\" identifier=\"showDetails\" id=\"xDB-pc-cYk\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"FI3-gN-OJO\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1854\" y=\"245\"/>\n        </scene>\n        <!--Shows View Controller-->\n        <scene sceneID=\"BPf-qC-CkQ\">\n            <objects>\n                <viewController id=\"n2I-Pn-G6j\" customClass=\"ShowsViewController\" customModule=\"PopcornTime\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"WM1-Br-eA8\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"8Y2-ZI-Ufs\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"IDd-dj-rlb\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"J0Q-3v-mYi\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"xZ1-3i-1vR\">\n                                    <size key=\"itemSize\" width=\"50\" height=\"50\"/>\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\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstItem=\"J0Q-3v-mYi\" firstAttribute=\"leading\" secondItem=\"IDd-dj-rlb\" secondAttribute=\"leading\" id=\"99C-v0-KHb\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"J0Q-3v-mYi\" secondAttribute=\"trailing\" id=\"9UZ-xj-dko\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"J0Q-3v-mYi\" secondAttribute=\"bottom\" id=\"ma4-3V-HrV\"/>\n                            <constraint firstItem=\"J0Q-3v-mYi\" firstAttribute=\"top\" secondItem=\"IDd-dj-rlb\" secondAttribute=\"top\" id=\"yal-op-ilq\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" id=\"VsR-2O-52e\"/>\n                    <connections>\n                        <outlet property=\"collectionView\" destination=\"J0Q-3v-mYi\" id=\"Bgc-Bn-K8T\"/>\n                        <outlet property=\"collectionViewLayout\" destination=\"xZ1-3i-1vR\" id=\"Y07-LZ-q9e\"/>\n                        <segue destination=\"6yf-Ps-CJA\" kind=\"show\" identifier=\"showDetails\" id=\"MyM-AG-rLN\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"MVB-v7-qj7\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1854\" y=\"-662\"/>\n        </scene>\n        <!--Anime Details View Controller-->\n        <scene sceneID=\"AiH-fe-1fY\">\n            <objects>\n                <viewController id=\"nkV-Ie-GtD\" customClass=\"AnimeDetailsViewController\" customModule=\"PopcornTime\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"QRb-xd-WiJ\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"wed-jV-2Ok\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"RxB-Ov-N2l\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kC7-OM-puy\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"ozd-IJ-kA9\" customClass=\"StratchyHeaderLayout\" customModule=\"PopcornTime\" customModuleProvider=\"target\">\n                                    <size key=\"itemSize\" width=\"50\" height=\"50\"/>\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=\"5\" minY=\"15\" maxX=\"5\" maxY=\"0.0\"/>\n                                </collectionViewFlowLayout>\n                                <cells>\n                                    <collectionViewCell opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" reuseIdentifier=\"EpisodeCell\" id=\"X2h-M0-N3e\">\n                                        <rect key=\"frame\" x=\"5\" y=\"79\" width=\"50\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"50\" height=\"50\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                        </view>\n                                        <color key=\"backgroundColor\" red=\"1\" green=\"0.60942627989999998\" blue=\"0.53172264930000002\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                    </collectionViewCell>\n                                </cells>\n                            </collectionView>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstItem=\"kC7-OM-puy\" firstAttribute=\"top\" secondItem=\"QRb-xd-WiJ\" secondAttribute=\"bottom\" id=\"7Pu-By-DOS\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"kC7-OM-puy\" secondAttribute=\"bottom\" id=\"Ecj-IN-zJN\"/>\n                            <constraint firstItem=\"kC7-OM-puy\" firstAttribute=\"top\" secondItem=\"RxB-Ov-N2l\" secondAttribute=\"topMargin\" id=\"He9-Cj-d5V\"/>\n                            <constraint firstItem=\"kC7-OM-puy\" firstAttribute=\"leading\" secondItem=\"RxB-Ov-N2l\" secondAttribute=\"leading\" id=\"akD-31-hvB\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"kC7-OM-puy\" secondAttribute=\"trailing\" id=\"cVC-Oz-LNb\"/>\n                        </constraints>\n                        <variation key=\"default\">\n                            <mask key=\"constraints\">\n                                <exclude reference=\"7Pu-By-DOS\"/>\n                            </mask>\n                        </variation>\n                    </view>\n                    <connections>\n                        <outlet property=\"collectionView\" destination=\"kC7-OM-puy\" id=\"GQN-oz-xCA\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"17j-G1-ovt\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2650\" y=\"245\"/>\n        </scene>\n        <!--Shows-->\n        <scene sceneID=\"Gqz-GQ-l19\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"Q7f-F1-kvd\" sceneMemberID=\"viewController\">\n                    <tabBarItem key=\"tabBarItem\" title=\"Shows\" image=\"ShowsIcon\" id=\"Mo0-0H-mG1\"/>\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" barStyle=\"black\" id=\"9UF-I7-giv\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"n2I-Pn-G6j\" kind=\"relationship\" relationship=\"rootViewController\" id=\"2DI-dw-H8V\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"F6Y-qB-7Qf\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1009\" y=\"-662\"/>\n        </scene>\n        <!--Anime-->\n        <scene sceneID=\"eYU-Fj-ZHe\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"3CV-c3-dhf\" sceneMemberID=\"viewController\">\n                    <tabBarItem key=\"tabBarItem\" title=\"Anime\" image=\"AnimeIcon\" id=\"3HV-jo-aj6\"/>\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" barStyle=\"black\" id=\"jM2-Oi-TbS\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"ADj-go-OwF\" kind=\"relationship\" relationship=\"rootViewController\" id=\"6Pa-6X-tyy\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"eoB-VP-4Xl\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"986\" y=\"253\"/>\n        </scene>\n        <!--Loading View Controller-->\n        <scene sceneID=\"3uL-Yr-CLa\">\n            <objects>\n                <viewController storyboardIdentifier=\"loadingViewController\" id=\"bUe-YS-Bfo\" customClass=\"LoadingViewController\" customModule=\"PopcornTime\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"0OC-Vl-SlB\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"a3I-lb-Ai6\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ge5-4i-c4F\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <visualEffectView opaque=\"NO\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3jf-HN-lVz\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"600\" height=\"580\"/>\n                                <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" id=\"Bbw-Ra-hAv\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"580\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <subviews>\n                                        <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Eno-Np-eyT\" userLabel=\"Container View\">\n                                            <rect key=\"frame\" x=\"170\" y=\"150\" width=\"260\" height=\"280\"/>\n                                            <subviews>\n                                                <progressView opaque=\"NO\" contentMode=\"scaleToFill\" verticalHuggingPriority=\"750\" fixedFrame=\"YES\" progress=\"0.5\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"iQF-mn-H34\">\n                                                    <rect key=\"frame\" x=\"20\" y=\"85\" width=\"220\" height=\"2\"/>\n                                                </progressView>\n                                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" fixedFrame=\"YES\" text=\"99%\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Dyu-uI-e3s\" userLabel=\"Progress Label\">\n                                                    <rect key=\"frame\" x=\"55\" y=\"95\" width=\"150\" height=\"21\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" fixedFrame=\"YES\" text=\"Speed: 1.5 MB/s\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ZtX-Eh-3Ck\" userLabel=\"Speed Label\">\n                                                    <rect key=\"frame\" x=\"55\" y=\"124\" width=\"150\" height=\"21\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" fixedFrame=\"YES\" text=\"Seeds: 20\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"odl-qX-n2O\" userLabel=\"Seeds Label\">\n                                                    <rect key=\"frame\" x=\"55\" y=\"153\" width=\"150\" height=\"21\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" fixedFrame=\"YES\" text=\"Peers: 20\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"HhI-Ni-8J8\" userLabel=\"Peers Label\">\n                                                    <rect key=\"frame\" x=\"55\" y=\"182\" width=\"150\" height=\"21\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <button opaque=\"NO\" contentMode=\"scaleToFill\" fixedFrame=\"YES\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"OyV-xC-3a4\" userLabel=\"Cancel Button\">\n                                                    <rect key=\"frame\" x=\"95\" y=\"226\" width=\"70\" height=\"30\"/>\n                                                    <state key=\"normal\" title=\"Cancel\">\n                                                        <color key=\"titleShadowColor\" white=\"0.5\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    </state>\n                                                    <connections>\n                                                        <action selector=\"cancelButtonPressed:\" destination=\"bUe-YS-Bfo\" eventType=\"touchUpInside\" id=\"O0o-pv-5o4\"/>\n                                                    </connections>\n                                                </button>\n                                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" fixedFrame=\"YES\" text=\"Downloading...\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"4bR-E2-MXi\" userLabel=\"Status Label\">\n                                                    <rect key=\"frame\" x=\"70\" y=\"48\" width=\"120\" height=\"21\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                            <constraints>\n                                                <constraint firstAttribute=\"height\" constant=\"280\" id=\"Abb-WO-CaK\"/>\n                                                <constraint firstAttribute=\"width\" constant=\"260\" id=\"Azv-Bj-qqf\"/>\n                                            </constraints>\n                                        </view>\n                                        <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Movie name - resolution\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" numberOfLines=\"0\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"BFA-o4-k8D\" userLabel=\"Title Label\">\n                                            <rect key=\"frame\" x=\"208\" y=\"35\" width=\"185\" height=\"21\"/>\n                                            <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                            <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedRGB\"/>\n                                            <nil key=\"highlightedColor\"/>\n                                        </label>\n                                    </subviews>\n                                    <constraints>\n                                        <constraint firstItem=\"BFA-o4-k8D\" firstAttribute=\"top\" secondItem=\"Bbw-Ra-hAv\" secondAttribute=\"top\" constant=\"35\" id=\"8GK-gX-IRy\"/>\n                                        <constraint firstAttribute=\"centerX\" secondItem=\"BFA-o4-k8D\" secondAttribute=\"centerX\" id=\"HQY-9H-dme\"/>\n                                        <constraint firstAttribute=\"trailing\" relation=\"greaterThanOrEqual\" secondItem=\"BFA-o4-k8D\" secondAttribute=\"trailing\" constant=\"5\" id=\"TzI-CV-4j1\"/>\n                                        <constraint firstAttribute=\"centerY\" secondItem=\"Eno-Np-eyT\" secondAttribute=\"centerY\" id=\"euo-DO-0a6\"/>\n                                        <constraint firstItem=\"BFA-o4-k8D\" firstAttribute=\"leading\" relation=\"greaterThanOrEqual\" secondItem=\"Bbw-Ra-hAv\" secondAttribute=\"leading\" constant=\"5\" id=\"f3S-uc-t2S\"/>\n                                        <constraint firstAttribute=\"centerX\" secondItem=\"Eno-Np-eyT\" secondAttribute=\"centerX\" id=\"fb1-QL-1Gt\"/>\n                                    </constraints>\n                                </view>\n                                <blurEffect style=\"dark\"/>\n                            </visualEffectView>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstItem=\"3jf-HN-lVz\" firstAttribute=\"leading\" secondItem=\"Ge5-4i-c4F\" secondAttribute=\"leadingMargin\" id=\"49U-xF-EQh\"/>\n                            <constraint firstItem=\"a3I-lb-Ai6\" firstAttribute=\"top\" secondItem=\"3jf-HN-lVz\" secondAttribute=\"bottom\" id=\"B88-h4-23t\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"3jf-HN-lVz\" secondAttribute=\"trailing\" id=\"Dek-k3-qex\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"3jf-HN-lVz\" secondAttribute=\"trailing\" id=\"Kog-8l-OhD\"/>\n                            <constraint firstItem=\"3jf-HN-lVz\" firstAttribute=\"top\" secondItem=\"0OC-Vl-SlB\" secondAttribute=\"bottom\" id=\"OXD-GG-H1V\"/>\n                            <constraint firstItem=\"3jf-HN-lVz\" firstAttribute=\"leading\" secondItem=\"Ge5-4i-c4F\" secondAttribute=\"leading\" id=\"QvQ-Gp-N6r\"/>\n                            <constraint firstItem=\"a3I-lb-Ai6\" firstAttribute=\"top\" secondItem=\"3jf-HN-lVz\" secondAttribute=\"bottom\" id=\"Ue0-UH-kxe\"/>\n                            <constraint firstItem=\"3jf-HN-lVz\" firstAttribute=\"top\" secondItem=\"0OC-Vl-SlB\" secondAttribute=\"top\" id=\"eb9-Zh-dmo\"/>\n                        </constraints>\n                        <variation key=\"default\">\n                            <mask key=\"constraints\">\n                                <exclude reference=\"49U-xF-EQh\"/>\n                                <exclude reference=\"Kog-8l-OhD\"/>\n                                <exclude reference=\"OXD-GG-H1V\"/>\n                                <exclude reference=\"B88-h4-23t\"/>\n                            </mask>\n                        </variation>\n                    </view>\n                    <connections>\n                        <outlet property=\"peersLabel\" destination=\"HhI-Ni-8J8\" id=\"lJD-gK-S5n\"/>\n                        <outlet property=\"progressLabel\" destination=\"Dyu-uI-e3s\" id=\"11L-g5-Xlz\"/>\n                        <outlet property=\"progressView\" destination=\"iQF-mn-H34\" id=\"yxl-Nj-8wf\"/>\n                        <outlet property=\"seedsLabel\" destination=\"odl-qX-n2O\" id=\"fNP-Rd-afo\"/>\n                        <outlet property=\"speedLabel\" destination=\"ZtX-Eh-3Ck\" id=\"zu4-Oy-HuH\"/>\n                        <outlet property=\"statusLabel\" destination=\"4bR-E2-MXi\" id=\"Omi-rU-Gma\"/>\n                        <outlet property=\"titleLabel\" destination=\"BFA-o4-k8D\" id=\"H8g-9M-v8E\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"tWv-oB-zv8\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"166\" y=\"1127\"/>\n        </scene>\n        <!--Movies View Controller-->\n        <scene sceneID=\"w8j-0J-Eiu\">\n            <objects>\n                <viewController id=\"MfG-VV-Dsq\" customClass=\"MoviesViewController\" customModule=\"PopcornTime\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"7zu-Fk-ucI\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"am9-41-5Cg\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"DTT-77-bFA\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"un7-QQ-yb5\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"dLT-p7-0kC\">\n                                    <size key=\"itemSize\" width=\"50\" height=\"50\"/>\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\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"un7-QQ-yb5\" secondAttribute=\"trailing\" id=\"LMg-Wo-DNY\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"un7-QQ-yb5\" secondAttribute=\"bottom\" id=\"MtX-vN-2gj\"/>\n                            <constraint firstItem=\"am9-41-5Cg\" firstAttribute=\"top\" secondItem=\"un7-QQ-yb5\" secondAttribute=\"bottom\" id=\"P8d-Zl-9ZP\"/>\n                            <constraint firstItem=\"un7-QQ-yb5\" firstAttribute=\"leading\" secondItem=\"DTT-77-bFA\" secondAttribute=\"leading\" id=\"cFz-Pk-Mmz\"/>\n                            <constraint firstItem=\"un7-QQ-yb5\" firstAttribute=\"top\" secondItem=\"DTT-77-bFA\" secondAttribute=\"topMargin\" id=\"eya-tL-5GQ\"/>\n                        </constraints>\n                        <variation key=\"default\">\n                            <mask key=\"constraints\">\n                                <exclude reference=\"P8d-Zl-9ZP\"/>\n                            </mask>\n                        </variation>\n                    </view>\n                    <navigationItem key=\"navigationItem\" id=\"emw-Gq-25X\"/>\n                    <connections>\n                        <outlet property=\"collectionView\" destination=\"un7-QQ-yb5\" id=\"WCU-nz-hXB\"/>\n                        <outlet property=\"collectionViewLayout\" destination=\"dLT-p7-0kC\" id=\"miO-uc-V55\"/>\n                        <segue destination=\"2vz-Nk-i3O\" kind=\"show\" identifier=\"showDetails\" id=\"md6-Ka-eFz\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"s9J-gI-5Xf\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1854\" y=\"1127\"/>\n        </scene>\n        <!--Movies-->\n        <scene sceneID=\"MVY-tk-2U8\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"laf-Ml-R54\" sceneMemberID=\"viewController\">\n                    <tabBarItem key=\"tabBarItem\" title=\"Movies\" image=\"MoviesIcon\" id=\"hdd-ic-XlJ\"/>\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" barStyle=\"black\" id=\"jlQ-Ip-DcT\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"MfG-VV-Dsq\" kind=\"relationship\" relationship=\"rootViewController\" id=\"ZdR-AN-H6V\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"EPu-48-ilK\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1009\" y=\"1127\"/>\n        </scene>\n        <!--Show Details View Controller-->\n        <scene sceneID=\"jc0-r0-ie0\">\n            <objects>\n                <viewController id=\"6yf-Ps-CJA\" customClass=\"ShowDetailsViewController\" customModule=\"PopcornTime\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Kkk-Uf-QOx\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"Gxb-eF-kn7\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"fSO-ml-ygC\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Cix-TO-yDb\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"QOJ-dh-oMS\" customClass=\"StratchyHeaderLayout\" customModule=\"PopcornTime\" customModuleProvider=\"target\">\n                                    <size key=\"itemSize\" width=\"50\" height=\"50\"/>\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=\"5\" minY=\"15\" maxX=\"5\" maxY=\"0.0\"/>\n                                </collectionViewFlowLayout>\n                                <cells>\n                                    <collectionViewCell opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" reuseIdentifier=\"EpisodeCell\" id=\"WYM-12-06H\">\n                                        <rect key=\"frame\" x=\"5\" y=\"79\" width=\"50\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"50\" height=\"50\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                        </view>\n                                        <color key=\"backgroundColor\" red=\"1\" green=\"0.60942627989999998\" blue=\"0.53172264930000002\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                    </collectionViewCell>\n                                </cells>\n                            </collectionView>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"Cix-TO-yDb\" secondAttribute=\"trailing\" id=\"1Ke-bE-sbv\"/>\n                            <constraint firstItem=\"Cix-TO-yDb\" firstAttribute=\"top\" secondItem=\"fSO-ml-ygC\" secondAttribute=\"topMargin\" id=\"Fg7-jg-DlH\"/>\n                            <constraint firstItem=\"Cix-TO-yDb\" firstAttribute=\"leading\" secondItem=\"fSO-ml-ygC\" secondAttribute=\"leading\" id=\"Gbz-4s-5ox\"/>\n                            <constraint firstItem=\"Cix-TO-yDb\" firstAttribute=\"bottom\" secondItem=\"fSO-ml-ygC\" secondAttribute=\"bottomMargin\" id=\"uhG-Ot-HZh\"/>\n                        </constraints>\n                    </view>\n                    <connections>\n                        <outlet property=\"collectionView\" destination=\"Cix-TO-yDb\" id=\"YUl-P7-ImU\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"5nP-va-hCS\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2650\" y=\"-662\"/>\n        </scene>\n        <!--Movie Details View Controller-->\n        <scene sceneID=\"CbQ-5W-veU\">\n            <objects>\n                <viewController id=\"2vz-Nk-i3O\" customClass=\"MovieDetailsViewController\" customModule=\"PopcornTime\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Cp9-yw-pA3\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"3zw-Wx-sxv\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ybe-E9-ZTf\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"FOJ-U6-lFA\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"dvR-y0-Sip\" customClass=\"StratchyHeaderLayout\" customModule=\"PopcornTime\" customModuleProvider=\"target\">\n                                    <size key=\"itemSize\" width=\"50\" height=\"50\"/>\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=\"5\" minY=\"15\" maxX=\"5\" maxY=\"0.0\"/>\n                                </collectionViewFlowLayout>\n                                <cells>\n                                    <collectionViewCell opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" reuseIdentifier=\"EpisodeCell\" id=\"8rK-gB-HyN\">\n                                        <rect key=\"frame\" x=\"5\" y=\"79\" width=\"50\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"50\" height=\"50\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                        </view>\n                                        <color key=\"backgroundColor\" red=\"1\" green=\"0.60942627989999998\" blue=\"0.53172264930000002\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                    </collectionViewCell>\n                                </cells>\n                            </collectionView>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstItem=\"FOJ-U6-lFA\" firstAttribute=\"top\" secondItem=\"Cp9-yw-pA3\" secondAttribute=\"bottom\" id=\"Imy-I5-tBP\"/>\n                            <constraint firstItem=\"FOJ-U6-lFA\" firstAttribute=\"top\" secondItem=\"Ybe-E9-ZTf\" secondAttribute=\"topMargin\" id=\"MU0-Fg-HLk\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"FOJ-U6-lFA\" secondAttribute=\"bottom\" id=\"gRn-c0-JpL\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"FOJ-U6-lFA\" secondAttribute=\"trailing\" id=\"n2p-fc-1bd\"/>\n                            <constraint firstItem=\"FOJ-U6-lFA\" firstAttribute=\"leading\" secondItem=\"Ybe-E9-ZTf\" secondAttribute=\"leading\" id=\"xGL-To-8Fe\"/>\n                        </constraints>\n                        <variation key=\"default\">\n                            <mask key=\"constraints\">\n                                <exclude reference=\"Imy-I5-tBP\"/>\n                            </mask>\n                        </variation>\n                    </view>\n                    <connections>\n                        <outlet property=\"collectionView\" destination=\"FOJ-U6-lFA\" id=\"nbx-ij-BiF\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"hi7-OG-RrF\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2650\" y=\"1127\"/>\n        </scene>\n        <!--Settings-->\n        <scene sceneID=\"bem-lN-RrM\">\n            <objects>\n                <viewController id=\"PsM-1R-DZR\" customClass=\"SettingsViewController\" customModule=\"PopcornTime\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"DZI-mU-Mb1\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"EN2-Q0-mCJ\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"f1e-yA-mmT\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <tableView clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" dataMode=\"prototypes\" style=\"grouped\" separatorStyle=\"default\" rowHeight=\"44\" sectionHeaderHeight=\"10\" sectionFooterHeight=\"10\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"09A-zd-jWh\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"556\"/>\n                                <color key=\"backgroundColor\" red=\"0.93725490196078431\" green=\"0.93725490196078431\" blue=\"0.95686274509803926\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                <connections>\n                                    <outlet property=\"dataSource\" destination=\"PsM-1R-DZR\" id=\"LkZ-4H-AMh\"/>\n                                    <outlet property=\"delegate\" destination=\"PsM-1R-DZR\" id=\"hXZ-yB-VQR\"/>\n                                </connections>\n                            </tableView>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstItem=\"09A-zd-jWh\" firstAttribute=\"bottom\" secondItem=\"EN2-Q0-mCJ\" secondAttribute=\"top\" id=\"98Q-Ut-SCA\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"09A-zd-jWh\" secondAttribute=\"trailing\" id=\"XWT-CL-eDQ\"/>\n                            <constraint firstItem=\"09A-zd-jWh\" firstAttribute=\"leading\" secondItem=\"f1e-yA-mmT\" secondAttribute=\"leading\" id=\"o1a-Ap-OIw\"/>\n                            <constraint firstItem=\"09A-zd-jWh\" firstAttribute=\"top\" secondItem=\"f1e-yA-mmT\" secondAttribute=\"top\" id=\"wC8-xJ-bK0\"/>\n                        </constraints>\n                    </view>\n                    <toolbarItems/>\n                    <navigationItem key=\"navigationItem\" title=\"Settings\" id=\"yNe-p8-SDg\">\n                        <barButtonItem key=\"leftBarButtonItem\" title=\"Done\" id=\"9er-hO-ljh\">\n                            <connections>\n                                <action selector=\"doneButtonTapped:\" destination=\"PsM-1R-DZR\" id=\"hyK-bZ-4Cs\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedToolbarMetrics key=\"simulatedBottomBarMetrics\"/>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"c2O-RD-Dnk\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2642\" y=\"-2339\"/>\n        </scene>\n        <!--Favorites-->\n        <scene sceneID=\"Ajz-ma-oZc\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"ZTe-Ju-nKb\" sceneMemberID=\"viewController\">\n                    <tabBarItem key=\"tabBarItem\" title=\"Favorites\" image=\"FavoritesIcon\" id=\"fW6-S6-lRJ\"/>\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" barStyle=\"black\" id=\"vNU-OG-5CV\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"UYG-Ri-Xwt\" kind=\"relationship\" relationship=\"rootViewController\" id=\"d95-MP-Deg\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"bPA-j1-sYU\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1009\" y=\"-1583\"/>\n        </scene>\n        <!--Favorites View Controller-->\n        <scene sceneID=\"295-pu-uhc\">\n            <objects>\n                <viewController id=\"UYG-Ri-Xwt\" customClass=\"FavoritesViewController\" customModule=\"PopcornTime\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"63E-PP-ohP\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"IpR-5f-yWF\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"M3M-4W-n7v\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"eI5-vY-Geb\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"wc9-WL-RHv\">\n                                    <size key=\"itemSize\" width=\"50\" height=\"50\"/>\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\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstItem=\"eI5-vY-Geb\" firstAttribute=\"leading\" secondItem=\"M3M-4W-n7v\" secondAttribute=\"leading\" id=\"Gcb-tq-ZVc\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"eI5-vY-Geb\" secondAttribute=\"trailing\" id=\"Ltt-Ro-FiQ\"/>\n                            <constraint firstItem=\"eI5-vY-Geb\" firstAttribute=\"top\" secondItem=\"M3M-4W-n7v\" secondAttribute=\"top\" id=\"gg3-bx-fnL\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"eI5-vY-Geb\" secondAttribute=\"bottom\" id=\"hoL-CT-C9N\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" id=\"MY5-kk-pyb\">\n                        <barButtonItem key=\"leftBarButtonItem\" image=\"SettingsIcon\" id=\"b18-US-aYw\">\n                            <connections>\n                                <segue destination=\"laO-YO-bEr\" kind=\"presentation\" modalPresentationStyle=\"formSheet\" id=\"MHB-oZ-cjC\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <connections>\n                        <outlet property=\"collectionView\" destination=\"eI5-vY-Geb\" id=\"9bl-Ru-8eV\"/>\n                        <outlet property=\"collectionViewLayout\" destination=\"wc9-WL-RHv\" id=\"heF-Dp-lKu\"/>\n                        <segue destination=\"6yf-Ps-CJA\" kind=\"show\" identifier=\"showDetailsForFavoriteShow\" id=\"yKj-Tm-VOw\"/>\n                        <segue destination=\"nkV-Ie-GtD\" kind=\"show\" identifier=\"showDetailsForFavoriteAnime\" id=\"Qrp-vN-Wm3\"/>\n                        <segue destination=\"2vz-Nk-i3O\" kind=\"show\" identifier=\"showDetailsForFavoriteMovie\" id=\"Wdb-6o-Fxi\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"OKd-O3-qVh\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1854\" y=\"-1583\"/>\n        </scene>\n        <!--Navigation Controller-->\n        <scene sceneID=\"umC-OZ-DUF\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"laO-YO-bEr\" sceneMemberID=\"viewController\">\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" barStyle=\"black\" id=\"mhs-Pw-TcL\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"PsM-1R-DZR\" kind=\"relationship\" relationship=\"rootViewController\" id=\"Hga-lw-gLH\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"pJk-EZ-fTT\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1854\" y=\"-2355\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <image name=\"AnimeIcon\" width=\"30\" height=\"30\"/>\n        <image name=\"FavoritesIcon\" width=\"30\" height=\"30\"/>\n        <image name=\"MoviesIcon\" width=\"30\" height=\"30\"/>\n        <image name=\"SettingsIcon\" width=\"30\" height=\"30\"/>\n        <image name=\"ShowsIcon\" width=\"30\" height=\"30\"/>\n    </resources>\n    <inferredMetricsTieBreakers>\n        <segue reference=\"Qrp-vN-Wm3\"/>\n        <segue reference=\"yKj-Tm-VOw\"/>\n        <segue reference=\"Wdb-6o-Fxi\"/>\n    </inferredMetricsTieBreakers>\n</document>\n"
  },
  {
    "path": "PopcornTime/Views/EpisodeCell.swift",
    "content": "//\n//  EpisodeCell.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/13/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass EpisodeCell: UICollectionViewCell {\n  \n  let watchedAlpha:CGFloat = 0.5\n  let defaultAlpha:CGFloat = 1.0\n    \n    @IBOutlet weak var titleLabel: UILabel!\n    var watchedEpisode = false {\n      didSet {\n        if watchedEpisode {\n          alpha = watchedAlpha\n        } else {\n          alpha = defaultAlpha\n        }\n      }\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Views/EpisodeCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"7706\" systemVersion=\"15A178w\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"7703\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.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\" reuseIdentifier=\"EpisodeCell\" id=\"gTV-IL-0wX\" customClass=\"EpisodeCell\" customModule=\"PopcornTime\" customModuleProvider=\"target\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"381\" height=\"86\"/>\n            <autoresizingMask key=\"autoresizingMask\"/>\n            <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"381\" height=\"86\"/>\n                <subviews>\n                    <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hac-x6-d8V\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"381\" height=\"86\"/>\n                        <subviews>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rw3-FD-IDF\">\n                                <rect key=\"frame\" x=\"8\" y=\"33\" width=\"365\" height=\"20\"/>\n                                <animations/>\n                                <fontDescription key=\"fontDescription\" style=\"UICTFontTextStyleHeadline\"/>\n                                <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <animations/>\n                        <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"rw3-FD-IDF\" secondAttribute=\"trailing\" id=\"4JM-g6-1yg\"/>\n                            <constraint firstAttribute=\"centerY\" secondItem=\"rw3-FD-IDF\" secondAttribute=\"centerY\" id=\"Xme-ZK-Q6S\"/>\n                            <constraint firstItem=\"rw3-FD-IDF\" firstAttribute=\"leading\" secondItem=\"hac-x6-d8V\" secondAttribute=\"leadingMargin\" id=\"m7b-qe-tLL\"/>\n                        </constraints>\n                    </view>\n                </subviews>\n                <animations/>\n                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n            </view>\n            <animations/>\n            <color key=\"backgroundColor\" red=\"0.29803922772407532\" green=\"0.29803922772407532\" blue=\"0.29803922772407532\" alpha=\"0.45000000000000001\" colorSpace=\"calibratedRGB\"/>\n            <constraints>\n                <constraint firstAttribute=\"trailing\" secondItem=\"hac-x6-d8V\" secondAttribute=\"trailing\" id=\"3tn-e1-whc\"/>\n                <constraint firstItem=\"hac-x6-d8V\" firstAttribute=\"top\" secondItem=\"gTV-IL-0wX\" secondAttribute=\"top\" id=\"ZQU-6d-HeS\"/>\n                <constraint firstItem=\"hac-x6-d8V\" firstAttribute=\"leading\" secondItem=\"gTV-IL-0wX\" secondAttribute=\"leading\" id=\"cVo-K4-VEE\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"hac-x6-d8V\" secondAttribute=\"bottom\" id=\"ief-JJ-Ktm\"/>\n            </constraints>\n            <size key=\"customSize\" width=\"381\" height=\"86\"/>\n            <connections>\n                <outlet property=\"titleLabel\" destination=\"rw3-FD-IDF\" id=\"8M1-8P-KLo\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"340.5\" y=\"236\"/>\n        </collectionViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "PopcornTime/Views/MoreShowsCollectionViewCell.swift",
    "content": "//\n//  MoreShowsCollectionViewCell.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/10/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass MoreShowsCollectionViewCell: UICollectionViewCell {\n\n    override func awakeFromNib() {\n        super.awakeFromNib()\n        // Initialization code\n    }\n\n}\n"
  },
  {
    "path": "PopcornTime/Views/MoreShowsCollectionViewCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"7702\" systemVersion=\"14D136\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"7701\"/>\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\" reuseIdentifier=\"MoreShowsCell\" id=\"gTV-IL-0wX\" customClass=\"MoreShowsCollectionViewCell\" customModule=\"PopcornTime\" customModuleProvider=\"target\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"228\" height=\"254\"/>\n            <autoresizingMask key=\"autoresizingMask\"/>\n            <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"228\" height=\"254\"/>\n                <subviews>\n                    <activityIndicatorView opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" animating=\"YES\" style=\"whiteLarge\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Iyp-NF-gbb\">\n                        <rect key=\"frame\" x=\"96\" y=\"108\" width=\"37\" height=\"37\"/>\n                    </activityIndicatorView>\n                </subviews>\n                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n            </view>\n            <constraints>\n                <constraint firstAttribute=\"centerY\" secondItem=\"Iyp-NF-gbb\" secondAttribute=\"centerY\" id=\"LVh-dH-GmR\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"Iyp-NF-gbb\" secondAttribute=\"centerX\" id=\"QL8-3z-U1F\"/>\n            </constraints>\n            <size key=\"customSize\" width=\"228\" height=\"254\"/>\n            <point key=\"canvasLocation\" x=\"232\" y=\"359\"/>\n        </collectionViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "PopcornTime/Views/SeasonHeader.swift",
    "content": "//\n//  SeasonHeader.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 4/14/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass SeasonHeader: UICollectionReusableView {\n\n    @IBOutlet weak var container: UIView!\n    @IBOutlet weak var titleLabel: UILabel!\n    \n}\n"
  },
  {
    "path": "PopcornTime/Views/SeasonHeader.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"7702\" systemVersion=\"14D136\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"7701\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <collectionReusableView opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" id=\"U6b-Vx-4bR\" customClass=\"SeasonHeader\" customModule=\"PopcornTime\" customModuleProvider=\"target\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"50\"/>\n            <autoresizingMask key=\"autoresizingMask\"/>\n            <subviews>\n                <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"bkC-4d-qdf\" userLabel=\"container\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"50\"/>\n                    <subviews>\n                        <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"mDS-Q8-pSr\" userLabel=\"title\">\n                            <rect key=\"frame\" x=\"8\" y=\"0.0\" width=\"304\" height=\"50\"/>\n                            <fontDescription key=\"fontDescription\" style=\"UICTFontTextStyleHeadline\"/>\n                            <color key=\"textColor\" red=\"0.90196079015731812\" green=\"0.90196079015731812\" blue=\"0.90196079015731812\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                            <nil key=\"highlightedColor\"/>\n                        </label>\n                    </subviews>\n                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                    <constraints>\n                        <constraint firstItem=\"mDS-Q8-pSr\" firstAttribute=\"top\" secondItem=\"bkC-4d-qdf\" secondAttribute=\"top\" id=\"GrJ-Ar-l0z\"/>\n                        <constraint firstAttribute=\"trailingMargin\" secondItem=\"mDS-Q8-pSr\" secondAttribute=\"trailing\" id=\"S0v-P0-TuJ\"/>\n                        <constraint firstAttribute=\"bottom\" secondItem=\"mDS-Q8-pSr\" secondAttribute=\"bottom\" id=\"TLT-bp-E9s\"/>\n                        <constraint firstItem=\"mDS-Q8-pSr\" firstAttribute=\"leading\" secondItem=\"bkC-4d-qdf\" secondAttribute=\"leadingMargin\" id=\"WIh-eY-bht\"/>\n                    </constraints>\n                </view>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n            <constraints>\n                <constraint firstAttribute=\"trailing\" secondItem=\"bkC-4d-qdf\" secondAttribute=\"trailing\" id=\"9CX-Cl-t4g\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"bkC-4d-qdf\" secondAttribute=\"bottom\" id=\"UFw-Ql-bPf\"/>\n                <constraint firstItem=\"bkC-4d-qdf\" firstAttribute=\"leading\" secondItem=\"U6b-Vx-4bR\" secondAttribute=\"leading\" id=\"sJl-4J-iH4\"/>\n                <constraint firstItem=\"bkC-4d-qdf\" firstAttribute=\"top\" secondItem=\"U6b-Vx-4bR\" secondAttribute=\"top\" id=\"tj4-KH-OiX\"/>\n            </constraints>\n            <connections>\n                <outlet property=\"container\" destination=\"bkC-4d-qdf\" id=\"77A-kK-lTD\"/>\n                <outlet property=\"titleLabel\" destination=\"mDS-Q8-pSr\" id=\"3Q8-ij-wzQ\"/>\n            </connections>\n        </collectionReusableView>\n    </objects>\n</document>\n"
  },
  {
    "path": "PopcornTime/Views/ShowCollectionViewCell.swift",
    "content": "//\n//  ShowCollectionViewCell.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/8/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass ShowCollectionViewCell: UICollectionViewCell {\n    \n    @IBOutlet weak fileprivate var imageView: UIImageView!\n    @IBOutlet weak fileprivate var titleLabel: UILabel!\n\n    var image: UIImage? {\n        didSet {\n            self.imageView?.image = image\n            self.titleLabel.isHidden = image != nil\n        }\n    }\n    \n    var title: String? {\n        didSet {\n            titleLabel.text = title\n        }\n    }\n    \n    override func prepareForReuse() {\n        super.prepareForReuse()\n        \n        self.image = nil\n    }\n}\n"
  },
  {
    "path": "PopcornTime/Views/ShowCollectionViewCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"7702\" systemVersion=\"14D136\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"7701\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\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\" reuseIdentifier=\"ShowCell\" id=\"gTV-IL-0wX\" customClass=\"ShowCollectionViewCell\" customModule=\"PopcornTime\" customModuleProvider=\"target\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"254\" height=\"308\"/>\n            <autoresizingMask key=\"autoresizingMask\"/>\n            <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"254\" height=\"308\"/>\n                <subviews>\n                    <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Y5e-j4-dT2\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"254\" height=\"308\"/>\n                        <subviews>\n                            <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"m3j-dH-2P5\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"254\" height=\"308\"/>\n                            </imageView>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"5GL-9T-ZmT\" userLabel=\"Additional info container\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"259\" width=\"254\" height=\"47\"/>\n                                <subviews>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" adjustsLetterSpacingToFitWidth=\"YES\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"VIo-GA-3Sv\" userLabel=\"Title label\">\n                                        <rect key=\"frame\" x=\"8\" y=\"0.0\" width=\"238\" height=\"47\"/>\n                                        <fontDescription key=\"fontDescription\" style=\"UICTFontTextStyleHeadline\"/>\n                                        <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                </subviews>\n                                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                <constraints>\n                                    <constraint firstItem=\"VIo-GA-3Sv\" firstAttribute=\"leading\" secondItem=\"5GL-9T-ZmT\" secondAttribute=\"leading\" constant=\"8\" id=\"Tcf-YL-kf2\"/>\n                                    <constraint firstItem=\"VIo-GA-3Sv\" firstAttribute=\"top\" secondItem=\"5GL-9T-ZmT\" secondAttribute=\"top\" id=\"hpN-LS-QBX\"/>\n                                    <constraint firstAttribute=\"trailing\" secondItem=\"VIo-GA-3Sv\" secondAttribute=\"trailing\" constant=\"8\" id=\"kLn-Ab-R7c\"/>\n                                    <constraint firstAttribute=\"bottom\" secondItem=\"VIo-GA-3Sv\" secondAttribute=\"bottom\" id=\"t9O-b2-4fb\"/>\n                                </constraints>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstItem=\"m3j-dH-2P5\" firstAttribute=\"top\" secondItem=\"Y5e-j4-dT2\" secondAttribute=\"top\" id=\"7jl-BL-RYt\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"m3j-dH-2P5\" secondAttribute=\"trailing\" id=\"8LX-aM-xtW\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"m3j-dH-2P5\" secondAttribute=\"bottom\" id=\"8xp-yb-hac\"/>\n                            <constraint firstItem=\"5GL-9T-ZmT\" firstAttribute=\"top\" secondItem=\"m3j-dH-2P5\" secondAttribute=\"bottom\" constant=\"2\" id=\"Cmd-lp-OcT\"/>\n                            <constraint firstItem=\"5GL-9T-ZmT\" firstAttribute=\"leading\" secondItem=\"Y5e-j4-dT2\" secondAttribute=\"leading\" id=\"I0m-9g-LBJ\"/>\n                            <constraint firstItem=\"5GL-9T-ZmT\" firstAttribute=\"height\" secondItem=\"Y5e-j4-dT2\" secondAttribute=\"height\" multiplier=\"0.15\" id=\"Q9c-kx-GUQ\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"5GL-9T-ZmT\" secondAttribute=\"trailing\" id=\"Ybd-mW-Jhk\"/>\n                            <constraint firstItem=\"m3j-dH-2P5\" firstAttribute=\"leading\" secondItem=\"Y5e-j4-dT2\" secondAttribute=\"leading\" id=\"bsv-ZE-vhn\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"5GL-9T-ZmT\" secondAttribute=\"bottom\" constant=\"2\" id=\"pWz-sN-WXm\"/>\n                        </constraints>\n                        <variation key=\"default\">\n                            <mask key=\"constraints\">\n                                <exclude reference=\"Cmd-lp-OcT\"/>\n                            </mask>\n                        </variation>\n                    </view>\n                </subviews>\n                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n            </view>\n            <constraints>\n                <constraint firstItem=\"Y5e-j4-dT2\" firstAttribute=\"leading\" secondItem=\"gTV-IL-0wX\" secondAttribute=\"leading\" id=\"01J-UT-UNf\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"Y5e-j4-dT2\" secondAttribute=\"bottom\" id=\"9nY-4Q-qxB\"/>\n                <constraint firstItem=\"Y5e-j4-dT2\" firstAttribute=\"top\" secondItem=\"gTV-IL-0wX\" secondAttribute=\"top\" id=\"B9L-PQ-hYZ\"/>\n                <constraint firstAttribute=\"trailing\" secondItem=\"Y5e-j4-dT2\" secondAttribute=\"trailing\" id=\"jJr-UM-ZfQ\"/>\n            </constraints>\n            <size key=\"customSize\" width=\"267\" height=\"339\"/>\n            <connections>\n                <outlet property=\"imageView\" destination=\"m3j-dH-2P5\" id=\"kp8-Ip-ETz\"/>\n                <outlet property=\"titleLabel\" destination=\"VIo-GA-3Sv\" id=\"lLb-5b-gRs\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"242\" y=\"343\"/>\n        </collectionViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "PopcornTime/Views/StratchyHeader.swift",
    "content": "//\n//  StratchyHeader.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 4/6/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nprotocol StratchyHeaderDelegate: class {\n    ///Triggers when header max stratch value is recalculated\n    func stratchyHeader(_ header: StratchyHeader, didResetMaxStratchValue value: CGFloat)\n}\n\n\nclass StratchyHeader: UICollectionReusableView {\n    \n    weak var delegate: StratchyHeaderDelegate?\n    \n    // MARK: - Public API\n    var image: UIImage? {\n        didSet {\n            if let image = image {\n                imageAspectRatio = image.size.height / image.size.width\n                backgroundImageView.image = image\n                \n                updateImageViewConstraints()\n            }\n        }\n    }\n    \n    var headerSize: CGSize = CGSize(width: 1, height: 1) {\n        didSet {\n            updateImageViewConstraints()\n        }\n    }\n    \n    // MARK: - UICollectionReusableView\n    override func apply(_ layoutAttributes: UICollectionViewLayoutAttributes) {\n        super.apply(layoutAttributes)\n        \n        let attributes = layoutAttributes as! StratchyLayoutAttributes\n        \n        let height = attributes.frame.height\n        if (previousHeight != height) {\n            \n            if (maxStratch != 0) {\n                let alpha = 1 - attributes.deltaY / maxStratch\n                foregroundView.alpha = alpha\n            }\n            \n            if (imageAspectRatio != 0) {\n                heightConstraint.constant = imageViewActualHeight - attributes.deltaY\n                widthConstraint.constant = imageViewActualWidth - (attributes.deltaY / imageAspectRatio)\n            }\n            previousHeight = height\n        }\n    }\n    \n    // MARK: - Private\n    @IBOutlet weak fileprivate var widthConstraint: NSLayoutConstraint!\n    @IBOutlet weak fileprivate var heightConstraint: NSLayoutConstraint!\n    @IBOutlet weak fileprivate var backgroundImageView: UIImageView!\n    \n    @IBOutlet weak var foregroundView: UIView!\n    @IBOutlet weak var foregroundImage: UIImageView!\n    @IBOutlet weak var synopsisTextView: UILabel!\n    \n    \n    fileprivate var maxStratch: CGFloat = 0\n    \n    fileprivate var zoomWidthCoef: CGFloat {\n        get {\n            let headerAspectRatio = headerSize.height / headerSize.width\n            return (1.7 * headerAspectRatio) / 0.5325  // Experimentally calculated value :]\n        }\n    }\n    fileprivate var imageAspectRatio: CGFloat = 0\n    fileprivate var imageViewActualWidth: CGFloat {\n        return headerSize.width * zoomWidthCoef\n    }\n    fileprivate var imageViewActualHeight: CGFloat {\n        return imageViewActualWidth * imageAspectRatio\n    }\n    fileprivate var previousHeight: CGFloat = 0\n    \n    fileprivate func updateImageViewConstraints() {\n        \n//        let dX = fabs(headerSize.height - imageViewActualHeight)/2\n        let dY = fabs(headerSize.width - imageViewActualWidth)/2\n        maxStratch = dY//max(dX, dY)\n        self.delegate?.stratchyHeader(self, didResetMaxStratchValue: maxStratch)\n        \n        widthConstraint.constant = imageViewActualWidth\n        heightConstraint.constant = imageViewActualHeight\n    }\n    \n}\n"
  },
  {
    "path": "PopcornTime/Views/StratchyHeader.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"7702\" systemVersion=\"14D136\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"7701\"/>\n        <capability name=\"Aspect ratio constraints\" minToolsVersion=\"5.1\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view clipsSubviews=\"YES\" contentMode=\"scaleToFill\" id=\"iN0-l3-epB\" customClass=\"StratchyHeader\" customModule=\"PopcornTime\" customModuleProvider=\"target\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"545\" height=\"171\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"WPV-Yy-ovC\" userLabel=\"container\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"545\" height=\"171\"/>\n                    <subviews>\n                        <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" misplaced=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"mDi-OI-S95\" userLabel=\"backgroundImage\">\n                            <color key=\"backgroundColor\" red=\"1\" green=\"0.60942627989999998\" blue=\"0.53172264930000002\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                            <constraints>\n                                <constraint firstAttribute=\"height\" priority=\"750\" id=\"L23-JD-BRP\"/>\n                                <constraint firstAttribute=\"width\" priority=\"750\" id=\"f0C-66-fAz\"/>\n                            </constraints>\n                        </imageView>\n                        <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"0Ow-53-WZq\" userLabel=\"foreground view\">\n                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"545\" height=\"171\"/>\n                            <subviews>\n                                <visualEffectView opaque=\"NO\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2kz-eq-Rqb\" userLabel=\"blur\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"545\" height=\"171\"/>\n                                    <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" id=\"2QQ-CX-fEx\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"545\" height=\"171\"/>\n                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    </view>\n                                    <blurEffect style=\"dark\"/>\n                                </visualEffectView>\n                                <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"pYt-Wb-4wl\" userLabel=\"placeholder_left\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"14\" height=\"171\"/>\n                                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                </view>\n                                <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3s5-yx-S3H\">\n                                    <rect key=\"frame\" x=\"14\" y=\"6\" width=\"109\" height=\"159\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"width\" secondItem=\"3s5-yx-S3H\" secondAttribute=\"height\" multiplier=\"135:197\" id=\"Otp-Ev-yU7\"/>\n                                    </constraints>\n                                </imageView>\n                                <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"lnp-mk-RBd\" userLabel=\"placeholder_mid\">\n                                    <rect key=\"frame\" x=\"123\" y=\"14\" width=\"14\" height=\"143\"/>\n                                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                </view>\n                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" lineBreakMode=\"tailTruncation\" numberOfLines=\"0\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"14\" adjustsLetterSpacingToFitWidth=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"y0N-hi-Cso\">\n                                    <rect key=\"frame\" x=\"137\" y=\"75\" width=\"394\" height=\"21\"/>\n                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedRGB\"/>\n                                    <nil key=\"highlightedColor\"/>\n                                </label>\n                                <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Tb2-Ru-fKj\" userLabel=\"placeholder_top\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"545\" height=\"14\"/>\n                                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                </view>\n                                <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Fb2-eX-f9R\" userLabel=\"placeholder_bot\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"157\" width=\"545\" height=\"14\"/>\n                                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                </view>\n                                <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"YUV-xe-N3o\" userLabel=\"placeholder_right\">\n                                    <rect key=\"frame\" x=\"531\" y=\"0.0\" width=\"14\" height=\"171\"/>\n                                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                </view>\n                            </subviews>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                            <constraints>\n                                <constraint firstItem=\"pYt-Wb-4wl\" firstAttribute=\"width\" secondItem=\"0Ow-53-WZq\" secondAttribute=\"width\" multiplier=\"0.025\" id=\"0B4-rB-2YI\"/>\n                                <constraint firstItem=\"2kz-eq-Rqb\" firstAttribute=\"leading\" secondItem=\"0Ow-53-WZq\" secondAttribute=\"leading\" id=\"0p1-Wg-H7z\"/>\n                                <constraint firstItem=\"Fb2-eX-f9R\" firstAttribute=\"top\" secondItem=\"lnp-mk-RBd\" secondAttribute=\"bottom\" id=\"0wW-zP-vP3\"/>\n                                <constraint firstItem=\"Fb2-eX-f9R\" firstAttribute=\"leading\" secondItem=\"0Ow-53-WZq\" secondAttribute=\"leading\" id=\"17h-w6-MaN\"/>\n                                <constraint firstAttribute=\"trailing\" secondItem=\"2kz-eq-Rqb\" secondAttribute=\"trailing\" id=\"7Au-6U-tKY\"/>\n                                <constraint firstItem=\"pYt-Wb-4wl\" firstAttribute=\"leading\" secondItem=\"0Ow-53-WZq\" secondAttribute=\"leading\" id=\"7LP-aB-JeP\"/>\n                                <constraint firstItem=\"pYt-Wb-4wl\" firstAttribute=\"top\" secondItem=\"0Ow-53-WZq\" secondAttribute=\"top\" id=\"8dw-Fr-ZeO\"/>\n                                <constraint firstItem=\"pYt-Wb-4wl\" firstAttribute=\"width\" secondItem=\"Tb2-Ru-fKj\" secondAttribute=\"height\" id=\"9sj-pG-SJ9\"/>\n                                <constraint firstItem=\"Tb2-Ru-fKj\" firstAttribute=\"top\" secondItem=\"0Ow-53-WZq\" secondAttribute=\"top\" id=\"CSi-TY-9mx\"/>\n                                <constraint firstItem=\"3s5-yx-S3H\" firstAttribute=\"top\" secondItem=\"Tb2-Ru-fKj\" secondAttribute=\"bottom\" id=\"CyF-JS-oQQ\"/>\n                                <constraint firstItem=\"Tb2-Ru-fKj\" firstAttribute=\"height\" secondItem=\"Fb2-eX-f9R\" secondAttribute=\"height\" id=\"Duf-8W-xrm\"/>\n                                <constraint firstAttribute=\"bottom\" secondItem=\"pYt-Wb-4wl\" secondAttribute=\"bottom\" id=\"F2v-L0-yot\"/>\n                                <constraint firstItem=\"y0N-hi-Cso\" firstAttribute=\"leading\" secondItem=\"lnp-mk-RBd\" secondAttribute=\"trailing\" id=\"GlD-b0-MnV\"/>\n                                <constraint firstAttribute=\"bottom\" secondItem=\"2kz-eq-Rqb\" secondAttribute=\"bottom\" id=\"HLB-cv-Feh\"/>\n                                <constraint firstItem=\"Fb2-eX-f9R\" firstAttribute=\"top\" secondItem=\"3s5-yx-S3H\" secondAttribute=\"bottom\" id=\"Ia3-gH-4DY\"/>\n                                <constraint firstAttribute=\"trailing\" secondItem=\"Tb2-Ru-fKj\" secondAttribute=\"trailing\" id=\"Ja5-8q-xBa\"/>\n                                <constraint firstItem=\"2kz-eq-Rqb\" firstAttribute=\"top\" secondItem=\"0Ow-53-WZq\" secondAttribute=\"top\" id=\"JqV-Td-ZEX\"/>\n                                <constraint firstAttribute=\"trailing\" secondItem=\"YUV-xe-N3o\" secondAttribute=\"trailing\" id=\"Jrw-r6-g1C\"/>\n                                <constraint firstAttribute=\"centerY\" secondItem=\"3s5-yx-S3H\" secondAttribute=\"centerY\" id=\"JtA-1V-nwK\"/>\n                                <constraint firstAttribute=\"centerY\" secondItem=\"y0N-hi-Cso\" secondAttribute=\"centerY\" id=\"K18-xS-VY9\"/>\n                                <constraint firstItem=\"YUV-xe-N3o\" firstAttribute=\"top\" secondItem=\"0Ow-53-WZq\" secondAttribute=\"top\" id=\"LLz-U2-odj\"/>\n                                <constraint firstItem=\"Tb2-Ru-fKj\" firstAttribute=\"leading\" secondItem=\"0Ow-53-WZq\" secondAttribute=\"leading\" id=\"NNv-Ke-RX1\"/>\n                                <constraint firstItem=\"pYt-Wb-4wl\" firstAttribute=\"width\" secondItem=\"YUV-xe-N3o\" secondAttribute=\"width\" id=\"PGA-Fz-znK\"/>\n                                <constraint firstItem=\"lnp-mk-RBd\" firstAttribute=\"leading\" secondItem=\"3s5-yx-S3H\" secondAttribute=\"trailing\" id=\"VHo-HF-Gcd\"/>\n                                <constraint firstItem=\"3s5-yx-S3H\" firstAttribute=\"leading\" secondItem=\"pYt-Wb-4wl\" secondAttribute=\"trailing\" id=\"VbU-7N-lJA\"/>\n                                <constraint firstItem=\"y0N-hi-Cso\" firstAttribute=\"height\" relation=\"lessThanOrEqual\" secondItem=\"3s5-yx-S3H\" secondAttribute=\"height\" id=\"Vdu-eR-1pH\"/>\n                                <constraint firstItem=\"lnp-mk-RBd\" firstAttribute=\"top\" secondItem=\"Tb2-Ru-fKj\" secondAttribute=\"bottom\" id=\"c8o-z7-LY3\"/>\n                                <constraint firstAttribute=\"width\" secondItem=\"3s5-yx-S3H\" secondAttribute=\"width\" multiplier=\"3\" id=\"eCj-S8-b1k\"/>\n                                <constraint firstAttribute=\"trailing\" secondItem=\"Fb2-eX-f9R\" secondAttribute=\"trailing\" id=\"etK-Rn-7fp\"/>\n                                <constraint firstAttribute=\"bottom\" secondItem=\"YUV-xe-N3o\" secondAttribute=\"bottom\" id=\"fO8-hY-RD0\"/>\n                                <constraint firstAttribute=\"bottom\" secondItem=\"Fb2-eX-f9R\" secondAttribute=\"bottom\" id=\"nyl-8r-dYI\"/>\n                                <constraint firstItem=\"YUV-xe-N3o\" firstAttribute=\"leading\" secondItem=\"y0N-hi-Cso\" secondAttribute=\"trailing\" id=\"to9-Ka-Cps\"/>\n                                <constraint firstAttribute=\"width\" secondItem=\"3s5-yx-S3H\" secondAttribute=\"width\" multiplier=\"5\" priority=\"750\" id=\"xtm-OK-SH1\"/>\n                                <constraint firstItem=\"lnp-mk-RBd\" firstAttribute=\"width\" secondItem=\"pYt-Wb-4wl\" secondAttribute=\"width\" id=\"yTf-gT-Iq4\"/>\n                            </constraints>\n                            <variation key=\"default\">\n                                <mask key=\"constraints\">\n                                    <exclude reference=\"CyF-JS-oQQ\"/>\n                                    <exclude reference=\"eCj-S8-b1k\"/>\n                                    <exclude reference=\"Ia3-gH-4DY\"/>\n                                </mask>\n                            </variation>\n                            <variation key=\"heightClass=regular-widthClass=compact\">\n                                <mask key=\"subviews\">\n                                    <include reference=\"3s5-yx-S3H\"/>\n                                </mask>\n                                <mask key=\"constraints\">\n                                    <include reference=\"eCj-S8-b1k\"/>\n                                    <exclude reference=\"xtm-OK-SH1\"/>\n                                </mask>\n                            </variation>\n                        </view>\n                    </subviews>\n                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                    <constraints>\n                        <constraint firstItem=\"0Ow-53-WZq\" firstAttribute=\"leading\" secondItem=\"WPV-Yy-ovC\" secondAttribute=\"leading\" id=\"ARB-IC-srF\"/>\n                        <constraint firstItem=\"mDi-OI-S95\" firstAttribute=\"width\" secondItem=\"WPV-Yy-ovC\" secondAttribute=\"width\" id=\"HGI-F7-wI1\"/>\n                        <constraint firstItem=\"mDi-OI-S95\" firstAttribute=\"leading\" relation=\"lessThanOrEqual\" secondItem=\"WPV-Yy-ovC\" secondAttribute=\"leading\" id=\"KxD-OS-XGz\"/>\n                        <constraint firstAttribute=\"trailing\" relation=\"lessThanOrEqual\" secondItem=\"mDi-OI-S95\" secondAttribute=\"trailing\" id=\"Mqx-ip-wV9\"/>\n                        <constraint firstAttribute=\"trailing\" secondItem=\"0Ow-53-WZq\" secondAttribute=\"trailing\" id=\"Onk-ua-jII\"/>\n                        <constraint firstAttribute=\"bottom\" secondItem=\"0Ow-53-WZq\" secondAttribute=\"bottom\" id=\"Qnf-05-B2J\"/>\n                        <constraint firstAttribute=\"centerY\" secondItem=\"mDi-OI-S95\" secondAttribute=\"centerY\" id=\"S0O-xs-bZU\"/>\n                        <constraint firstItem=\"0Ow-53-WZq\" firstAttribute=\"top\" secondItem=\"WPV-Yy-ovC\" secondAttribute=\"top\" id=\"T0W-nG-SHI\"/>\n                        <constraint firstItem=\"mDi-OI-S95\" firstAttribute=\"height\" secondItem=\"WPV-Yy-ovC\" secondAttribute=\"height\" id=\"oic-Of-zpK\"/>\n                        <constraint firstAttribute=\"centerX\" secondItem=\"mDi-OI-S95\" secondAttribute=\"centerX\" id=\"sU3-WS-iuK\"/>\n                        <constraint firstItem=\"mDi-OI-S95\" firstAttribute=\"top\" secondItem=\"WPV-Yy-ovC\" secondAttribute=\"top\" id=\"u9Q-a6-QHt\"/>\n                    </constraints>\n                    <variation key=\"default\">\n                        <mask key=\"constraints\">\n                            <exclude reference=\"HGI-F7-wI1\"/>\n                            <exclude reference=\"KxD-OS-XGz\"/>\n                            <exclude reference=\"Mqx-ip-wV9\"/>\n                            <exclude reference=\"S0O-xs-bZU\"/>\n                            <exclude reference=\"oic-Of-zpK\"/>\n                        </mask>\n                    </variation>\n                </view>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n            <constraints>\n                <constraint firstAttribute=\"trailing\" secondItem=\"WPV-Yy-ovC\" secondAttribute=\"trailing\" id=\"7JB-QX-VjY\"/>\n                <constraint firstItem=\"WPV-Yy-ovC\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" id=\"Qhb-0L-eta\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"WPV-Yy-ovC\" secondAttribute=\"bottom\" id=\"fki-3E-116\"/>\n                <constraint firstItem=\"WPV-Yy-ovC\" firstAttribute=\"top\" secondItem=\"iN0-l3-epB\" secondAttribute=\"top\" id=\"q0I-fC-4d3\"/>\n            </constraints>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n            <connections>\n                <outlet property=\"backgroundImageView\" destination=\"mDi-OI-S95\" id=\"TZA-V5-ToZ\"/>\n                <outlet property=\"foregroundImage\" destination=\"3s5-yx-S3H\" id=\"7b2-kS-LnV\"/>\n                <outlet property=\"foregroundView\" destination=\"0Ow-53-WZq\" id=\"nWK-gY-dtg\"/>\n                <outlet property=\"heightConstraint\" destination=\"L23-JD-BRP\" id=\"CMj-yO-3Hs\"/>\n                <outlet property=\"synopsisTextView\" destination=\"y0N-hi-Cso\" id=\"fVQ-DL-4f7\"/>\n                <outlet property=\"widthConstraint\" destination=\"f0C-66-fAz\" id=\"wYl-IQ-NLs\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"315.5\" y=\"137.5\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "PopcornTime/Views/StratchyHeaderLayout.swift",
    "content": "//\n//  StratchyHeaderLayout.swift\n//  PopcornTime\n//\n//  Created by Andrew  K. on 3/13/15.\n//  Copyright (c) 2015 PopcornTime. All rights reserved.\n//\n\nimport UIKit\n\nclass StratchyLayoutAttributes: UICollectionViewLayoutAttributes {\n    \n    var deltaY: CGFloat = 0\n    var maxDelta: CGFloat = CGFloat.greatestFiniteMagnitude\n    \n    override func copy(with zone: NSZone?) -> Any {\n        let copy = super.copy(with: zone) as! StratchyLayoutAttributes\n        copy.deltaY = deltaY\n        return copy\n    }\n    \n    override func isEqual(_ object: Any?) -> Bool {\n        if let attributes = object as? StratchyLayoutAttributes {\n            if attributes.deltaY == deltaY {\n                return super.isEqual(object)\n            }\n        }\n        return false\n    }\n}\n\nclass StratchyHeaderLayout: UICollectionViewFlowLayout, StratchyHeaderDelegate {\n    \n    var headerSize = CGSize.zero\n    var maxDelta: CGFloat = CGFloat.greatestFiniteMagnitude\n    let minCellWidth: CGFloat = 300\n    let cellAspectRatio: CGFloat = 370/46\n    \n    override class var layoutAttributesClass : AnyClass {\n        return StratchyLayoutAttributes.self\n    }\n    \n    override var collectionViewContentSize : CGSize {\n        \n        sectionInset.bottom = 15.0\n        sectionInset.top = 5.0\n        \n        minimumInteritemSpacing = sectionInset.left\n        \n        let width = self.collectionView!.bounds.width - sectionInset.left - sectionInset.right\n        let numberOfColumns = Int(width / minCellWidth)\n        let cellWidth = CGFloat((Int(width) - Int(minimumInteritemSpacing) * (numberOfColumns - 1)) / numberOfColumns)\n        let cellHeight = cellWidth / cellAspectRatio\n        self.itemSize = CGSize(width: cellWidth, height: cellHeight)\n        \n        return super.collectionViewContentSize\n    }\n    \n    override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool {\n        return true\n    }\n    \n    override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {\n        \n        let insets = collectionView!.contentInset\n        let offset = collectionView!.contentOffset\n        let minY = -insets.top\n        \n        let attributes = super.layoutAttributesForElements(in: rect)\n        \n        if let stratchyAttributes = attributes as? [StratchyLayoutAttributes] {\n            // Check if we've pulled below past the lowest position\n            if (offset.y < minY){\n                let deltaY = fabs(offset.y - minY)\n                \n                for attribute in stratchyAttributes{\n                    if (attribute.indexPath.section == 0){\n                        if let kind = attribute.representedElementKind{\n                            if (kind == UICollectionElementKindSectionHeader) {\n                                var headerRect = attribute.frame\n                                headerRect.size.height =  min(headerSize.height + maxDelta, max(minY, headerSize.height + deltaY));\n                                headerRect.origin.y = headerRect.minY - deltaY;\n                                attribute.frame = headerRect\n                                attribute.deltaY = deltaY\n                                attribute.maxDelta = maxDelta\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        \n        return attributes\n    }\n    \n    // MARK: - StratchyHeaderDelegate\n    func stratchyHeader(_ header: StratchyHeader, didResetMaxStratchValue value: CGFloat) {\n        maxDelta = value\n    }\n    \n}\n"
  },
  {
    "path": "PopcornTime.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\t0C0A54281AAEE7CB00B4B9B3 /* ImageProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C0A54271AAEE7CB00B4B9B3 /* ImageProvider.swift */; };\n\t\t0C43395E1AD427BD00542A9B /* StratchyHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0C43395D1AD427BD00542A9B /* StratchyHeader.xib */; };\n\t\t0C4F84C51AB2E21C00779B1A /* StratchyHeaderLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C4F84C41AB2E21C00779B1A /* StratchyHeaderLayout.swift */; };\n\t\t0C4F84C71AB32D3A00779B1A /* BarHidingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C4F84C61AB32D3A00779B1A /* BarHidingViewController.swift */; };\n\t\t0C4F84CE1AB385D600779B1A /* EpisodeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C4F84CC1AB385D600779B1A /* EpisodeCell.swift */; };\n\t\t0C4F84CF1AB385D600779B1A /* EpisodeCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0C4F84CD1AB385D600779B1A /* EpisodeCell.xib */; };\n\t\t0C5312D11AACE65A001CB097 /* ShowCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C5312CF1AACE65A001CB097 /* ShowCollectionViewCell.swift */; };\n\t\t0C5312D21AACE65A001CB097 /* ShowCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0C5312D01AACE65A001CB097 /* ShowCollectionViewCell.xib */; };\n\t\t0C77A4191AD2CA8300F8B610 /* StratchyHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C77A4181AD2CA8300F8B610 /* StratchyHeader.swift */; };\n\t\t0C7FB3881AAF3D57007AF38C /* MoreShowsCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C7FB3861AAF3D57007AF38C /* MoreShowsCollectionViewCell.swift */; };\n\t\t0C7FB3891AAF3D57007AF38C /* MoreShowsCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0C7FB3871AAF3D57007AF38C /* MoreShowsCollectionViewCell.xib */; };\n\t\t0C90B9B71AE110D4000D4B10 /* SeasonHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C90B9B51AE110D4000D4B10 /* SeasonHeader.swift */; };\n\t\t0C90B9B81AE110D4000D4B10 /* SeasonHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0C90B9B61AE110D4000D4B10 /* SeasonHeader.xib */; };\n\t\t0CC1A6761ABB55A6008F7A31 /* PagedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CC1A6751ABB55A6008F7A31 /* PagedViewController.swift */; };\n\t\t4348D3021B38161800028043 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D3011B38161800028043 /* AudioToolbox.framework */; };\n\t\t4348D3041B38162200028043 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D3031B38162200028043 /* CFNetwork.framework */; };\n\t\t4348D3061B38162F00028043 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D3051B38162F00028043 /* CoreGraphics.framework */; };\n\t\t4348D3081B38163700028043 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D3071B38163700028043 /* CoreLocation.framework */; };\n\t\t4348D30A1B38164300028043 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D3091B38164300028043 /* MobileCoreServices.framework */; };\n\t\t4348D30C1B38164D00028043 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D30B1B38164D00028043 /* QuartzCore.framework */; };\n\t\t4348D30E1B38165900028043 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D30D1B38165900028043 /* Security.framework */; };\n\t\t4348D3121B38166F00028043 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D3111B38166F00028043 /* SystemConfiguration.framework */; };\n\t\t4348D3141B38168800028043 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D3131B38168800028043 /* libsqlite3.dylib */; };\n\t\t4348D3181B38179100028043 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D3171B38179100028043 /* libz.dylib */; };\n\t\t4348D31D1B3817D800028043 /* Accounts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D3191B3817A400028043 /* Accounts.framework */; };\n\t\t4348D31E1B3817DF00028043 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4348D31B1B3817AB00028043 /* Social.framework */; };\n\t\t65ADB189759E25BAEE4DD696 /* libPods-PopcornTime.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E136A40A06A3FB238998C59 /* libPods-PopcornTime.a */; };\n\t\t773399A41AF7E43A008DF31A /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 773399A31AF7E43A008DF31A /* Launch Screen.xib */; };\n\t\t773399A61AF7E4C8008DF31A /* FavoritesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 773399A51AF7E4C8008DF31A /* FavoritesViewController.swift */; };\n\t\t773399A81AF7E4E8008DF31A /* ColorfullTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 773399A71AF7E4E8008DF31A /* ColorfullTabBarController.swift */; };\n\t\t77F3FE931C7F3F6800E18D42 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F3FE921C7F3F6800E18D42 /* AVFoundation.framework */; };\n\t\t7F01A53E1ABD953900D2B923 /* Anime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F01A53A1ABD953900D2B923 /* Anime.swift */; };\n\t\t7F01A53F1ABD953900D2B923 /* BasicInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F01A53B1ABD953900D2B923 /* BasicInfo.swift */; };\n\t\t7F01A5401ABD953900D2B923 /* Movie.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F01A53C1ABD953900D2B923 /* Movie.swift */; };\n\t\t7F01A5411ABD953900D2B923 /* Show.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F01A53D1ABD953900D2B923 /* Show.swift */; };\n\t\t7F01A5431ABD9BB600D2B923 /* BaseStructures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F01A5421ABD9BB600D2B923 /* BaseStructures.swift */; };\n\t\t7F0420501ABDCE4E00E27FA1 /* AnimeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04204B1ABDCE4E00E27FA1 /* AnimeViewController.swift */; };\n\t\t7F0420511ABDCE4E00E27FA1 /* BaseCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04204C1ABDCE4E00E27FA1 /* BaseCollectionViewController.swift */; };\n\t\t7F0420521ABDCE4E00E27FA1 /* MoviesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04204D1ABDCE4E00E27FA1 /* MoviesViewController.swift */; };\n\t\t7F0420531ABDCE4E00E27FA1 /* ShowDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04204E1ABDCE4E00E27FA1 /* ShowDetailsViewController.swift */; };\n\t\t7F0420541ABDCE4E00E27FA1 /* ShowsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04204F1ABDCE4E00E27FA1 /* ShowsViewController.swift */; };\n\t\t7F0420561ABDD3A100E27FA1 /* BaseDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0420551ABDD3A100E27FA1 /* BaseDetailsViewController.swift */; };\n\t\t7F0420591ABDD7D700E27FA1 /* AnimeDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0420571ABDD7D700E27FA1 /* AnimeDetailsViewController.swift */; };\n\t\t7F04205A1ABDD7D700E27FA1 /* MovieDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0420581ABDD7D700E27FA1 /* MovieDetailsViewController.swift */; };\n\t\t7F083C661AB36D84001C938B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F083C651AB36D84001C938B /* AppDelegate.swift */; };\n\t\t7F095FDE1AD059F000C10D98 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F095FDD1AD059F000C10D98 /* SettingsViewController.swift */; };\n\t\t7F4992A21A2491DF00D8D36E /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7F4992981A2491DF00D8D36E /* Images.xcassets */; };\n\t\t7F5047C31AC2095200521FC4 /* DataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F5047C21AC2095200521FC4 /* DataManager.swift */; };\n\t\t7F540A271AC8ADE100BCC4AC /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F540A261AC8ADE100BCC4AC /* Extensions.swift */; };\n\t\t7F8B3EB31ABDC55500BE192D /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F8B3EB21ABDC55500BE192D /* Image.swift */; };\n\t\t7F8D1A671A9D430100C236BC /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7F8D1A661A9D430100C236BC /* Main.storyboard */; };\n\t\t7F8D1A6A1A9D460000C236BC /* PTAPIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F8D1A691A9D460000C236BC /* PTAPIManager.m */; };\n\t\t7FB0E6DC1A9CCC6100DA2454 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FB0E6DB1A9CCC6100DA2454 /* libiconv.dylib */; };\n\t\t7FB0E6DE1A9CCC7E00DA2454 /* libbz2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FB0E6DD1A9CCC7E00DA2454 /* libbz2.dylib */; };\n\t\t7FCFC3A01A23351700B3B8C2 /* libstdc++.6.0.9.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FCFC3951A23341600B3B8C2 /* libstdc++.6.0.9.dylib */; };\n\t\t7FD762A01AB632E300BD462C /* LoadingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FD7629C1AB632E300BD462C /* LoadingViewController.swift */; };\n\t\t7FD762A21AB632E300BD462C /* OAuthViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FD7629E1AB632E300BD462C /* OAuthViewController.swift */; };\n\t\t7FD9B3631A9A89E400DB89B7 /* PTTorrentStreamer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7FD9B3621A9A89E400DB89B7 /* PTTorrentStreamer.mm */; };\n\t\t7FFEB1971AD079AB00344094 /* OpenSans-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7FFEB1961AD079AB00344094 /* OpenSans-Regular.ttf */; };\n\t\t7FFEB19D1AD081C900344094 /* VDLPlaybackViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FFEB19A1AD081C900344094 /* VDLPlaybackViewController.m */; };\n\t\t7FFEB19E1AD081C900344094 /* VDLPlaybackViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7FFEB19B1AD081C900344094 /* VDLPlaybackViewController.xib */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t0C0A54271AAEE7CB00B4B9B3 /* ImageProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageProvider.swift; sourceTree = \"<group>\"; };\n\t\t0C0C18FED81000FDE3F1BAC8 /* Pods-PopcornTime.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-PopcornTime.debug.xcconfig\"; path = \"Pods/Target Support Files/Pods-PopcornTime/Pods-PopcornTime.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t0C43395D1AD427BD00542A9B /* StratchyHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = StratchyHeader.xib; sourceTree = \"<group>\"; };\n\t\t0C4F84C41AB2E21C00779B1A /* StratchyHeaderLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StratchyHeaderLayout.swift; sourceTree = \"<group>\"; };\n\t\t0C4F84C61AB32D3A00779B1A /* BarHidingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BarHidingViewController.swift; path = Controllers/BarHidingViewController.swift; sourceTree = \"<group>\"; };\n\t\t0C4F84CC1AB385D600779B1A /* EpisodeCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EpisodeCell.swift; sourceTree = \"<group>\"; };\n\t\t0C4F84CD1AB385D600779B1A /* EpisodeCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EpisodeCell.xib; sourceTree = \"<group>\"; };\n\t\t0C5312C91AACDF34001CB097 /* PopcornTime-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"PopcornTime-Bridging-Header.h\"; sourceTree = \"<group>\"; };\n\t\t0C5312CF1AACE65A001CB097 /* ShowCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShowCollectionViewCell.swift; sourceTree = \"<group>\"; };\n\t\t0C5312D01AACE65A001CB097 /* ShowCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ShowCollectionViewCell.xib; sourceTree = \"<group>\"; };\n\t\t0C77A4181AD2CA8300F8B610 /* StratchyHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StratchyHeader.swift; sourceTree = \"<group>\"; };\n\t\t0C7FB3861AAF3D57007AF38C /* MoreShowsCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoreShowsCollectionViewCell.swift; sourceTree = \"<group>\"; };\n\t\t0C7FB3871AAF3D57007AF38C /* MoreShowsCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MoreShowsCollectionViewCell.xib; sourceTree = \"<group>\"; };\n\t\t0C90B9B51AE110D4000D4B10 /* SeasonHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SeasonHeader.swift; sourceTree = \"<group>\"; };\n\t\t0C90B9B61AE110D4000D4B10 /* SeasonHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SeasonHeader.xib; sourceTree = \"<group>\"; };\n\t\t0CC1A6751ABB55A6008F7A31 /* PagedViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PagedViewController.swift; path = Controllers/PagedViewController.swift; sourceTree = \"<group>\"; };\n\t\t4348D3011B38161800028043 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };\n\t\t4348D3031B38162200028043 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };\n\t\t4348D3051B38162F00028043 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };\n\t\t4348D3071B38163700028043 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };\n\t\t4348D3091B38164300028043 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };\n\t\t4348D30B1B38164D00028043 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };\n\t\t4348D30D1B38165900028043 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };\n\t\t4348D3111B38166F00028043 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };\n\t\t4348D3131B38168800028043 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; };\n\t\t4348D3171B38179100028043 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };\n\t\t4348D3191B3817A400028043 /* Accounts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accounts.framework; path = System/Library/Frameworks/Accounts.framework; sourceTree = SDKROOT; };\n\t\t4348D31B1B3817AB00028043 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };\n\t\t5892EA13CDF70C028E9A7CB2 /* Pods-PopcornTime.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-PopcornTime.release.xcconfig\"; path = \"Pods/Target Support Files/Pods-PopcornTime/Pods-PopcornTime.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t5E136A40A06A3FB238998C59 /* libPods-PopcornTime.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-PopcornTime.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t60E49EA58E27726D5CF6EA80 /* Pods-PopcornTime.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-PopcornTime.debug.xcconfig\"; path = \"Pods/Target Support Files/Pods-PopcornTime/Pods-PopcornTime.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t773399A31AF7E43A008DF31A /* Launch Screen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = \"Launch Screen.xib\"; path = \"PopcornTime/Resources/Launch Screen.xib\"; sourceTree = SOURCE_ROOT; };\n\t\t773399A51AF7E4C8008DF31A /* FavoritesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FavoritesViewController.swift; path = Controllers/FavoritesViewController.swift; sourceTree = \"<group>\"; };\n\t\t773399A71AF7E4E8008DF31A /* ColorfullTabBarController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ColorfullTabBarController.swift; path = Controllers/ColorfullTabBarController.swift; sourceTree = \"<group>\"; };\n\t\t77F3FE921C7F3F6800E18D42 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };\n\t\t7F01A53A1ABD953900D2B923 /* Anime.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Anime.swift; sourceTree = \"<group>\"; };\n\t\t7F01A53B1ABD953900D2B923 /* BasicInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicInfo.swift; sourceTree = \"<group>\"; };\n\t\t7F01A53C1ABD953900D2B923 /* Movie.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Movie.swift; sourceTree = \"<group>\"; };\n\t\t7F01A53D1ABD953900D2B923 /* Show.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Show.swift; sourceTree = \"<group>\"; };\n\t\t7F01A5421ABD9BB600D2B923 /* BaseStructures.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseStructures.swift; sourceTree = \"<group>\"; };\n\t\t7F04204B1ABDCE4E00E27FA1 /* AnimeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AnimeViewController.swift; path = Controllers/AnimeViewController.swift; sourceTree = \"<group>\"; };\n\t\t7F04204C1ABDCE4E00E27FA1 /* BaseCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BaseCollectionViewController.swift; path = Controllers/BaseCollectionViewController.swift; sourceTree = \"<group>\"; };\n\t\t7F04204D1ABDCE4E00E27FA1 /* MoviesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MoviesViewController.swift; path = Controllers/MoviesViewController.swift; sourceTree = \"<group>\"; };\n\t\t7F04204E1ABDCE4E00E27FA1 /* ShowDetailsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ShowDetailsViewController.swift; path = Controllers/ShowDetailsViewController.swift; sourceTree = \"<group>\"; };\n\t\t7F04204F1ABDCE4E00E27FA1 /* ShowsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ShowsViewController.swift; path = Controllers/ShowsViewController.swift; sourceTree = \"<group>\"; };\n\t\t7F0420551ABDD3A100E27FA1 /* BaseDetailsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BaseDetailsViewController.swift; path = Controllers/BaseDetailsViewController.swift; sourceTree = \"<group>\"; };\n\t\t7F0420571ABDD7D700E27FA1 /* AnimeDetailsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AnimeDetailsViewController.swift; path = Controllers/AnimeDetailsViewController.swift; sourceTree = \"<group>\"; };\n\t\t7F0420581ABDD7D700E27FA1 /* MovieDetailsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MovieDetailsViewController.swift; path = Controllers/MovieDetailsViewController.swift; sourceTree = \"<group>\"; };\n\t\t7F083C651AB36D84001C938B /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\t7F095FDD1AD059F000C10D98 /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SettingsViewController.swift; path = Controllers/SettingsViewController.swift; sourceTree = \"<group>\"; };\n\t\t7F4992981A2491DF00D8D36E /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Resources/Images.xcassets; sourceTree = \"<group>\"; };\n\t\t7F5047C21AC2095200521FC4 /* DataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataManager.swift; sourceTree = \"<group>\"; };\n\t\t7F540A261AC8ADE100BCC4AC /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = \"<group>\"; };\n\t\t7F8824C71A227A0100E2710A /* PopcornTime.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PopcornTime.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t7F8B3EB21ABDC55500BE192D /* Image.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Image.swift; sourceTree = \"<group>\"; };\n\t\t7F8D1A661A9D430100C236BC /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Resources/Main.storyboard; sourceTree = \"<group>\"; };\n\t\t7F8D1A681A9D460000C236BC /* PTAPIManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTAPIManager.h; sourceTree = \"<group>\"; };\n\t\t7F8D1A691A9D460000C236BC /* PTAPIManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PTAPIManager.m; sourceTree = \"<group>\"; };\n\t\t7FB0E6DB1A9CCC6100DA2454 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; };\n\t\t7FB0E6DD1A9CCC7E00DA2454 /* libbz2.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libbz2.dylib; path = usr/lib/libbz2.dylib; sourceTree = SDKROOT; };\n\t\t7FCFC3951A23341600B3B8C2 /* libstdc++.6.0.9.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = \"libstdc++.6.0.9.dylib\"; path = \"usr/lib/libstdc++.6.0.9.dylib\"; sourceTree = SDKROOT; };\n\t\t7FD2C38D1A233C9000CA896A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t7FD7629C1AB632E300BD462C /* LoadingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LoadingViewController.swift; path = Controllers/LoadingViewController.swift; sourceTree = \"<group>\"; };\n\t\t7FD7629E1AB632E300BD462C /* OAuthViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OAuthViewController.swift; path = Controllers/OAuthViewController.swift; sourceTree = \"<group>\"; };\n\t\t7FD9B3611A9A89E400DB89B7 /* PTTorrentStreamer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTTorrentStreamer.h; sourceTree = \"<group>\"; };\n\t\t7FD9B3621A9A89E400DB89B7 /* PTTorrentStreamer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PTTorrentStreamer.mm; sourceTree = \"<group>\"; };\n\t\t7FFEB1961AD079AB00344094 /* OpenSans-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = \"OpenSans-Regular.ttf\"; path = \"Resources/OpenSans-Regular.ttf\"; sourceTree = \"<group>\"; };\n\t\t7FFEB1991AD081C900344094 /* VDLPlaybackViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VDLPlaybackViewController.h; sourceTree = \"<group>\"; };\n\t\t7FFEB19A1AD081C900344094 /* VDLPlaybackViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VDLPlaybackViewController.m; sourceTree = \"<group>\"; };\n\t\t7FFEB19B1AD081C900344094 /* VDLPlaybackViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = VDLPlaybackViewController.xib; sourceTree = \"<group>\"; };\n\t\tC2ADA07C3D291A9561B464E9 /* Pods-PopcornTime.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-PopcornTime.release.xcconfig\"; path = \"Pods/Target Support Files/Pods-PopcornTime/Pods-PopcornTime.release.xcconfig\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t7F8824C41A227A0100E2710A /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t77F3FE931C7F3F6800E18D42 /* AVFoundation.framework in Frameworks */,\n\t\t\t\t4348D31E1B3817DF00028043 /* Social.framework in Frameworks */,\n\t\t\t\t4348D31D1B3817D800028043 /* Accounts.framework in Frameworks */,\n\t\t\t\t4348D3181B38179100028043 /* libz.dylib in Frameworks */,\n\t\t\t\t4348D3141B38168800028043 /* libsqlite3.dylib in Frameworks */,\n\t\t\t\t4348D3121B38166F00028043 /* SystemConfiguration.framework in Frameworks */,\n\t\t\t\t4348D30E1B38165900028043 /* Security.framework in Frameworks */,\n\t\t\t\t4348D30C1B38164D00028043 /* QuartzCore.framework in Frameworks */,\n\t\t\t\t4348D30A1B38164300028043 /* MobileCoreServices.framework in Frameworks */,\n\t\t\t\t4348D3081B38163700028043 /* CoreLocation.framework in Frameworks */,\n\t\t\t\t4348D3061B38162F00028043 /* CoreGraphics.framework in Frameworks */,\n\t\t\t\t4348D3041B38162200028043 /* CFNetwork.framework in Frameworks */,\n\t\t\t\t4348D3021B38161800028043 /* AudioToolbox.framework in Frameworks */,\n\t\t\t\t7FB0E6DE1A9CCC7E00DA2454 /* libbz2.dylib in Frameworks */,\n\t\t\t\t7FB0E6DC1A9CCC6100DA2454 /* libiconv.dylib in Frameworks */,\n\t\t\t\t7FCFC3A01A23351700B3B8C2 /* libstdc++.6.0.9.dylib in Frameworks */,\n\t\t\t\t65ADB189759E25BAEE4DD696 /* libPods-PopcornTime.a 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\t0C5312CE1AACE5AF001CB097 /* Views */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0C4F84CC1AB385D600779B1A /* EpisodeCell.swift */,\n\t\t\t\t0C4F84CD1AB385D600779B1A /* EpisodeCell.xib */,\n\t\t\t\t0C5312CF1AACE65A001CB097 /* ShowCollectionViewCell.swift */,\n\t\t\t\t0C5312D01AACE65A001CB097 /* ShowCollectionViewCell.xib */,\n\t\t\t\t0C7FB3861AAF3D57007AF38C /* MoreShowsCollectionViewCell.swift */,\n\t\t\t\t0C7FB3871AAF3D57007AF38C /* MoreShowsCollectionViewCell.xib */,\n\t\t\t\t0C90B9B51AE110D4000D4B10 /* SeasonHeader.swift */,\n\t\t\t\t0C90B9B61AE110D4000D4B10 /* SeasonHeader.xib */,\n\t\t\t\t0C4F84C41AB2E21C00779B1A /* StratchyHeaderLayout.swift */,\n\t\t\t\t0C77A4181AD2CA8300F8B610 /* StratchyHeader.swift */,\n\t\t\t\t0C43395D1AD427BD00542A9B /* StratchyHeader.xib */,\n\t\t\t);\n\t\t\tpath = Views;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t4EBD161BC990BBB37DA12395 /* Pods */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0C0C18FED81000FDE3F1BAC8 /* Pods-PopcornTime.debug.xcconfig */,\n\t\t\t\tC2ADA07C3D291A9561B464E9 /* Pods-PopcornTime.release.xcconfig */,\n\t\t\t\t60E49EA58E27726D5CF6EA80 /* Pods-PopcornTime.debug.xcconfig */,\n\t\t\t\t5892EA13CDF70C028E9A7CB2 /* Pods-PopcornTime.release.xcconfig */,\n\t\t\t);\n\t\t\tname = Pods;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7F01A5481ABD9F5800D2B923 /* Base */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7F01A5421ABD9BB600D2B923 /* BaseStructures.swift */,\n\t\t\t\t7F8B3EB21ABDC55500BE192D /* Image.swift */,\n\t\t\t\t7F01A53B1ABD953900D2B923 /* BasicInfo.swift */,\n\t\t\t\t7F01A53D1ABD953900D2B923 /* Show.swift */,\n\t\t\t\t7F01A53C1ABD953900D2B923 /* Movie.swift */,\n\t\t\t\t7F01A53A1ABD953900D2B923 /* Anime.swift */,\n\t\t\t);\n\t\t\tname = Base;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7F4992B71A24928200D8D36E /* Models */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7F083C651AB36D84001C938B /* AppDelegate.swift */,\n\t\t\t\t7F8D1A681A9D460000C236BC /* PTAPIManager.h */,\n\t\t\t\t7F8D1A691A9D460000C236BC /* PTAPIManager.m */,\n\t\t\t\t7F5047C21AC2095200521FC4 /* DataManager.swift */,\n\t\t\t\t7FD9B3611A9A89E400DB89B7 /* PTTorrentStreamer.h */,\n\t\t\t\t7FD9B3621A9A89E400DB89B7 /* PTTorrentStreamer.mm */,\n\t\t\t\t0C0A54271AAEE7CB00B4B9B3 /* ImageProvider.swift */,\n\t\t\t\t7F540A261AC8ADE100BCC4AC /* Extensions.swift */,\n\t\t\t\t7F01A5481ABD9F5800D2B923 /* Base */,\n\t\t\t);\n\t\t\tpath = Models;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7F4992DE1A24928C00D8D36E /* Thirdparties */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7FFEB1981AD081C900344094 /* Dropin-Player */,\n\t\t\t);\n\t\t\tname = Thirdparties;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7F8824BE1A227A0000E2710A = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7F8824C91A227A0100E2710A /* PopcornTime */,\n\t\t\t\t7FCFC2F01A227FA800B3B8C2 /* Frameworks */,\n\t\t\t\t7F8824C81A227A0100E2710A /* Products */,\n\t\t\t\t4EBD161BC990BBB37DA12395 /* Pods */,\n\t\t\t);\n\t\t\tindentWidth = 4;\n\t\t\tsourceTree = \"<group>\";\n\t\t\ttabWidth = 4;\n\t\t};\n\t\t7F8824C81A227A0100E2710A /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7F8824C71A227A0100E2710A /* PopcornTime.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7F8824C91A227A0100E2710A /* PopcornTime */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7F4992DE1A24928C00D8D36E /* Thirdparties */,\n\t\t\t\t7F4992B71A24928200D8D36E /* Models */,\n\t\t\t\t0C5312CE1AACE5AF001CB097 /* Views */,\n\t\t\t\t7F8D1A6C1A9DB78100C236BC /* Controllers */,\n\t\t\t\t7FCFC31B1A2281B900B3B8C2 /* Resources */,\n\t\t\t\t7F8824CA1A227A0100E2710A /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = PopcornTime;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7F8824CA1A227A0100E2710A /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0C5312C91AACDF34001CB097 /* PopcornTime-Bridging-Header.h */,\n\t\t\t\t7FD2C38D1A233C9000CA896A /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7F8D1A6C1A9DB78100C236BC /* Controllers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7FD7629E1AB632E300BD462C /* OAuthViewController.swift */,\n\t\t\t\t7FD7629C1AB632E300BD462C /* LoadingViewController.swift */,\n\t\t\t\t0C4F84C61AB32D3A00779B1A /* BarHidingViewController.swift */,\n\t\t\t\t7F04204C1ABDCE4E00E27FA1 /* BaseCollectionViewController.swift */,\n\t\t\t\t0CC1A6751ABB55A6008F7A31 /* PagedViewController.swift */,\n\t\t\t\t773399A51AF7E4C8008DF31A /* FavoritesViewController.swift */,\n\t\t\t\t7F0420551ABDD3A100E27FA1 /* BaseDetailsViewController.swift */,\n\t\t\t\t7F04204F1ABDCE4E00E27FA1 /* ShowsViewController.swift */,\n\t\t\t\t7F04204E1ABDCE4E00E27FA1 /* ShowDetailsViewController.swift */,\n\t\t\t\t7F04204D1ABDCE4E00E27FA1 /* MoviesViewController.swift */,\n\t\t\t\t7F0420581ABDD7D700E27FA1 /* MovieDetailsViewController.swift */,\n\t\t\t\t7F04204B1ABDCE4E00E27FA1 /* AnimeViewController.swift */,\n\t\t\t\t7F0420571ABDD7D700E27FA1 /* AnimeDetailsViewController.swift */,\n\t\t\t\t7F095FDD1AD059F000C10D98 /* SettingsViewController.swift */,\n\t\t\t\t773399A71AF7E4E8008DF31A /* ColorfullTabBarController.swift */,\n\t\t\t);\n\t\t\tname = Controllers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7FCFC2F01A227FA800B3B8C2 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t77F3FE921C7F3F6800E18D42 /* AVFoundation.framework */,\n\t\t\t\t4348D31B1B3817AB00028043 /* Social.framework */,\n\t\t\t\t4348D3191B3817A400028043 /* Accounts.framework */,\n\t\t\t\t4348D3171B38179100028043 /* libz.dylib */,\n\t\t\t\t4348D3131B38168800028043 /* libsqlite3.dylib */,\n\t\t\t\t4348D3111B38166F00028043 /* SystemConfiguration.framework */,\n\t\t\t\t4348D30D1B38165900028043 /* Security.framework */,\n\t\t\t\t4348D30B1B38164D00028043 /* QuartzCore.framework */,\n\t\t\t\t4348D3091B38164300028043 /* MobileCoreServices.framework */,\n\t\t\t\t4348D3071B38163700028043 /* CoreLocation.framework */,\n\t\t\t\t4348D3051B38162F00028043 /* CoreGraphics.framework */,\n\t\t\t\t4348D3031B38162200028043 /* CFNetwork.framework */,\n\t\t\t\t4348D3011B38161800028043 /* AudioToolbox.framework */,\n\t\t\t\t7FCFC3951A23341600B3B8C2 /* libstdc++.6.0.9.dylib */,\n\t\t\t\t7FB0E6DD1A9CCC7E00DA2454 /* libbz2.dylib */,\n\t\t\t\t7FB0E6DB1A9CCC6100DA2454 /* libiconv.dylib */,\n\t\t\t\t5E136A40A06A3FB238998C59 /* libPods-PopcornTime.a */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7FCFC31B1A2281B900B3B8C2 /* Resources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t773399A31AF7E43A008DF31A /* Launch Screen.xib */,\n\t\t\t\t7F8D1A661A9D430100C236BC /* Main.storyboard */,\n\t\t\t\t7F4992981A2491DF00D8D36E /* Images.xcassets */,\n\t\t\t\t7FFEB1961AD079AB00344094 /* OpenSans-Regular.ttf */,\n\t\t\t);\n\t\t\tname = Resources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7FFEB1981AD081C900344094 /* Dropin-Player */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7FFEB1991AD081C900344094 /* VDLPlaybackViewController.h */,\n\t\t\t\t7FFEB19A1AD081C900344094 /* VDLPlaybackViewController.m */,\n\t\t\t\t7FFEB19B1AD081C900344094 /* VDLPlaybackViewController.xib */,\n\t\t\t);\n\t\t\tname = \"Dropin-Player\";\n\t\t\tpath = \"Thirdparties/VLCKit/Dropin-Player\";\n\t\t\tsourceTree = SOURCE_ROOT;\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t7F8824C61A227A0100E2710A /* PopcornTime */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 7F8824EA1A227A0100E2710A /* Build configuration list for PBXNativeTarget \"PopcornTime\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC38234B7FF1C570F03EDA121 /* Check Pods Manifest.lock */,\n\t\t\t\t7F8824C31A227A0100E2710A /* Sources */,\n\t\t\t\t7F8824C41A227A0100E2710A /* Frameworks */,\n\t\t\t\t7F8824C51A227A0100E2710A /* Resources */,\n\t\t\t\t814B281F6347C227DBD77ABF /* Copy Pods Resources */,\n\t\t\t\t7742C4881B038132001B783E /* ShellScript */,\n\t\t\t\t7BC4B191B7B88187B684FB7B /* Embed Pods Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = PopcornTime;\n\t\t\tproductName = PopcornTime;\n\t\t\tproductReference = 7F8824C71A227A0100E2710A /* PopcornTime.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t7F8824BF1A227A0000E2710A /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tCLASSPREFIX = \"\";\n\t\t\t\tLastSwiftMigration = 0700;\n\t\t\t\tLastSwiftUpdateCheck = 0700;\n\t\t\t\tLastUpgradeCheck = 0820;\n\t\t\t\tORGANIZATIONNAME = PopcornTime;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t7F8824C61A227A0100E2710A = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.1;\n\t\t\t\t\t\tDevelopmentTeam = DBR2MMCRF5;\n\t\t\t\t\t\tLastSwiftMigration = 0820;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t\tSystemCapabilities = {\n\t\t\t\t\t\t\tcom.apple.InAppPurchase = {\n\t\t\t\t\t\t\t\tenabled = 0;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t};\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 7F8824C21A227A0100E2710A /* Build configuration list for PBXProject \"PopcornTime\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 7F8824BE1A227A0000E2710A;\n\t\t\tproductRefGroup = 7F8824C81A227A0100E2710A /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t7F8824C61A227A0100E2710A /* PopcornTime */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t7F8824C51A227A0100E2710A /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t0C7FB3891AAF3D57007AF38C /* MoreShowsCollectionViewCell.xib in Resources */,\n\t\t\t\t0C5312D21AACE65A001CB097 /* ShowCollectionViewCell.xib in Resources */,\n\t\t\t\t0C43395E1AD427BD00542A9B /* StratchyHeader.xib in Resources */,\n\t\t\t\t7FFEB19E1AD081C900344094 /* VDLPlaybackViewController.xib in Resources */,\n\t\t\t\t7F8D1A671A9D430100C236BC /* Main.storyboard in Resources */,\n\t\t\t\t7F4992A21A2491DF00D8D36E /* Images.xcassets in Resources */,\n\t\t\t\t0C90B9B81AE110D4000D4B10 /* SeasonHeader.xib in Resources */,\n\t\t\t\t7FFEB1971AD079AB00344094 /* OpenSans-Regular.ttf in Resources */,\n\t\t\t\t0C4F84CF1AB385D600779B1A /* EpisodeCell.xib in Resources */,\n\t\t\t\t773399A41AF7E43A008DF31A /* Launch Screen.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t7742C4881B038132001B783E /* ShellScript */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"if [ -n \\\"$FABRIC_API_KEY\\\" ] && [ -n \\\"$FABRIC_BUILD_SECRET\\\" ]; then\\n    ${PODS_ROOT}/Fabric/run ${FABRIC_API_KEY} ${FABRIC_BUILD_SECRET} || true\\nelse\\n    echo \\\"FABRIC_API_KEY and/or FABRIC_BUILD_SECRET are not set\\\"\\nfi\";\n\t\t};\n\t\t7BC4B191B7B88187B684FB7B /* Embed Pods Frameworks */ = {\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 = \"Embed Pods Frameworks\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${SRCROOT}/Pods/Target Support Files/Pods-PopcornTime/Pods-PopcornTime-frameworks.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t814B281F6347C227DBD77ABF /* Copy Pods Resources */ = {\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 = \"Copy Pods Resources\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${SRCROOT}/Pods/Target Support Files/Pods-PopcornTime/Pods-PopcornTime-resources.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tC38234B7FF1C570F03EDA121 /* Check Pods Manifest.lock */ = {\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 = \"Check Pods Manifest.lock\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_ROOT}/../Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [[ $? != 0 ]] ; then\\n    cat << EOM\\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\nEOM\\n    exit 1\\nfi\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t7F8824C31A227A0100E2710A /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t7F5047C31AC2095200521FC4 /* DataManager.swift in Sources */,\n\t\t\t\t7F8B3EB31ABDC55500BE192D /* Image.swift in Sources */,\n\t\t\t\t7F0420561ABDD3A100E27FA1 /* BaseDetailsViewController.swift in Sources */,\n\t\t\t\t7FD9B3631A9A89E400DB89B7 /* PTTorrentStreamer.mm in Sources */,\n\t\t\t\t7FD762A01AB632E300BD462C /* LoadingViewController.swift in Sources */,\n\t\t\t\t7F01A5401ABD953900D2B923 /* Movie.swift in Sources */,\n\t\t\t\t0C5312D11AACE65A001CB097 /* ShowCollectionViewCell.swift in Sources */,\n\t\t\t\t7F0420541ABDCE4E00E27FA1 /* ShowsViewController.swift in Sources */,\n\t\t\t\t773399A61AF7E4C8008DF31A /* FavoritesViewController.swift in Sources */,\n\t\t\t\t7F01A5411ABD953900D2B923 /* Show.swift in Sources */,\n\t\t\t\t7F540A271AC8ADE100BCC4AC /* Extensions.swift in Sources */,\n\t\t\t\t0C77A4191AD2CA8300F8B610 /* StratchyHeader.swift in Sources */,\n\t\t\t\t7F01A5431ABD9BB600D2B923 /* BaseStructures.swift in Sources */,\n\t\t\t\t0C4F84CE1AB385D600779B1A /* EpisodeCell.swift in Sources */,\n\t\t\t\t773399A81AF7E4E8008DF31A /* ColorfullTabBarController.swift in Sources */,\n\t\t\t\t7F01A53F1ABD953900D2B923 /* BasicInfo.swift in Sources */,\n\t\t\t\t7FFEB19D1AD081C900344094 /* VDLPlaybackViewController.m in Sources */,\n\t\t\t\t0C4F84C71AB32D3A00779B1A /* BarHidingViewController.swift in Sources */,\n\t\t\t\t7F8D1A6A1A9D460000C236BC /* PTAPIManager.m in Sources */,\n\t\t\t\t0C7FB3881AAF3D57007AF38C /* MoreShowsCollectionViewCell.swift in Sources */,\n\t\t\t\t0CC1A6761ABB55A6008F7A31 /* PagedViewController.swift in Sources */,\n\t\t\t\t7FD762A21AB632E300BD462C /* OAuthViewController.swift in Sources */,\n\t\t\t\t7F0420591ABDD7D700E27FA1 /* AnimeDetailsViewController.swift in Sources */,\n\t\t\t\t7F095FDE1AD059F000C10D98 /* SettingsViewController.swift in Sources */,\n\t\t\t\t7F0420531ABDCE4E00E27FA1 /* ShowDetailsViewController.swift in Sources */,\n\t\t\t\t7F0420501ABDCE4E00E27FA1 /* AnimeViewController.swift in Sources */,\n\t\t\t\t0C4F84C51AB2E21C00779B1A /* StratchyHeaderLayout.swift in Sources */,\n\t\t\t\t7F01A53E1ABD953900D2B923 /* Anime.swift in Sources */,\n\t\t\t\t7F0420511ABDCE4E00E27FA1 /* BaseCollectionViewController.swift in Sources */,\n\t\t\t\t7F04205A1ABDD7D700E27FA1 /* MovieDetailsViewController.swift in Sources */,\n\t\t\t\t7F0420521ABDCE4E00E27FA1 /* MoviesViewController.swift in Sources */,\n\t\t\t\t0C0A54281AAEE7CB00B4B9B3 /* ImageProvider.swift in Sources */,\n\t\t\t\t7F083C661AB36D84001C938B /* AppDelegate.swift in Sources */,\n\t\t\t\t0C90B9B71AE110D4000D4B10 /* SeasonHeader.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t7F8824E81A227A0100E2710A /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_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\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEVELOPMENT_TEAM = DBR2MMCRF5;\n\t\t\t\tENABLE_BITCODE = NO;\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_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_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 = 8.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tOTHER_SWIFT_FLAGS = \"-D DEBUG\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t7F8824E91A227A0100E2710A /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_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\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tDEVELOPMENT_TEAM = DBR2MMCRF5;\n\t\t\t\tENABLE_BITCODE = NO;\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 = 8.0;\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\t7F8824EB1A227A0100E2710A /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 60E49EA58E27726D5CF6EA80 /* Pods-PopcornTime.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\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\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)\",\n\t\t\t\t);\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = \"$(inherited)\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/PopcornTime/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tOTHER_SWIFT_FLAGS = \"-DDEBUG\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.popcorntime.ios.dk;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"PopcornTime/PopcornTime-Bridging-Header.h\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 3.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALID_ARCHS = \"arm64 armv7 armv7s\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t7F8824EC1A227A0100E2710A /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 5892EA13CDF70C028E9A7CB2 /* Pods-PopcornTime.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\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\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)\",\n\t\t\t\t);\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = \"$(inherited)\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/PopcornTime/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_SWIFT_FLAGS = \"-DRELEASE\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.popcorntime.ios.dk;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"PopcornTime/PopcornTime-Bridging-Header.h\";\n\t\t\t\tSWIFT_VERSION = 3.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALID_ARCHS = \"arm64 armv7 armv7s\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t7F8824C21A227A0100E2710A /* Build configuration list for PBXProject \"PopcornTime\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t7F8824E81A227A0100E2710A /* Debug */,\n\t\t\t\t7F8824E91A227A0100E2710A /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t7F8824EA1A227A0100E2710A /* Build configuration list for PBXNativeTarget \"PopcornTime\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t7F8824EB1A227A0100E2710A /* Debug */,\n\t\t\t\t7F8824EC1A227A0100E2710A /* 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 = 7F8824BF1A227A0000E2710A /* Project object */;\n}\n"
  },
  {
    "path": "PopcornTime.xcodeproj/xcshareddata/xcschemes/PopcornTime.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0820\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"7F8824C61A227A0100E2710A\"\n               BuildableName = \"PopcornTime.app\"\n               BlueprintName = \"PopcornTime\"\n               ReferencedContainer = \"container:PopcornTime.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"7F8824C61A227A0100E2710A\"\n            BuildableName = \"PopcornTime.app\"\n            BlueprintName = \"PopcornTime\"\n            ReferencedContainer = \"container:PopcornTime.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"7F8824C61A227A0100E2710A\"\n            BuildableName = \"PopcornTime.app\"\n            BlueprintName = \"PopcornTime\"\n            ReferencedContainer = \"container:PopcornTime.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"7F8824C61A227A0100E2710A\"\n            BuildableName = \"PopcornTime.app\"\n            BlueprintName = \"PopcornTime\"\n            ReferencedContainer = \"container:PopcornTime.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "README.md",
    "content": "## PopcornTime for iOS\n\n[![Build Status](https://www.bitrise.io/app/9ee06c0598c7cbdb.svg?token=nH-7MkkoZ7EpSlvMce4KkA)](https://www.bitrise.io/app/9ee06c0598c7cbdb)\n\nVersion of PopcornTime app for iOS based on [libtorrent](http://www.libtorrent.org) and [MobileVLCKit](https://wiki.videolan.org/VLCKit/). There is still a lot of work to do, but in most cases it works.\n\n### Screenshots\n\n![](https://raw.github.com/danylokostyshyn/popcorntime-ios/master/Screenshots/1.png)\n![](https://raw.github.com/danylokostyshyn/popcorntime-ios/master/Screenshots/2.png)\n![](https://raw.github.com/danylokostyshyn/popcorntime-ios/master/Screenshots/3.png)\n\n### Getting Started\n\nThis project uses [CocoaPods](http://cocoapods.org/).\n\n``` bash\n$ git clone https://github.com/danylokostyshyn/popcorntime-ios.git\n$ cd popcorntime-ios/\n$ pod install\n$ open PopcornTime.xcworkspace/\n```"
  },
  {
    "path": "Thirdparties/VLCKit/Dropin-Player/VDLPlaybackViewController.h",
    "content": "/* Copyright (c) 2013, Felix Paul Kühne and VideoLAN\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n *    this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n *    this list of conditions and the following disclaimer in the documentation\n *    and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE. */\n\n#import <UIKit/UIKit.h>\n#import <MediaPlayer/MediaPlayer.h>\n\n@class VDLPlaybackViewController;\n@protocol VDLPlaybackViewControllerDelegate <NSObject>\n- (void)playbackControllerDidFinishPlayback:(VDLPlaybackViewController *)playbackController;\n@end\n\n@interface VDLPlaybackViewController : UIViewController\n\n@property (nonatomic, strong) IBOutlet UIView *movieView;\n@property (nonatomic, strong) IBOutlet UISlider *positionSlider;\n@property (nonatomic, strong) IBOutlet UIButton *timeDisplay;\n@property (nonatomic, strong) IBOutlet UIButton *playPauseButton;\n@property (nonatomic, strong) IBOutlet UIButton *subtitleSwitcherButton;\n@property (nonatomic, strong) IBOutlet UIButton *audioSwitcherButton;\n@property (nonatomic, strong) IBOutlet UINavigationBar *toolbar;\n@property (nonatomic, strong) IBOutlet UIView *controllerPanel;\n@property (nonatomic, strong) IBOutlet MPVolumeView *volumeView;\n@property (nonatomic, weak) id<VDLPlaybackViewControllerDelegate> delegate;\n\n- (void)playMediaFromURL:(NSURL*)theURL;\n\n- (IBAction)closePlayback:(id)sender;\n\n- (IBAction)positionSliderDrag:(id)sender;\n- (IBAction)positionSliderAction:(id)sender;\n- (IBAction)toggleTimeDisplay:(id)sender;\n\n- (IBAction)playandPause:(id)sender;\n- (IBAction)switchAudioTrack:(id)sender;\n- (IBAction)switchSubtitleTrack:(id)sender;\n- (IBAction)switchVideoDimensions:(id)sender;\n\n@end\n"
  },
  {
    "path": "Thirdparties/VLCKit/Dropin-Player/VDLPlaybackViewController.m",
    "content": "/* Copyright (c) 2013, Felix Paul Kühne and VideoLAN\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without \n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, \n *    this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n *    this list of conditions and the following disclaimer in the documentation\n *    and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" \n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE. */\n\n#import \"VDLPlaybackViewController.h\"\n#import <AVFoundation/AVFoundation.h>\n#import <MobileVLCKit/MobileVLCKit.h>\n\n@interface VDLPlaybackViewController () <UIActionSheetDelegate>\n{\n    VLCMediaPlayer *_mediaplayer;\n    BOOL _setPosition;\n    BOOL _displayRemainingTime;\n    int _currentAspectRatioMask;\n    NSArray *_aspectRatios;\n    UIActionSheet *_audiotrackActionSheet;\n    UIActionSheet *_subtitleActionSheet;\n    NSURL *_url;\n    NSTimer *_idleTimer;\n}\n\n@end\n\n@implementation VDLPlaybackViewController\n\n- (void)viewDidLoad\n{\n    [super viewDidLoad];\n\n    /* fix-up UI */\n    self.wantsFullScreenLayout = YES;\n    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];\n\n    /* we want to influence the system volume */\n    [[AVAudioSession sharedInstance] setDelegate:self];\n\n    /* populate array of supported aspect ratios (there are more!) */\n    _aspectRatios = @[@\"DEFAULT\", @\"FILL_TO_SCREEN\", @\"4:3\", @\"16:9\", @\"16:10\", @\"2.21:1\"];\n\n    /* fix-up the UI */\n    CGRect rect = self.toolbar.frame;\n    rect.size.height += 20.;\n    self.toolbar.frame = rect;\n    [self.timeDisplay setTitle:@\"\" forState:UIControlStateNormal];\n\n    /* this looks a bit weird, but let's try to support iOS 5 */\n    UISlider *volumeSlider = nil;\n    for (id aView in self.volumeView.subviews){\n        if ([[[aView class] description] isEqualToString:@\"MPVolumeSlider\"]){\n            volumeSlider = (UISlider *)aView;\n            break;\n        }\n    }\n    [volumeSlider addTarget:self\n                     action:@selector(volumeSliderAction:)\n           forControlEvents:UIControlEventValueChanged];\n\n    /* setup gesture recognizer to toggle controls' visibility */\n    UITapGestureRecognizer *tapOnVideoRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleControlsVisible)];\n    [self.movieView addGestureRecognizer:tapOnVideoRecognizer];\n}\n\n- (void)playMediaFromURL:(NSURL*)theURL\n{\n    _url = theURL;\n}\n\n- (IBAction)playandPause:(id)sender\n{\n    if (_mediaplayer.isPlaying)\n        [_mediaplayer pause];\n\n    [_mediaplayer play];\n}\n\n- (IBAction)closePlayback:(id)sender\n{\n    [self.delegate playbackControllerDidFinishPlayback:self];\n    self.delegate = nil;\n}\n\n- (void)viewWillAppear:(BOOL)animated\n{\n    [super viewWillAppear:animated];\n\n    [self.navigationController setNavigationBarHidden:YES animated:YES];\n\n    /* setup the media player instance, give it a delegate and something to draw into */\n//    NSString *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;\n//    NSString *logFilePath = [documents stringByAppendingPathComponent:@\"log.txt\"];\n//    NSString *logParam = [NSString stringWithFormat:@\"--logfile=\\\"%@\\\"\", logFilePath];\n    _mediaplayer = [[VLCMediaPlayer alloc] initWithOptions:@[@\"--avi-index=2\", @\"--play-and-pause\"]];\n    _mediaplayer.delegate = self;\n    _mediaplayer.drawable = self.movieView;\n\n    /* listen for notifications from the player */\n    [_mediaplayer addObserver:self forKeyPath:@\"time\" options:0 context:nil];\n    [_mediaplayer addObserver:self forKeyPath:@\"remainingTime\" options:0 context:nil];\n\n    /* create a media object and give it to the player */\n    _mediaplayer.media = [VLCMedia mediaWithURL:_url];\n\n    [_mediaplayer play];\n\n    if (self.controllerPanel.hidden)\n        [self toggleControlsVisible];\n\n    [self _resetIdleTimer];\n}\n\n\n- (void)viewWillDisappear:(BOOL)animated\n{\n    [super viewWillDisappear:animated];\n\n    if (_mediaplayer) {\n        @try {\n            [_mediaplayer removeObserver:self forKeyPath:@\"time\"];\n            [_mediaplayer removeObserver:self forKeyPath:@\"remainingTime\"];\n        }\n        @catch (NSException *exception) {\n            NSLog(@\"we weren't an observer yet\");\n        }\n\n        if (_mediaplayer.media)\n            [_mediaplayer stop];\n\n        if (_mediaplayer)\n            _mediaplayer = nil;\n    }\n\n    if (_idleTimer) {\n        [_idleTimer invalidate];\n        _idleTimer = nil;\n    }\n\n    [self.navigationController setNavigationBarHidden:NO animated:YES];\n    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];\n}\n\n- (IBAction)positionSliderAction:(UISlider *)sender\n{\n    [self _resetIdleTimer];\n\n    /* we need to limit the number of events sent by the slider, since otherwise, the user\n     * wouldn't see the I-frames when seeking on current mobile devices. This isn't a problem\n     * within the Simulator, but especially on older ARMv7 devices, it's clearly noticeable. */\n    [self performSelector:@selector(_setPositionForReal) withObject:nil afterDelay:0.3];\n    _setPosition = NO;\n}\n\n- (void)_setPositionForReal\n{\n    if (!_setPosition) {\n        _mediaplayer.position = _positionSlider.value;\n        _setPosition = YES;\n    }\n}\n\n- (IBAction)positionSliderDrag:(id)sender\n{\n    [self _resetIdleTimer];\n}\n\n- (IBAction)volumeSliderAction:(id)sender\n{\n    [self _resetIdleTimer];\n}\n\n- (void)mediaPlayerStateChanged:(NSNotification *)aNotification\n{\n    VLCMediaPlayerState currentState = _mediaplayer.state;\n\n    /* distruct view controller on error */\n    if (currentState == VLCMediaPlayerStateError)\n        [self performSelector:@selector(closePlayback:) withObject:nil afterDelay:2.];\n\n    /* or if playback ended */\n    if (currentState == VLCMediaPlayerStateEnded || currentState == VLCMediaPlayerStateStopped)\n        [self performSelector:@selector(closePlayback:) withObject:nil afterDelay:2.];\n\n    [self.playPauseButton setTitle:[_mediaplayer isPlaying]? @\"Pause\" : @\"Play\" forState:UIControlStateNormal];\n}\n\n- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context\n{\n    self.positionSlider.value = [_mediaplayer position];\n\n    if (_displayRemainingTime)\n        [self.timeDisplay setTitle:[[_mediaplayer remainingTime] stringValue] forState:UIControlStateNormal];\n    else\n        [self.timeDisplay setTitle:[[_mediaplayer time] stringValue] forState:UIControlStateNormal];\n}\n\n- (IBAction)toggleTimeDisplay:(id)sender\n{\n    [self _resetIdleTimer];\n    _displayRemainingTime = !_displayRemainingTime;\n}\n\n- (void)toggleControlsVisible\n{\n    BOOL controlsHidden = !self.controllerPanel.hidden;\n    self.controllerPanel.hidden = controlsHidden;\n    self.toolbar.hidden = controlsHidden;\n    [[UIApplication sharedApplication] setStatusBarHidden:controlsHidden withAnimation:UIStatusBarAnimationFade];\n}\n\n- (void)_resetIdleTimer\n{\n    if (!_idleTimer)\n        _idleTimer = [NSTimer scheduledTimerWithTimeInterval:5.\n                                                      target:self\n                                                    selector:@selector(idleTimerExceeded)\n                                                    userInfo:nil\n                                                     repeats:NO];\n    else {\n        if (fabs([_idleTimer.fireDate timeIntervalSinceNow]) < 5.)\n            [_idleTimer setFireDate:[NSDate dateWithTimeIntervalSinceNow:5.]];\n    }\n}\n\n- (void)idleTimerExceeded\n{\n    _idleTimer = nil;\n\n    if (!self.controllerPanel.hidden)\n        [self toggleControlsVisible];\n}\n\n- (IBAction)switchVideoDimensions:(id)sender\n{\n    [self _resetIdleTimer];\n\n    NSUInteger count = [_aspectRatios count];\n\n    if (_currentAspectRatioMask + 1 > count - 1) {\n        _mediaplayer.videoAspectRatio = NULL;\n        _mediaplayer.videoCropGeometry = NULL;\n        _currentAspectRatioMask = 0;\n        NSLog(@\"crop disabled\");\n    } else {\n        _currentAspectRatioMask++;\n\n        if ([_aspectRatios[_currentAspectRatioMask] isEqualToString:@\"FILL_TO_SCREEN\"]) {\n            UIScreen *screen = [UIScreen mainScreen];\n            float f_ar = screen.bounds.size.width / screen.bounds.size.height;\n\n            if (f_ar == (float)(640./1136.)) // iPhone 5 aka 16:9.01\n                _mediaplayer.videoCropGeometry = \"16:9\";\n            else if (f_ar == (float)(2./3.)) // all other iPhones\n                _mediaplayer.videoCropGeometry = \"16:10\"; // libvlc doesn't support 2:3 crop\n            else if (f_ar == .75) // all iPads\n                _mediaplayer.videoCropGeometry = \"4:3\";\n            else if (f_ar == .5625) // AirPlay\n                _mediaplayer.videoCropGeometry = \"16:9\";\n            else\n                NSLog(@\"unknown screen format %f, can't crop\", f_ar);\n\n            NSLog(@\"FILL_TO_SCREEN\");\n            return;\n        }\n\n        _mediaplayer.videoCropGeometry = NULL;\n        _mediaplayer.videoAspectRatio = (char *)[_aspectRatios[_currentAspectRatioMask] UTF8String];\n        NSLog(@\"crop switched to %@\", _aspectRatios[_currentAspectRatioMask]);\n    }\n}\n\n- (IBAction)switchAudioTrack:(id)sender\n{\n    _audiotrackActionSheet = [[UIActionSheet alloc] initWithTitle:@\"audio track selector\" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles: nil];\n    NSArray *audioTracks = [_mediaplayer audioTrackNames];\n    NSArray *audioTrackIndexes = [_mediaplayer audioTrackIndexes];\n\n    NSUInteger count = [audioTracks count];\n    for (NSUInteger i = 0; i < count; i++) {\n        NSString *indexIndicator = ([audioTrackIndexes[i] intValue] == [_mediaplayer currentAudioTrackIndex])? @\"\\u2713\": @\"\";\n        NSString *buttonTitle = [NSString stringWithFormat:@\"%@ %@\", indexIndicator, audioTracks[i]];\n        [_audiotrackActionSheet addButtonWithTitle:buttonTitle];\n    }\n\n    [_audiotrackActionSheet addButtonWithTitle:@\"Cancel\"];\n    [_audiotrackActionSheet setCancelButtonIndex:[_audiotrackActionSheet numberOfButtons] - 1];\n    [_audiotrackActionSheet showInView:self.audioSwitcherButton];\n}\n\n- (IBAction)switchSubtitleTrack:(id)sender\n{\n    NSArray *spuTracks = [_mediaplayer videoSubTitlesNames];\n    NSArray *spuTrackIndexes = [_mediaplayer videoSubTitlesIndexes];\n\n    NSUInteger count = [spuTracks count];\n    if (count <= 1)\n        return;\n    _subtitleActionSheet = [[UIActionSheet alloc] initWithTitle:@\"subtitle track selector\" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles: nil];\n\n    for (NSUInteger i = 0; i < count; i++) {\n        NSString *indexIndicator = ([spuTrackIndexes[i] intValue] == [_mediaplayer currentVideoSubTitleIndex])? @\"\\u2713\": @\"\";\n        NSString *buttonTitle = [NSString stringWithFormat:@\"%@ %@\", indexIndicator, spuTracks[i]];\n        [_subtitleActionSheet addButtonWithTitle:buttonTitle];\n    }\n\n    [_subtitleActionSheet addButtonWithTitle:@\"Cancel\"];\n    [_subtitleActionSheet setCancelButtonIndex:[_subtitleActionSheet numberOfButtons] - 1];\n    [_subtitleActionSheet showInView: self.subtitleSwitcherButton];\n}\n\n- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {\n    if (buttonIndex == [actionSheet cancelButtonIndex])\n        return;\n\n    NSArray *indexArray;\n    if (actionSheet == _subtitleActionSheet) {\n        indexArray = _mediaplayer.videoSubTitlesIndexes;\n        if (buttonIndex <= indexArray.count) {\n            _mediaplayer.currentVideoSubTitleIndex = [indexArray[buttonIndex] intValue];\n        }\n    } else if (actionSheet == _audiotrackActionSheet) {\n        indexArray = _mediaplayer.audioTrackIndexes;\n        if (buttonIndex <= indexArray.count) {\n            _mediaplayer.currentAudioTrackIndex = [indexArray[buttonIndex] intValue];\n        }\n    }\n}\n\n- (void)didReceiveMemoryWarning\n{\n    [super didReceiveMemoryWarning];\n    // Dispose of any resources that can be recreated.\n}\n\n@end\n"
  },
  {
    "path": "Thirdparties/VLCKit/Dropin-Player/VDLPlaybackViewController.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archive type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"8.00\">\n\t<data>\n\t\t<int key=\"IBDocument.SystemTarget\">1552</int>\n\t\t<string key=\"IBDocument.SystemVersion\">12F45</string>\n\t\t<string key=\"IBDocument.InterfaceBuilderVersion\">4514</string>\n\t\t<string key=\"IBDocument.AppKitVersion\">1187.40</string>\n\t\t<string key=\"IBDocument.HIToolboxVersion\">626.00</string>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginVersions\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t<string key=\"NS.object.0\">3747</string>\n\t\t</object>\n\t\t<array key=\"IBDocument.IntegratedClassDependencies\">\n\t\t\t<string>IBProxyObject</string>\n\t\t\t<string>IBUIBarButtonItem</string>\n\t\t\t<string>IBUIButton</string>\n\t\t\t<string>IBUINavigationBar</string>\n\t\t\t<string>IBUINavigationItem</string>\n\t\t\t<string>IBUISlider</string>\n\t\t\t<string>IBUIView</string>\n\t\t</array>\n\t\t<array key=\"IBDocument.PluginDependencies\">\n\t\t\t<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t</array>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.Metadata\">\n\t\t\t<string key=\"NS.key.0\">PluginDependencyRecalculationVersion</string>\n\t\t\t<integer value=\"1\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<array class=\"NSMutableArray\" key=\"IBDocument.RootObjects\" id=\"1000\">\n\t\t\t<object class=\"IBProxyObject\" id=\"372490531\">\n\t\t\t\t<string key=\"IBProxiedObjectIdentifier\">IBFilesOwner</string>\n\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t</object>\n\t\t\t<object class=\"IBProxyObject\" id=\"843779117\">\n\t\t\t\t<string key=\"IBProxiedObjectIdentifier\">IBFirstResponder</string>\n\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t</object>\n\t\t\t<object class=\"IBUIView\" id=\"774585933\">\n\t\t\t\t<reference key=\"NSNextResponder\"/>\n\t\t\t\t<int key=\"NSvFlags\">274</int>\n\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t<object class=\"IBUIView\" id=\"970364256\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"774585933\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">274</int>\n\t\t\t\t\t\t<string key=\"NSFrameSize\">{320, 550}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"774585933\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"254588830\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t<object class=\"NSColor\" key=\"IBUIBackgroundColor\">\n\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MAA</bytes>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBUINavigationBar\" id=\"254588830\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"774585933\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">290</int>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\"/>\n\t\t\t\t\t\t<string key=\"NSFrameSize\">{320, 44}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"774585933\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"897908297\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t\t\t<int key=\"IBUIBarStyle\">2</int>\n\t\t\t\t\t\t<array key=\"IBUIItems\">\n\t\t\t\t\t\t\t<object class=\"IBUINavigationItem\" id=\"231808411\">\n\t\t\t\t\t\t\t\t<reference key=\"IBUINavigationBar\" ref=\"254588830\"/>\n\t\t\t\t\t\t\t\t<string key=\"IBUITitle\">Title</string>\n\t\t\t\t\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBUIView\" id=\"897908297\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"774585933\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">269</int>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t<object class=\"IBUIButton\" id=\"695335035\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"897908297\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">292</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{139, 13}, {44, 26}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"897908297\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"776049213\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"IBUIBackgroundColor\" id=\"665591321\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MCAwAA</bytes>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<bool key=\"IBUIOpaque\">NO</bool>\n\t\t\t\t\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t\t\t\t\t<int key=\"IBUIContentHorizontalAlignment\">0</int>\n\t\t\t\t\t\t\t\t<int key=\"IBUIContentVerticalAlignment\">0</int>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.top\">4</double>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.bottom\">4</double>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.left\">0.0</double>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.right\">0.0</double>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"IBUIHighlightedTitleColor\" id=\"733852039\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MQA</bytes>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<string key=\"IBUINormalTitle\">Pause</string>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"IBUINormalTitleShadowColor\" id=\"733518820\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MC41AA</bytes>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"IBUIFontDescription\" key=\"IBUIFontDescription\" id=\"18318103\">\n\t\t\t\t\t\t\t\t\t<int key=\"type\">2</int>\n\t\t\t\t\t\t\t\t\t<double key=\"pointSize\">15</double>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSFont\" key=\"IBUIFont\" id=\"909620577\">\n\t\t\t\t\t\t\t\t\t<string key=\"NSName\">HelveticaNeue-Bold</string>\n\t\t\t\t\t\t\t\t\t<double key=\"NSSize\">15</double>\n\t\t\t\t\t\t\t\t\t<int key=\"NSfFlags\">16</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"IBUIButton\" id=\"288523396\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"897908297\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">292</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{20, 13}, {41, 26}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"897908297\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"695335035\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<reference key=\"IBUIBackgroundColor\" ref=\"665591321\"/>\n\t\t\t\t\t\t\t\t<bool key=\"IBUIOpaque\">NO</bool>\n\t\t\t\t\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t\t\t\t\t<int key=\"IBUIContentHorizontalAlignment\">0</int>\n\t\t\t\t\t\t\t\t<int key=\"IBUIContentVerticalAlignment\">0</int>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.top\">4</double>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.bottom\">4</double>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.left\">0.0</double>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.right\">0.0</double>\n\t\t\t\t\t\t\t\t<reference key=\"IBUIHighlightedTitleColor\" ref=\"733852039\"/>\n\t\t\t\t\t\t\t\t<string key=\"IBUINormalTitle\">Audio</string>\n\t\t\t\t\t\t\t\t<reference key=\"IBUINormalTitleShadowColor\" ref=\"733518820\"/>\n\t\t\t\t\t\t\t\t<reference key=\"IBUIFontDescription\" ref=\"18318103\"/>\n\t\t\t\t\t\t\t\t<reference key=\"IBUIFont\" ref=\"909620577\"/>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"IBUIButton\" id=\"776049213\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"897908297\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">292</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{238, 13}, {62, 26}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"897908297\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"396325696\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<reference key=\"IBUIBackgroundColor\" ref=\"665591321\"/>\n\t\t\t\t\t\t\t\t<bool key=\"IBUIOpaque\">NO</bool>\n\t\t\t\t\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t\t\t\t\t<int key=\"IBUIContentHorizontalAlignment\">0</int>\n\t\t\t\t\t\t\t\t<int key=\"IBUIContentVerticalAlignment\">0</int>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.top\">4</double>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.bottom\">4</double>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.left\">0.0</double>\n\t\t\t\t\t\t\t\t<double key=\"IBUIContentEdgeInsets.right\">0.0</double>\n\t\t\t\t\t\t\t\t<reference key=\"IBUIHighlightedTitleColor\" ref=\"733852039\"/>\n\t\t\t\t\t\t\t\t<string key=\"IBUINormalTitle\">Subtitles</string>\n\t\t\t\t\t\t\t\t<reference key=\"IBUINormalTitleShadowColor\" ref=\"733518820\"/>\n\t\t\t\t\t\t\t\t<reference key=\"IBUIFontDescription\" ref=\"18318103\"/>\n\t\t\t\t\t\t\t\t<reference key=\"IBUIFont\" ref=\"909620577\"/>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"IBUIView\" id=\"396325696\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"897908297\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">292</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{20, 47}, {284, 22}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"897908297\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{0, 408}, {320, 82}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"774585933\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"288523396\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:10</string>\n\t\t\t\t\t\t<object class=\"NSColor\" key=\"IBUIBackgroundColor\">\n\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MC42NjY2NjY2NjY3AA</bytes>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t\t<string key=\"NSFrame\">{{0, 20}, {320, 548}}</string>\n\t\t\t\t<reference key=\"NSSuperview\"/>\n\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"970364256\"/>\n\t\t\t\t<bool key=\"IBUIClearsContextBeforeDrawing\">NO</bool>\n\t\t\t\t<object class=\"IBUISimulatedStatusBarMetrics\" key=\"IBUISimulatedStatusBarMetrics\"/>\n\t\t\t\t<object class=\"IBUIScreenMetrics\" key=\"IBUISimulatedDestinationMetrics\">\n\t\t\t\t\t<string key=\"IBUISimulatedSizeMetricsClass\">IBUIScreenMetrics</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"IBUINormalizedOrientationToSizeMap\">\n\t\t\t\t\t\t<bool key=\"EncodedWithXMLCoder\">YES</bool>\n\t\t\t\t\t\t<array key=\"dict.sortedKeys\">\n\t\t\t\t\t\t\t<integer value=\"1\"/>\n\t\t\t\t\t\t\t<integer value=\"3\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<array key=\"dict.values\">\n\t\t\t\t\t\t\t<string>{320, 568}</string>\n\t\t\t\t\t\t\t<string>{568, 320}</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"IBUITargetRuntime\">IBCocoaTouchFramework</string>\n\t\t\t\t\t<string key=\"IBUIDisplayName\">Retina 4-inch Full Screen</string>\n\t\t\t\t\t<int key=\"IBUIType\">2</int>\n\t\t\t\t</object>\n\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t</object>\n\t\t\t<object class=\"IBUIView\" id=\"646556287\">\n\t\t\t\t<reference key=\"NSNextResponder\"/>\n\t\t\t\t<int key=\"NSvFlags\">290</int>\n\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t<object class=\"IBUISlider\" id=\"134433983\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"646556287\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">290</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{5, 10}, {188, 23}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"646556287\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"438248784\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t<string key=\"NSHuggingPriority\">{250, 250}</string>\n\t\t\t\t\t\t<bool key=\"IBUIOpaque\">NO</bool>\n\t\t\t\t\t\t<object class=\"IBUIAccessibilityConfiguration\" key=\"IBUIAccessibilityConfiguration\">\n\t\t\t\t\t\t\t<integer value=\"512\" key=\"IBUIAccessibilityTraits\"/>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t\t\t<int key=\"IBUIContentHorizontalAlignment\">0</int>\n\t\t\t\t\t\t<int key=\"IBUIContentVerticalAlignment\">0</int>\n\t\t\t\t\t\t<float key=\"IBUIValue\">0.5</float>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBUIButton\" id=\"637398771\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"646556287\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">289</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{241, 6}, {59, 29}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"646556287\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t<bool key=\"IBUIOpaque\">NO</bool>\n\t\t\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t\t\t<int key=\"IBUIContentHorizontalAlignment\">0</int>\n\t\t\t\t\t\t<int key=\"IBUIContentVerticalAlignment\">0</int>\n\t\t\t\t\t\t<reference key=\"IBUIHighlightedTitleColor\" ref=\"733852039\"/>\n\t\t\t\t\t\t<string key=\"IBUINormalTitle\">VidDi</string>\n\t\t\t\t\t\t<reference key=\"IBUIFontDescription\" ref=\"18318103\"/>\n\t\t\t\t\t\t<reference key=\"IBUIFont\" ref=\"909620577\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBUIButton\" id=\"438248784\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"646556287\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">289</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{193, 11}, {50, 20}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"646556287\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"637398771\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t<bool key=\"IBUIOpaque\">NO</bool>\n\t\t\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t\t\t<int key=\"IBUIContentHorizontalAlignment\">0</int>\n\t\t\t\t\t\t<int key=\"IBUIContentVerticalAlignment\">0</int>\n\t\t\t\t\t\t<reference key=\"IBUIHighlightedTitleColor\" ref=\"733852039\"/>\n\t\t\t\t\t\t<string key=\"IBUINormalTitle\">--:--</string>\n\t\t\t\t\t\t<reference key=\"IBUINormalTitleShadowColor\" ref=\"733518820\"/>\n\t\t\t\t\t\t<object class=\"IBUIFontDescription\" key=\"IBUIFontDescription\">\n\t\t\t\t\t\t\t<int key=\"type\">2</int>\n\t\t\t\t\t\t\t<double key=\"pointSize\">13</double>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"NSFont\" key=\"IBUIFont\">\n\t\t\t\t\t\t\t<string key=\"NSName\">HelveticaNeue-Bold</string>\n\t\t\t\t\t\t\t<double key=\"NSSize\">13</double>\n\t\t\t\t\t\t\t<int key=\"NSfFlags\">16</int>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t\t<string key=\"NSFrameSize\">{300, 40}</string>\n\t\t\t\t<reference key=\"NSSuperview\"/>\n\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"134433983\"/>\n\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t<reference key=\"IBUIBackgroundColor\" ref=\"665591321\"/>\n\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t</object>\n\t\t\t<object class=\"IBUIBarButtonItem\" id=\"272455831\">\n\t\t\t\t<string key=\"targetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t\t\t<int key=\"IBUIStyle\">1</int>\n\t\t\t\t<int key=\"IBUISystemItemIdentifier\">0</int>\n\t\t\t</object>\n\t\t</array>\n\t\t<object class=\"IBObjectContainer\" key=\"IBDocument.Objects\">\n\t\t\t<array class=\"NSMutableArray\" key=\"connectionRecords\">\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">view</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"372490531\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"774585933\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">7</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">movieView</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"372490531\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"970364256\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">29</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">positionSlider</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"372490531\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"134433983\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">179</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">timeDisplay</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"372490531\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"438248784\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">181</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">volumeView</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"372490531\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"396325696\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">182</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">controllerPanel</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"372490531\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"897908297\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">183</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toolbar</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"372490531\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"254588830\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">184</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">audioSwitcherButton</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"372490531\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"288523396\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">190</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">subtitleSwitcherButton</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"372490531\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"776049213\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">191</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">playPauseButton</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"372490531\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"695335035\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">192</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchEventConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleTimeDisplay:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"438248784\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"372490531\"/>\n\t\t\t\t\t\t<int key=\"IBEventType\">7</int>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">180</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchEventConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">switchVideoDimensions:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"637398771\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"372490531\"/>\n\t\t\t\t\t\t<int key=\"IBEventType\">7</int>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">177</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchEventConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">positionSliderAction:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"134433983\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"372490531\"/>\n\t\t\t\t\t\t<int key=\"IBEventType\">13</int>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">178</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchEventConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">positionSliderDrag:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"134433983\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"372490531\"/>\n\t\t\t\t\t\t<int key=\"IBEventType\">3</int>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">193</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchEventConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">positionSliderDrag:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"134433983\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"372490531\"/>\n\t\t\t\t\t\t<int key=\"IBEventType\">4</int>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">194</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchEventConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">switchSubtitleTrack:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"776049213\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"372490531\"/>\n\t\t\t\t\t\t<int key=\"IBEventType\">7</int>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">176</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchEventConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">playandPause:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"695335035\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"372490531\"/>\n\t\t\t\t\t\t<int key=\"IBEventType\">7</int>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">174</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchEventConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">switchAudioTrack:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"288523396\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"372490531\"/>\n\t\t\t\t\t\t<int key=\"IBEventType\">7</int>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">175</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">titleView</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"231808411\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"646556287\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">186</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">leftBarButtonItem</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"231808411\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"272455831\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">188</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBCocoaTouchEventConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">closePlayback:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"272455831\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"372490531\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">189</int>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t\t<object class=\"IBMutableOrderedSet\" key=\"objectRecords\">\n\t\t\t\t<array key=\"orderedObjects\">\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">0</int>\n\t\t\t\t\t\t<array key=\"object\" id=\"0\"/>\n\t\t\t\t\t\t<reference key=\"children\" ref=\"1000\"/>\n\t\t\t\t\t\t<nil key=\"parent\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-1</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"372490531\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">File's Owner</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-2</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"843779117\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">6</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"774585933\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"254588830\"/>\n\t\t\t\t\t\t\t<reference ref=\"970364256\"/>\n\t\t\t\t\t\t\t<reference ref=\"897908297\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">14</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"970364256\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"774585933\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">30</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"646556287\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"438248784\"/>\n\t\t\t\t\t\t\t<reference ref=\"637398771\"/>\n\t\t\t\t\t\t\t<reference ref=\"134433983\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Time view</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">31</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"438248784\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"646556287\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">32</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"637398771\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"646556287\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">33</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"134433983\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"646556287\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Position Slider</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">45</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"254588830\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"231808411\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"774585933\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">59</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"231808411\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"254588830\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">47</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"897908297\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"396325696\"/>\n\t\t\t\t\t\t\t<reference ref=\"695335035\"/>\n\t\t\t\t\t\t\t<reference ref=\"776049213\"/>\n\t\t\t\t\t\t\t<reference ref=\"288523396\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"774585933\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Controls panel</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">56</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"396325696\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"897908297\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">52</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"288523396\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"897908297\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">50</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"695335035\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"897908297\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">48</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"776049213\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"897908297\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">187</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"272455831\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t</object>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"flattenedProperties\">\n\t\t\t\t<string key=\"-1.CustomClassName\">VDLPlaybackViewController</string>\n\t\t\t\t<string key=\"-1.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"-2.CustomClassName\">UIResponder</string>\n\t\t\t\t<string key=\"-2.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"14.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"187.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"30.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"31.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"32.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"33.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"45.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"47.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"48.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"50.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"52.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"56.CustomClassName\">MPVolumeView</string>\n\t\t\t\t<string key=\"56.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"59.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t\t<string key=\"6.IBPluginDependency\">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>\n\t\t\t</dictionary>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"unlocalizedProperties\"/>\n\t\t\t<nil key=\"activeLocalization\"/>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"localizations\"/>\n\t\t\t<nil key=\"sourceID\"/>\n\t\t\t<int key=\"maxID\">194</int>\n\t\t</object>\n\t\t<object class=\"IBClassDescriber\" key=\"IBDocument.Classes\">\n\t\t\t<array class=\"NSMutableArray\" key=\"referencedPartialClassDescriptions\">\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">MPVolumeView</string>\n\t\t\t\t\t<string key=\"superclassName\">UIView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/MPVolumeView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">VDLPlaybackViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">UIViewController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"closePlayback:\">id</string>\n\t\t\t\t\t\t<string key=\"playandPause:\">id</string>\n\t\t\t\t\t\t<string key=\"positionSliderAction:\">UISlider</string>\n\t\t\t\t\t\t<string key=\"positionSliderDrag:\">id</string>\n\t\t\t\t\t\t<string key=\"switchAudioTrack:\">id</string>\n\t\t\t\t\t\t<string key=\"switchSubtitleTrack:\">id</string>\n\t\t\t\t\t\t<string key=\"switchVideoDimensions:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleTimeDisplay:\">id</string>\n\t\t\t\t\t\t<string key=\"volumeSliderAction:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"closePlayback:\">\n\t\t\t\t\t\t\t<string key=\"name\">closePlayback:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"playandPause:\">\n\t\t\t\t\t\t\t<string key=\"name\">playandPause:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"positionSliderAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">positionSliderAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">UISlider</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"positionSliderDrag:\">\n\t\t\t\t\t\t\t<string key=\"name\">positionSliderDrag:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"switchAudioTrack:\">\n\t\t\t\t\t\t\t<string key=\"name\">switchAudioTrack:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"switchSubtitleTrack:\">\n\t\t\t\t\t\t\t<string key=\"name\">switchSubtitleTrack:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"switchVideoDimensions:\">\n\t\t\t\t\t\t\t<string key=\"name\">switchVideoDimensions:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleTimeDisplay:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleTimeDisplay:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"volumeSliderAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">volumeSliderAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"audioSwitcherButton\">UIButton</string>\n\t\t\t\t\t\t<string key=\"controllerPanel\">UIView</string>\n\t\t\t\t\t\t<string key=\"movieView\">UIView</string>\n\t\t\t\t\t\t<string key=\"playPauseButton\">UIButton</string>\n\t\t\t\t\t\t<string key=\"positionSlider\">UISlider</string>\n\t\t\t\t\t\t<string key=\"subtitleSwitcherButton\">UIButton</string>\n\t\t\t\t\t\t<string key=\"timeDisplay\">UIButton</string>\n\t\t\t\t\t\t<string key=\"toolbar\">UINavigationBar</string>\n\t\t\t\t\t\t<string key=\"volumeView\">MPVolumeView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"audioSwitcherButton\">\n\t\t\t\t\t\t\t<string key=\"name\">audioSwitcherButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">UIButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"controllerPanel\">\n\t\t\t\t\t\t\t<string key=\"name\">controllerPanel</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">UIView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"movieView\">\n\t\t\t\t\t\t\t<string key=\"name\">movieView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">UIView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"playPauseButton\">\n\t\t\t\t\t\t\t<string key=\"name\">playPauseButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">UIButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"positionSlider\">\n\t\t\t\t\t\t\t<string key=\"name\">positionSlider</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">UISlider</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"subtitleSwitcherButton\">\n\t\t\t\t\t\t\t<string key=\"name\">subtitleSwitcherButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">UIButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"timeDisplay\">\n\t\t\t\t\t\t\t<string key=\"name\">timeDisplay</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">UIButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"toolbar\">\n\t\t\t\t\t\t\t<string key=\"name\">toolbar</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">UINavigationBar</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"volumeView\">\n\t\t\t\t\t\t\t<string key=\"name\">volumeView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">MPVolumeView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/VDLPlaybackViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t</object>\n\t\t<int key=\"IBDocument.localizationMode\">0</int>\n\t\t<string key=\"IBDocument.TargetRuntimeIdentifier\">IBCocoaTouchFramework</string>\n\t\t<bool key=\"IBDocument.previouslyAttemptedUpgradeToXcode5\">YES</bool>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginDeclaredDependencyDefaults\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>\n\t\t\t<real value=\"1552\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginDeclaredDevelopmentDependencies\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>\n\t\t\t<integer value=\"4600\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<bool key=\"IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion\">YES</bool>\n\t\t<int key=\"IBDocument.defaultPropertyAccessControl\">3</int>\n\t\t<string key=\"IBCocoaTouchPluginVersion\">3747</string>\n\t</data>\n</archive>\n"
  },
  {
    "path": "popcorntime_api.paw",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?>\n<!DOCTYPE database SYSTEM \"file:///System/Library/DTDs/CoreData.dtd\">\n\n<database>\n    <databaseInfo>\n        <version>134481920</version>\n        <UUID>8F8C1300-C155-4119-86D2-01F70529817A</UUID>\n        <nextObjectID>142</nextObjectID>\n        <metadata>\n            <plist version=\"1.0\">\n                <dict>\n                    <key>NSPersistenceFrameworkVersion</key>\n                    <integer>526</integer>\n                    <key>NSStoreModelVersionHashes</key>\n                    <dict>\n                        <key>LMCookieJar</key>\n                        <data>\n\t\tFttmf2L4PrGvKUF496+nqgVVGek45TjOe7sUMtjNg8I=\n\t\t</data>\n                        <key>LMEnvironment</key>\n                        <data>\n\t\tuzBoVFcO4YvR9/3ej4AJ1UOOsA/u5DKY2aemusoIseU=\n\t\t</data>\n                        <key>LMEnvironmentDomain</key>\n                        <data>\n\t\tyM1GPGHdquS8IWLtuczlNoqKhIhD9FW6IReSfFffJgs=\n\t\t</data>\n                        <key>LMEnvironmentVariable</key>\n                        <data>\n\t\tP8e0lYd5JZKRabS/eXVSOJ4oitilz67xtv+pLqW1Jqg=\n\t\t</data>\n                        <key>LMEnvironmentVariableValue</key>\n                        <data>\n\t\tmy5hNPJ51oDCSa8EgdNxWAnRcDLcERUGjtuXnzhSxQ0=\n\t\t</data>\n                        <key>LMKeyValue</key>\n                        <data>\n\t\tbIXXbyYF2xAv2MXg8JTVFsslmMKuvsfnR86QdUcFkdM=\n\t\t</data>\n                        <key>LMRequest</key>\n                        <data>\n\t\tkYB6By9dZHqmH3YNw3h9tYPoxeG5ZWHPfhLXXp7OLFs=\n\t\t</data>\n                        <key>LMRequestGroup</key>\n                        <data>\n\t\tN3ml+gYVWc4m0LSGLnBDJ37p9isOc41y+TtaM0Eacrc=\n\t\t</data>\n                        <key>LMRequestTreeItem</key>\n                        <data>\n\t\tak+hYb/lDeG55U0kgGvU5ej7HUltUj0RTrX5z/izNrs=\n\t\t</data>\n                    </dict>\n                    <key>NSStoreModelVersionHashesVersion</key>\n                    <integer>3</integer>\n                    <key>NSStoreModelVersionIdentifiers</key>\n                    <array>\n                        <string>LMDocumentVersion3</string>\n                    </array>\n                </dict>\n            </plist>\n        </metadata>\n    </databaseInfo>\n    <object type=\"LMCOOKIEJAR\" id=\"z102\">\n        <attribute name=\"uuid\" type=\"string\">8A4913AA-D95C-4BE4-BBA8-50A8965064BA</attribute>\n        <attribute name=\"order\" type=\"int64\">1</attribute>\n        <attribute name=\"name\" type=\"string\">Default Jar</attribute>\n    </object>\n    <object type=\"LMENVIRONMENT\" id=\"z103\">\n        <attribute name=\"uuid\" type=\"string\">688A4A66-39E9-4757-9B88-BE8FF22FAF56</attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\">Default Environment</attribute>\n        <relationship name=\"domain\" type=\"0/1\" destination=\"LMENVIRONMENTDOMAIN\" idrefs=\"z108\"></relationship>\n        <relationship name=\"variablesvalues\" type=\"0/0\" destination=\"LMENVIRONMENTVARIABLEVALUE\" idrefs=\"z104\"></relationship>\n    </object>\n    <object type=\"LMENVIRONMENTVARIABLEVALUE\" id=\"z104\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <relationship name=\"environment\" type=\"1/1\" destination=\"LMENVIRONMENT\" idrefs=\"z103\"></relationship>\n        <relationship name=\"variable\" type=\"1/1\" destination=\"LMENVIRONMENTVARIABLE\" idrefs=\"z107\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z105\">\n        <attribute name=\"uuid\" type=\"string\">6CD41C5D-7A66-4EE0-BEED-013C74D9E2FD</attribute>\n        <attribute name=\"url\" type=\"string\"> http://ytspt.re/api/list.json?limit=30\\u2600order=desc\\u2600sort=seeds</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\">top</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z132\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z106\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z106\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z105\"></relationship>\n    </object>\n    <object type=\"LMENVIRONMENTVARIABLE\" id=\"z107\">\n        <attribute name=\"uuid\" type=\"string\">8C2DA06B-D03E-4AA2-8D3B-4966CB54878F</attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <relationship name=\"domain\" type=\"0/1\" destination=\"LMENVIRONMENTDOMAIN\" idrefs=\"z108\"></relationship>\n        <relationship name=\"values\" type=\"0/0\" destination=\"LMENVIRONMENTVARIABLEVALUE\" idrefs=\"z104\"></relationship>\n    </object>\n    <object type=\"LMENVIRONMENTDOMAIN\" id=\"z108\">\n        <attribute name=\"uuid\" type=\"string\">3C5F00CA-5004-4FA5-8D2A-C940F479D3D5</attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\">Default Domain</attribute>\n        <relationship name=\"environments\" type=\"0/0\" destination=\"LMENVIRONMENT\" idrefs=\"z103\"></relationship>\n        <relationship name=\"variables\" type=\"0/0\" destination=\"LMENVIRONMENTVARIABLE\" idrefs=\"z107\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z109\">\n        <attribute name=\"uuid\" type=\"string\">37442FBC-2F84-4413-9141-F8A3FD57C17A</attribute>\n        <attribute name=\"url\" type=\"string\"> http://ytspt.re/api/listimdb.json?imdb_id=tt2245084</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">2</attribute>\n        <attribute name=\"name\" type=\"string\">desc</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z132\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z110\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z110\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z109\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z111\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z112\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z112\">\n        <attribute name=\"uuid\" type=\"string\">20FEA1CC-A132-4A59-A394-7250AD2DC5AF</attribute>\n        <attribute name=\"url\" type=\"string\"> http://ytspt.re/api/list.json?limit=30\\u2600keywords=terminator\\u2600order=desc\\u2600sort=seeds\\u2600set=1</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">1</attribute>\n        <attribute name=\"name\" type=\"string\">search</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z132\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z111\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z113\">\n        <attribute name=\"uuid\" type=\"string\">41E1A38E-9097-42C3-997C-68D3E7D245E0</attribute>\n        <attribute name=\"url\" type=\"string\">http://eztvapi.re/shows/1?limit=30\\u2600order=desc\\u2600sort=seeds</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\">top</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z126\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z114\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z114\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z113\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z115\">\n        <attribute name=\"uuid\" type=\"string\">87BCD354-93F9-457F-8435-5C16D622B78B</attribute>\n        <attribute name=\"url\" type=\"string\"> http://eztvapi.re/show/tt0898266</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">2</attribute>\n        <attribute name=\"name\" type=\"string\">desc tbbt</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z126\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z116\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z116\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z115\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z117\">\n        <attribute name=\"uuid\" type=\"string\">C0ABC6A0-CC89-4280-9191-7D0E134441BE</attribute>\n        <attribute name=\"url\" type=\"string\"> http://eztvapi.re/shows/1?limit=30\\u2600order=desc\\u2600sort=seeds\\u2600keywords=silicon%20valley</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">1</attribute>\n        <attribute name=\"name\" type=\"string\">search</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z126\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z118\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z118\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z117\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z119\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z120\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z120\">\n        <attribute name=\"uuid\" type=\"string\">C6E38767-167B-4552-A709-B0407F71C8ED</attribute>\n        <attribute name=\"url\" type=\"string\">http://ptp.haruhichan.com/list.php?page=1\\u2600limit=50\\u2600sort=popularity\\u2600type=All</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\">top</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z128\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z119\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z121\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z122\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z122\">\n        <attribute name=\"uuid\" type=\"string\">367921AE-A56C-48E1-80D1-B9AA4C888534</attribute>\n        <attribute name=\"url\" type=\"string\"> http://ptp.haruhichan.com/anime.php?id=912</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">2</attribute>\n        <attribute name=\"name\" type=\"string\">desc</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z128\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z121\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z123\">\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z124\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z124\">\n        <attribute name=\"uuid\" type=\"string\">FEFB12B4-1BA8-4137-A79D-5AAF4D0C1CEC</attribute>\n        <attribute name=\"url\" type=\"string\">http://ptp.haruhichan.com/list.php?search=pokemon\\u2600limit=50\\u2600sort=popularity\\u2600type=All</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">1</attribute>\n        <attribute name=\"name\" type=\"string\">search</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z128\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z123\"></relationship>\n    </object>\n    <object type=\"LMREQUESTGROUP\" id=\"z125\">\n        <attribute name=\"uuid\" type=\"string\">442876A0-7D7A-4986-98DB-8F93F085A06B</attribute>\n        <attribute name=\"order\" type=\"int64\">1</attribute>\n        <attribute name=\"name\" type=\"string\">movies</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z132 z137\"></relationship>\n        <relationship name=\"bodyparameters\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n        <relationship name=\"urlparameters\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n    </object>\n    <object type=\"LMREQUESTGROUP\" id=\"z126\">\n        <attribute name=\"uuid\" type=\"string\">9BDE5244-0786-473C-8781-5BBC99E68567</attribute>\n        <attribute name=\"order\" type=\"int64\">5</attribute>\n        <attribute name=\"name\" type=\"string\">shows</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z113 z117 z115 z127\"></relationship>\n        <relationship name=\"bodyparameters\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n        <relationship name=\"urlparameters\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z127\">\n        <attribute name=\"uuid\" type=\"string\">DADAE43E-EE55-431B-A266-6AFB5ECEEEEF</attribute>\n        <attribute name=\"url\" type=\"string\"> http://eztvapi.re/show/tt2575988</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">3</attribute>\n        <attribute name=\"name\" type=\"string\">desc sv</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z126\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z129\"></relationship>\n    </object>\n    <object type=\"LMREQUESTGROUP\" id=\"z128\">\n        <attribute name=\"uuid\" type=\"string\">22C26C40-8D1A-4787-942F-D134607AF258</attribute>\n        <attribute name=\"order\" type=\"int64\">9</attribute>\n        <attribute name=\"name\" type=\"string\">anime</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z122 z120 z124\"></relationship>\n        <relationship name=\"bodyparameters\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n        <relationship name=\"urlparameters\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z129\">\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z127\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z130\">\n        <attribute name=\"uuid\" type=\"string\">BD8350BF-4631-44DF-9BDC-77A5458F2E4F</attribute>\n        <attribute name=\"url\" type=\"string\">http://cloudflare.com/api/v2/list_movies.json?page=1\\u2600limit=20\\u2600order_by=desc\\u2600sort_by=seeds</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\">top</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z137\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z142 z131\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z131\">\n        <attribute name=\"value\" type=\"string\">eqwww.image.yt</attribute>\n        <attribute name=\"name\" type=\"string\">Host</attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z130\"></relationship>\n    </object>\n    <object type=\"LMREQUESTGROUP\" id=\"z132\">\n        <attribute name=\"uuid\" type=\"string\">C5597A41-F783-4F61-B3FC-A37F6FC924FB</attribute>\n        <attribute name=\"order\" type=\"int64\">2</attribute>\n        <attribute name=\"name\" type=\"string\">deprecated</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z125\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z109 z112 z105\"></relationship>\n        <relationship name=\"bodyparameters\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n        <relationship name=\"urlparameters\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z133\">\n        <attribute name=\"value\" type=\"string\">eqwww.image.yt</attribute>\n        <attribute name=\"name\" type=\"string\">Host</attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z134\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z134\">\n        <attribute name=\"uuid\" type=\"string\">43436530-B6BD-466C-A1A8-12F57EBAD1BE</attribute>\n        <attribute name=\"url\" type=\"string\">http://cloudflare.com/api/v2/list_movies.json?query_term=terminator</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">2</attribute>\n        <attribute name=\"name\" type=\"string\">search</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z137\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z140 z133\"></relationship>\n    </object>\n    <object type=\"LMREQUEST\" id=\"z135\">\n        <attribute name=\"uuid\" type=\"string\">42E5E5DA-21B7-4077-93AE-B5EF84E238F8</attribute>\n        <attribute name=\"url\" type=\"string\">http://cloudflare.com/api/v2/movie_details.json?movie_id=4132</attribute>\n        <attribute name=\"storecookies\" type=\"bool\">1</attribute>\n        <attribute name=\"sendcookies\" type=\"bool\">1</attribute>\n        <attribute name=\"redirectmethod\" type=\"bool\">0</attribute>\n        <attribute name=\"redirectauthorization\" type=\"bool\">0</attribute>\n        <attribute name=\"method\" type=\"string\">GET</attribute>\n        <attribute name=\"followredirects\" type=\"bool\">0</attribute>\n        <attribute name=\"order\" type=\"int64\">3</attribute>\n        <attribute name=\"name\" type=\"string\">desc</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z137\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\" idrefs=\"z136 z141\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z136\">\n        <attribute name=\"value\" type=\"string\">eqwww.image.yt</attribute>\n        <attribute name=\"name\" type=\"string\">Host</attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z135\"></relationship>\n    </object>\n    <object type=\"LMREQUESTGROUP\" id=\"z137\">\n        <attribute name=\"uuid\" type=\"string\">D9A5D01E-B8E3-4F85-8F6D-4CC3B79FE78D</attribute>\n        <attribute name=\"order\" type=\"int64\">0</attribute>\n        <attribute name=\"name\" type=\"string\">v2</attribute>\n        <relationship name=\"parent\" type=\"0/1\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z125\"></relationship>\n        <relationship name=\"children\" type=\"0/0\" destination=\"LMREQUESTTREEITEM\" idrefs=\"z134 z130 z135\"></relationship>\n        <relationship name=\"bodyparameters\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n        <relationship name=\"headers\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n        <relationship name=\"urlparameters\" type=\"0/0\" destination=\"LMKEYVALUE\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z140\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <attribute name=\"order\" type=\"int64\">1</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z134\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z141\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <attribute name=\"order\" type=\"int64\">1</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z135\"></relationship>\n    </object>\n    <object type=\"LMKEYVALUE\" id=\"z142\">\n        <attribute name=\"value\" type=\"string\"></attribute>\n        <attribute name=\"order\" type=\"int64\">1</attribute>\n        <attribute name=\"name\" type=\"string\"></attribute>\n        <attribute name=\"enabled\" type=\"bool\">1</attribute>\n        <relationship name=\"groupforbodyparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforheaders\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"groupforurlparameters\" type=\"0/1\" destination=\"LMREQUESTGROUP\"></relationship>\n        <relationship name=\"request\" type=\"0/1\" destination=\"LMREQUEST\" idrefs=\"z130\"></relationship>\n    </object>\n</database>"
  }
]